Sun Educación México
Operador de Asignación Simple =
• Las asignación tiene la siguiente sintaxis:
> <variable> = <expresi...
Sun Educación México
Asignación de Conversiones Numéricas
• El destino y la fuente deben ser del mismo tipo en
la asignaci...
Sun Educación México
Ejemplo:
• long bigInteger = 412343214321543L;
• float realNo = bigInteger;
• Se realiza el ensancham...
Sun Educación México
Operadores Aritméticos
• Los operadores aritméticos son usados para construir
expresiones matemáticas...
Sun Educación México
Notas Operadores Aritméticos
• La división por cero solo lanza una excepción para tipos int y
long
> ...
Sun Educación México
Ejemplo
• El operador “+” se encuentra “sobrecargado para concatenar
String, teniendo mayor precedenc...
Sun Educación México
Operadores Aritméticos de Asignación
• Este operador de asignación extendido tiene la siguiente sinta...
Sun Educación México
Ejemplo
• Ejemplo: Dado T igual al tipo de x. a es una
expresión.
• x *= a; es igual a x = (T) (x * (...
Sun Educación México
Operador Binario de Concatenación
• El operador binario + esta sobrecargado de manera que detecta
si ...
Sun Educación México
Operadores de Incremento y Decremento
• Los operadores de incremento (++) y decremento (--) tienen do...
Sun Educación México
Ejemplo
●int x=0; x=x++;
● Resultado x = 1;
Sun Educación México
Expresiones Booleanas
• Las expresiones booleanas tienen tipos de datos boolean, y
solo pueden ser ev...
Sun Educación México
Operadores Relacionales <, <=, >, >=
• Dado a y b que representan expresiones de valores numéricos,
e...
Sun Educación México
Operadores Relacionales Evaluación
• En la evaluación resulta un valor lógico.
• Un operador relacion...
Sun Educación México
Igualdad (primitivos ==, !=)
• Dado a y b que representan valores de tipo de datos primitivos,
la igu...
Sun Educación México
Igualdad de referencias de objetos
• Dado r y s variables de referencia, la igualdad esta dada por:
>...
Sun Educación México
Condiciones
• Los operandos deben ser de un tipo compatible.
> Esto significa si es posible moldear u...
Sun Educación México
Consideraciones
• La clase Object provee el método lógico equals(Object obj) el
cual puede ser sobres...
Sun Educación México
Operadores Lógicos
• Los operadores lógicos lógicos pueden ser aplicados a
operandos lógicos, retorna...
Sun Educación México
Operadores extendidos
• Asignación booleana lógica &=, ^=, |=
• El operando de la izquierda debe ser ...
Sun Educación México
Operadores condicionales: &&, ||
• Los operadores condicionales son muy parecidos a los
operadores ló...
Sun Educación México
Operadores condicionales: &&, ||
• Dado x e y expresiones de valores lógicos, los
operadores condicio...
Sun Educación México
Corto Circuito en la Evaluación
• En la evaluación de expresiones que involucren operadores
condicion...
Sun Educación México
Ejemplo
• boolean b = (4==2) && (1 < 4) //false
> En este caso como 4==2 es falso, y el operador es &...
Sun Educación México
El operador condicional “? :” ternario:
• El operador ternario permite expresiones condicionales
defi...
Sun Educación México
Otros operadores: new, [], instanceof
• El operador new es usado para crear objetos, por ejemplo
inst...
Sun Educación México
Ejemplo
• if (miString instanceof String)
• Se comprueba el objeto que denota la referencia, por lo t...
Sun Educación México
Paso de Parámetros
• Los objetos se comunican a través de mensajes
• Los mensajes son implementados c...
Sun Educación México
Sintaxis
• La sintaxis para llamar un método puede ser cualquiera de
estas:
> <referencia de objeto>....
Sun Educación México
Paso de Parámetros
• Si el objeto llamador y el llamado son el mismo, <referencia de
objeto> puede se...
Sun Educación México
Paso de Parámetros
• Las listas de parámetros Actual y Formal deben ser
compatibles:
> El numero de p...
Sun Educación México
Pasando valores primitivos
• Cuando un parámetro actual es una variable de tipo primitivo, el valor
d...
Sun Educación México
Pasando valores de referencia
• Si un parámetro actual es una referencia a un objeto, entonces
un val...
Sun Educación México
Parámetros formales finales
• Un parámetro formal puede declararse final
anteponiendo la palabra fina...
Sun Educación México
Conversiones “Boxing”
• Desde el tipo boolean al tipo Boolean
• Desde el tipo byte al tipo Byte
• Des...
Sun Educación México
Como funciona?
• Si p es un valor de tipo boolean, entonces la conversion boxing convierte p
en una r...
Sun Educación México
Como funciona?
• Si p de un valor de tipo int, entonces la conversion boxing convierte p en
una refre...
Sun Educación México
Como funciona?
• Si p es de un valor tipo double, entonces Si p no es NaN, la
conversion boxing convi...
Sun Educación México
Cuidado
• Si el valor de p fue “transformado” a true, false,
byte, char entre u0000 a u007f, ó un int...
Sun Educación México
Unboxing
• Desde el tipo Boolean al tipo boolean
• Desde el tipo Byte al tipo byte
• Desde el tipo Ch...
Sun Educación México
Como funciona?
• Si r es una referencia de tipo Boolean, entonces la conversion
unboxing convierte r ...
Upcoming SlideShare
Loading in …5
×

Scjp mx fundamentos_2

181 views
115 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
181
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Scjp mx fundamentos_2

  1. 1. Sun Educación México Operador de Asignación Simple = • Las asignación tiene la siguiente sintaxis: > <variable> = <expresión> – El destino <variable> y la fuente <expresión> deben ser de tipo compatible. – <variable> debe haber sido declarada. • Asignación múltiple: > k = j =10, es interpretado como (k = (j = 10)), ya que el operador de asignación tiene asociatividad a la derecha. – Esto también se aplica a tipos referencia.
  2. 2. Sun Educación México Asignación de Conversiones Numéricas • El destino y la fuente deben ser del mismo tipo en la asignación. Si el ensanchamiento de un primitivo es permisible, esta se realiza de manera implícita. • Valores enteros ensanchados a punto flotante puede resultar en una perdida de precisión. > NO confundir la magnitud (cuan grande puede ser un valor) con la precisión (la cantidad de dígitos en un numero)
  3. 3. Sun Educación México Ejemplo: • long bigInteger = 412343214321543L; • float realNo = bigInteger; • Se realiza el ensanchamiento pero se pierde precisión.
  4. 4. Sun Educación México Operadores Aritméticos • Los operadores aritméticos son usados para construir expresiones matemáticas algebraicas. > Los operandos son de tipo numérico, pero el operador + puede actuar concatenando cadenas si uno de sus operando es de tipo String (cadena). > La tabla siguiente muestra la precedencia de los operadores aritméticos: Unarios + (Adición) - (Sustracción) Binarios * (Multiplicación)/ (División) % (Modulo) + (Adición) - (Sustracción)
  5. 5. Sun Educación México Notas Operadores Aritméticos • La división por cero solo lanza una excepción para tipos int y long > float y double, se obtendrá como resultado NaN, POSITIVE_INFINITY ó NEVATIVE_INFINITY • Cálculos en punto flotante pueden producir NaN (la raíz cuadrada de un numero negativo) ó Infinito (División por cero) > No comparar x==Float.NaN ya que no funcionara, > La clase“Wrapper” ya que dispone de un método Float.IsNaN(x) para realizar esta comprobación correctamente. – Pero (X == Double.POSITIVE_INFINITY) OK
  6. 6. Sun Educación México Ejemplo • El operador “+” se encuentra “sobrecargado para concatenar String, teniendo mayor precedencia el operador “+” para enteros, ejemplo: > String x = 1 + 2 + “3” – x=?
  7. 7. Sun Educación México Operadores Aritméticos de Asignación • Este operador de asignación extendido tiene la siguiente sintaxis: > <variable> <op>= <expresión> > y tiene el siguiente sentido semántico: – <variable> = (<tipo>) ( <variable> <op> (<expresión>) ) – Es importante considerar esto a la hora de evaluar expresiones. • El tipo de <variable> es igual a <tipo> y la <variable> es evaluada solo una vez. > <op> puede ser cualquier operador valido (*,/,%,+,-) •
  8. 8. Sun Educación México Ejemplo • Ejemplo: Dado T igual al tipo de x. a es una expresión. • x *= a; es igual a x = (T) (x * (a)); > Nota: No se puede utilizar estos operadores junto con la declaración • int x += 1;
  9. 9. Sun Educación México Operador Binario de Concatenación • El operador binario + esta sobrecargado de manera que detecta si alguno de sus operandos es un String, de manera de realizar la conversión del otro operando a String y realizar la concatenación. • Valores como true, false y null son representados como String de manera literal. • Ejemplo: > String s = “Hola ” + 4 – Resultado: “Hola 4”
  10. 10. Sun Educación México Operadores de Incremento y Decremento • Los operadores de incremento (++) y decremento (--) tienen dos comportamientos: prefijo y postfijo. > ++i, primero suma 1 a i, después usa este nuevo valor de i como valor en la expresión. > i++, primero usa el valor de i en la expresión, después suma 1 a i. – Lo mismo aplica al operador --. • Notas: > Estos operadores pueden ser aplicados a operandos de tipo char, byte y short. – En estos casos se realiza la promoción numérica binaria y una conversión de estrechamiento implícita, para evitar el efecto secundario de modificar el valor del operando.
  11. 11. Sun Educación México Ejemplo ●int x=0; x=x++; ● Resultado x = 1;
  12. 12. Sun Educación México Expresiones Booleanas • Las expresiones booleanas tienen tipos de datos boolean, y solo pueden ser evaluadas verdadero o falso. • Expresiones booleanas pueden ser utilizadas como condicionantes en instrucciones de control de flujo. • Expresiones booleanas pueden ser formadas usando: > Operadores relacionales > Operadores de igualdad > Operadores lógicos > Operadores condicionales > Operadores de asignación
  13. 13. Sun Educación México Operadores Relacionales <, <=, >, >= • Dado a y b que representan expresiones de valores numéricos, el operador relacional (en este caso comparación) se definen como muestra la siguiente tabla: > a < b ¿a es menor a b? > a <= b ¿a es menor o igual a b? > a > b ¿a es mayor a b? > a >= b ¿a es mayor o igual a b? • Todos los operadores relacionales son binarios y sus operandos son expresiones numéricas. • La promoción numérica binaria es aplicada a los operandos.
  14. 14. Sun Educación México Operadores Relacionales Evaluación • En la evaluación resulta un valor lógico. • Un operador relacional tiene menor precedencia que un operador aritmético, pero mayor precedencia que un operador de asignación. • Tienen asociatividad a la izquierda.
  15. 15. Sun Educación México Igualdad (primitivos ==, !=) • Dado a y b que representan valores de tipo de datos primitivos, la igualdad de los valores según el operador se definen como muestran: > a == b ¿a es igual a b?, ¿tienen el mismo valor primitivo? > a != b ¿a es distinto a b?, ¿tienen distinto valor primitivo? • Los operadores de igualdad == y != pueden ser usados para comparar valores de tipo de datos primitivos incluyendo a los boolean. • La promoción numérica binaria es aplicada a los operandos no lógicos.
  16. 16. Sun Educación México Igualdad de referencias de objetos • Dado r y s variables de referencia, la igualdad esta dada por: > r == s ¿a es igual a b?, ¿tienen el mismo valor de referencia? > r != s ¿a es distinto a b?, ¿tienen distinto valor de referencia? • Los operadores de igualdad == y != pueden ser usados para comparar valores de referencia de manera de saber si representan al mismo objeto. > No se considera el estado de los objetos.
  17. 17. Sun Educación México Condiciones • Los operandos deben ser de un tipo compatible. > Esto significa si es posible moldear uno con el otro, de otra manera se genera un error de compilación. • Se puede asignar null a una referencia y por lo tanto también puede utilizarse null como operando.
  18. 18. Sun Educación México Consideraciones • La clase Object provee el método lógico equals(Object obj) el cual puede ser sobrescrito para dar un sentido semántico correcto a una comparación de igualdad (o desigualdad). • La implementación por defecto de este método utiliza el operador == • Ciertas clases del API estándar de Java sobrescriben el método equals como por ejemplo: String, BitSet, Date, etc.
  19. 19. Sun Educación México Operadores Lógicos • Los operadores lógicos lógicos pueden ser aplicados a operandos lógicos, retornan un nuevo valor lógico. • Los operadores ^, & y | pueden ser aplicados a enteros para realizar operaciones de complemento lógico. • Dado x e y que representan expresiones booleanas, los operadores lógicos lógicos se definen en la tabla siguiente: • Todos los operadores lógicos son binarios, ha excepción el operador de negación. Lógico NOT (Negación) !x Retorna el complemento (de verdad) del valor de x Lógico AND x & y Retorna verdadero si ambos operandos son verdadero Lógico OR x | y Retorna verdadero si alguno o ambos operandos es verdadero Lógico XOR x ^ y Retorna verdadero si y solo si un operando es verdadero
  20. 20. Sun Educación México Operadores extendidos • Asignación booleana lógica &=, ^=, |= • El operando de la izquierda debe ser una variable de tipo boolean. • A la derecha debe ser una expresión booleana. • Estos operadores son definidos en la tabla siguiente: Expresión Dado b y a de tipo boolean, la expresión es evaluada como: b &= a b = (b & (a)) b ^= a b = (b ^ (a)) b |= a b = (b | (a))
  21. 21. Sun Educación México Operadores condicionales: &&, || • Los operadores condicionales son muy parecidos a los operadores lógicos lógicos, excepto que en la evaluación se produce un corto circuito. • Ambos operadores condicionales son binarios y contrario a los operadores lógicos, solo pueden ser aplicados a expresiones booleanas. > No existen operadores de asignación extendidos para los operadores condicionales.
  22. 22. Sun Educación México Operadores condicionales: &&, || • Dado x e y expresiones de valores lógicos, los operadores condicionales se definen según la tabla siguiente: Condicional AND x && y Verdadero si ambos operandos son verdadero, si no, falso Condicional OR x || y Verdadero si ambos o un operando es verdadero, si no, falso
  23. 23. Sun Educación México Corto Circuito en la Evaluación • En la evaluación de expresiones que involucren operadores condicionales AND ó OR, el operando de la izquierda es evaluado primero que el de la derecha y se produce un corto circuito en la evaluación. > Es decir si la evaluación puede ser determinada por el operando de la izquierda, el operando de la derecha no es evaluado.
  24. 24. Sun Educación México Ejemplo • boolean b = (4==2) && (1 < 4) //false > En este caso como 4==2 es falso, y el operador es &&, no es necesario seguir evaluando la expresión ya que con certeza el resultado será falso. • Lo mismo ocurre con el operador || (OR). > Los operadores condicionales tienen menor precedencia que cualquier operador matemático o relacional, pero mayor que el de asignación.
  25. 25. Sun Educación México El operador condicional “? :” ternario: • El operador ternario permite expresiones condicionales definidas. Y tiene la siguiente sintaxis: > <condición> ? <expresión 1> : <expresión 2> • Si la expresión booleana <condición> es evaluada como verdadero, la expresión <expresión 1> es evaluada, si no la expresión <expresión 2> es evaluada. > <expresión 1> y <expresión 2> deben ser de tipos compatibles. • Ejemplo: > boolean bisiesto = false; > int diasEnFebrero = bisiesto ? 29 : 28; // 28 – Este operador es equivalente a if – else
  26. 26. Sun Educación México Otros operadores: new, [], instanceof • El operador new es usado para crear objetos, por ejemplo instancias de clases y arreglos. • El operador [] es usado para construir y declarar arreglos, y para acceder a elementos para un arreglo. • El operador lógico instanceof es utilizado para comprobar el tipo de un objeto. > Es un operador binario, el operando de la izquierda (Un objeto) se comprobara si es instancia del operando de la derecha (Una clase).
  27. 27. Sun Educación México Ejemplo • if (miString instanceof String) • Se comprueba el objeto que denota la referencia, por lo tanto si miString==null, no se considera instancia, por lo tanto no hace un chequeo de tipos, si no una comprobación de si un objeto es instancia de una clase determinada o hereda o implementa una interfaz.
  28. 28. Sun Educación México Paso de Parámetros • Los objetos se comunican a través de mensajes • Los mensajes son implementados como un llamado a un método de un objeto • Los métodos estáticos pueden ser invocados directamente sobre una clase • Los parámetros en la llamada del método proveen un mecanismo para intercambiar información entre el objeto “llamador” y el “llamado” •
  29. 29. Sun Educación México Sintaxis • La sintaxis para llamar un método puede ser cualquiera de estas: > <referencia de objeto>.<nombre del método> (<lista actual de parámetros>) > > <nombre de clase>.<nombre del método estático> (<lista actual de parámetros>) > > <nombre del método> (<lista de parámetros>)
  30. 30. Sun Educación México Paso de Parámetros • Si el objeto llamador y el llamado son el mismo, <referencia de objeto> puede ser omitido. • El operador punto “.” tiene asociatividad a la izquierda, por ejemplo: > unObjeto.hacer1().hacer2().hacer3(); – La primera llamada hacer1() retorna un objeto sobre el cual se ejecutara el método hacer2(), y así sucesivamente. • Los parámetros actuales son parámetros que serán pasados al método cuando este sea invocado y pueden variar en cada llamada. • Las lista de parámetros formales definidos en la definición del método, son locales para el método.
  31. 31. Sun Educación México Paso de Parámetros • Las listas de parámetros Actual y Formal deben ser compatibles: > El numero de parámetros deben ser iguales > La correspondencia individual de los parámetros actual y formal deben ser de tipo compatible. • En Java todos los parámetros son pasados por valor, sin embargo al pasae una referencia a un objeto podemos realizar cambios en dicha referencia. > Un ejemplo de esto son los arreglos (que de hecho son objetos) no podremos realizar cambio al arreglo en si (como asignarle un nuevo arreglo), pero podemos cambiar el valor de alguno de sus elementos.
  32. 32. Sun Educación México Pasando valores primitivos • Cuando un parámetro actual es una variable de tipo primitivo, el valor de la variable es copiado al parámetro formal en el momento de la invocación. • Como el parámetro formal es local en el método, cualquier cambio no se reflejara en el parámetro actual. • El parámetro actual puede ser una expresión que puede ser evaluada y el resultado será pasado al método. • Conversiones de tipo entre los parámetros actual y formal de tipos de datos primitivos es similar a la conversión de asignación numérica. • Conversiones de ensanchamiento son aplicadas implícitamente.
  33. 33. Sun Educación México Pasando valores de referencia • Si un parámetro actual es una referencia a un objeto, entonces un valor de referencia de un objeto es pasado. • En este caso el parámetro actual y formal son como “alias” al mismo objeto. • Por lo tanto los cambios realizados dentro del método son reflejados en el objeto una vez finalizado el método. • Pero solo es posible cambiar el “estado” del objeto y NO el valor de referencia. • Nota: Los arreglos son objetos.
  34. 34. Sun Educación México Parámetros formales finales • Un parámetro formal puede declararse final anteponiendo la palabra final en la declaración. > Un parámetro final, es una variable que no puede ser cambiada. > Son constantes que pueden ser utilizadas por razones de rendimiento.
  35. 35. Sun Educación México Conversiones “Boxing” • Desde el tipo boolean al tipo Boolean • Desde el tipo byte al tipo Byte • Desde el tipo char al tipo Character • Desde el tipo short al tipo Short • Desde el tipo int al tipo Integer • Desde el tipo long al tipo Long • Desde el tipo float al tipo Float • Desde el tipo double al tipo Double
  36. 36. Sun Educación México Como funciona? • Si p es un valor de tipo boolean, entonces la conversion boxing convierte p en una referencia r de la clase Boolean, de manera que: > r.booleanValue() == p • Si p es de un valor de tipo byte, entonces la conversion boxing convierte p en una referencia r de la clase Byte, de manera que: > r.byteValue() == p • Si p es un valor de tipo char, entonces la conversion boxing convierte p en una referencia r de la clase Character, de manera que: > r.charValue() == p • Si p es un valor de tipo short, entonces la conversion boxing convierte p en una referencia r de la clase Short, de manera que: > r.shortValue() == p
  37. 37. Sun Educación México Como funciona? • Si p de un valor de tipo int, entonces la conversion boxing convierte p en una refrencia r de la clase Integer, de manera que: > r.intValue() == p • Si p es de un valor de tipo long, entonces la conversion boxing convierte p en una referencia r de clase Long, de manera que : > r.longValue() == p • Si p es de valor de tipo float entonces: > Si p no es NaN, entonces la conversion boxing convierte p en una referencia r de clase Float, de manera que: – r.floatValue() se evaluá a p > De otro modo, la conversion boxing convierte p en una referencia r de clase Float de manera que: – r.isNaN() es evaluado como true.
  38. 38. Sun Educación México Como funciona? • Si p es de un valor tipo double, entonces Si p no es NaN, la conversion boxing convierte p en una referencia r de la clase Double, de manera que: > r.doubleValue() evaluates to p > De otro modo, la conversion boxing convierte p en una referencia r de la clase Double de manera que: – r.isNaN() es evaluado como true. • Si p es un valor de cualquier otro tipo, la conversion boxing es equivalente a la conversion de de identidad
  39. 39. Sun Educación México Cuidado • Si el valor de p fue “transformado” a true, false, byte, char entre u0000 a u007f, ó un int ó short entre -128 y 127, • Entonces r1 y r2 sean resultado de cualquier conversión boxing de p siempre seran r1 == r2.
  40. 40. Sun Educación México Unboxing • Desde el tipo Boolean al tipo boolean • Desde el tipo Byte al tipo byte • Desde el tipo Character al tipo char • Desde el tipo Short al tipo short • Desde el tipo Integer al tipo int • Desde el tipo Long al tipo long • Desde el tipo Float al tipo float • Desde el tipo Double al tipo double
  41. 41. Sun Educación México Como funciona? • Si r es una referencia de tipo Boolean, entonces la conversion unboxing convierte r en: r.booleanValue() • Si r es una referencia de tipo Byte, entonces la conversion unboxing convierte r en: r.byteValue() • Si r es una referencia de tipo Character, entonces la conversion unboxing convierte r en: r.charValue() • Si r es una referencia de tipo Short, entonces la conversion unboxing convierte r en: r.shortValue() • Si r es una referencia de tipo Integer, entonces la conversion unboxing convierte r en: r.intValue()

×