Sun Certified Java Programmer (SCJP) Capítulo 4: Operadores

31
Sun Certified Java Programmer (SCJP) Capítulo 4: Operadores

description

Sun Certified Java Programmer (SCJP) Capítulo 4: Operadores. Objetivo de certificacion. - PowerPoint PPT Presentation

Transcript of Sun Certified Java Programmer (SCJP) Capítulo 4: Operadores

Page 1: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Sun Certified Java Programmer (SCJP)

Capítulo 4: Operadores

Page 2: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Objetivo de certificacionEscribir código que use correctamente los

operadores incluyendo operadores de asignación (=, +=, -=), operadores aritméticos (+, -, *, /, %, ++, --), operadores relacionales (<, <=, >, >=, ==, !=), el operador instanceof, operadores lógicos (&, |, ^, !, &&, ||), y el operador condicional (? :), para conseguir el resultado deseado.

Escribir código que determine la igualdad de dos objetos o dos datos primitivos.

Page 3: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Operadores de Asignación CompuestosExisten 11 operadores de asignación

compuestos, pero solo 4 son los más usados (+=, -=, *=, /=),y = y - 6;x = x + 2 * 5;

Ahora, con operadores compuestos:y -= 6;x += 2 * 5;

Page 4: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Operadores de Asignación Compuestos

Page 5: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Relational Operators(<, <=, >, >=, ==, and !=). El resultado de evaluar un operador

relacional siempre es un valor booleano (true or false).

Java tiene 4 operadores realcionales que pueden ser utilizados para comparar cualquier combinación de integers, floating-point numbers, o caracteres:

> mayor que>= mayor que o igual a< menor que<= menor que o oigual a

Page 6: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Cuando se compara un caracter con un caracter, o un caracter con un número, Java usará el valor Unicode para la comparación.

Relational Operators

Page 7: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Operadores de igualdad "Equality" == equals != not equalsNo se puede comparar tipos incompatibles.Hay 4 tipos diferentes de cosas que pueden ser

comparadas: números caracteresbooleanos Variables de referencia a Objetos

El operador == analiza el valor en la variable, en otras palabras ,el patrón de bits.

Page 8: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Igualdad para variables de referenciaJButton a = new JButton("Exit");JButton b = a;

Después de correr este código las dos variables a y b haran referencia al mismo objeto.

Recuerda, el operador == busca los bits en la variable, eso significa que si los bits de ambas variables de referencia son idénticos entonces ambos se referiran al mismo objeto.

Page 9: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores
Page 10: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores
Page 11: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Igualdad para enumeracionesUna vez que se ha declarado un enumeración

esta no es expandible. Durante la ejecución no hay manera de

adicionar constantes a la enumeración. Se puede usar el operador == asi como el método equals() para determinar si dos variables se refieren e a la misma constante de una enumeración:

Page 12: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Comparación instanceofEl operador instanceof es usado solo para

variables de referencia a objetos, y se puede utilizar para probar si un objeto es de un tipo en particular. Por tipo se conoce clase o tipo de interfaz—en otras palabras , si el objeto referrido por la variable en el lado izquierdo del operador pasa la prueba IS-A para la clase o interfaz del lado derecho.

String s = new String("foo");if (s instanceof String) {System.out.print("s is a String");}

Page 13: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Aún si el objeto que está siendo testeado no es una instancia del tipo de clase, instanceof retornará verdadero si el objeto que esta siendo comparado es compatible con el tipo del lado derecho.

Ejemplo: probar un objeto para ver si este es una instancia de una de sus subtipos, antes de intentar un "downcast":

Comparación instanceof

Page 14: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

El uso de instanceof protégé al programa de intentar un ilegal downcast.

Se puede probar una referencia a un objeto contra su propio tipo de clase, o cualquiera de sus superclases. Esto significa que cualquier referencia a objeto será verdadero si usa instanceof en comparación con Objejct:

B b = new B();if (b instanceof Object) {System.out.print("b is definitely an Object");}prints this: b is definitely an Object

Page 15: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Además es legal probar si null es una instancia de una clase. Esto siempre será falso.

Page 16: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores
Page 17: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Operadores Aritméticos+ addition – subtraction * multiplication / division

El operador Remainder (%)Divide el lado operando izquierdo por el operando derecho, y el resultado es el remanente:int x = 15;int y = x % 4;The remainder is 3

Page 18: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Operador concatenación de StringString a = "String";int b = 3;int c = 7;System.out.println(a + b + c);String10 ?String37 ?

Sin embargo, si se coloca parentesis alrededor de las dos variables:System.out.println(a + (b + c));you'll get this: String10

Page 19: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

La regla para recordar es: Si uno de los operandos es un String, el

operador + llega a ser un operador de concatenación de String. Si ambos operandos son números, el operador + será de adición.

Finalmete, es legal utilizar el operador compuesto (+=) con Strings:

String s = "123";s += "45";s += 67;System.out.println(s);

Operador concatenación de String

Page 20: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Operadores de incremento y decremento++ increment (prefix and postfix) -- decrement (prefix and postfix)

Nota que en la cuarta línea del programa el operador de incremento está después de la variable players. Eso significa que se está utilizando el operador de incremento postfix, el cual causa que la variable players se incremente por uno ,pero solo después de que el valor de player se use en la expresión. Está será la salida del programa:players online: 0The value of players is 1The value of players is now 2

Page 21: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

"If 3 is equal to 2 OR 3 < 4"Este código imprime: x = 3 y = 4

Operadores de incremento y decremento

Page 22: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Conditional OperatorEl operador condicional es un operador

ternario y es usado para evaluar expresiones booleanas.

x = (expresión booleana) ? valor asignado si es verdadero: valor asignado si es falso

Page 23: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Operadores lógicos(&, |, ^, !, &&, and ||).

Bitwise Operators (Not on the Exam!)byte b1 = 6 & 8;byte b2 = 7 | 9;byte b3 = 5 ^ 4;System.out.println(b1 + " " + b2 + " " + b3);

Bitwise operators compara dos variables bit por bit, and return variable whose bits have been set based on whether the two variables being compared had respective bits that were either both "on" (&), one or the other "on" (|), or exactly one "on" (^). By the way, when we run the preceding code, we get 0 15 1

Page 24: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Short-Circuit Logical Operators&& short-circuit AND|| short-circuit OR

Estos son usados para enlazar pequeñas expresiones booleanas con el fin de construir expresiones booleanas más grandes.

Los operadores && y || evaluan solo valores booleanos. Para que una expresión (&&) sea verdadera, ambos operandos deben ser verdaderos.

Page 25: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Operadores lógicos Short-CircuitUn short-circuit && evalua primero el lado

izquierdo (operando uno), y si éste es falso, el operador && no se molesta en analizar el lado derecho de la expresión (operando dos) porque el operando && ya conoce que no es posible que la expresión completa sea verdadera.

Page 26: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Si el primer operando en una operación OR es verdadera, el resultado será verdadero, así el short-circuit || no gasta tiempo en averiguar el lado derecho de la operación. Si el primer operando es falso, el short-circuit || debe evaluar el segundo operando para ver si el resultado de la operación OR será veradera o falsa.

Presta atención al siguiente ejemplo:

Operadores lógicos Short-Circuit

Page 27: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores
Page 28: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores
Page 29: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Operadores lógicos (Not Short-Circuit)& non-short-circuit AND | non-short-circuit OREstos operadores lógicos son usados al

igual que && y ||, pero no son short-circuit porque evaluan ambos lados de las expresiones siempre. Ellos son ineficientes.

Page 30: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

Operadores lógicos ^ and !^ exclusive-OR (XOR) ! boolean invertEl operador ^ (exclusive-OR) evalúa solo

valores booleanos. Revisa siempre ambos lados de la operación.

Para que una expresión que usa el operador exclusive-OR (^) sea verdadera, exactamente un operando debe ser verdadero—por ejemplo,

System.out.println("xor " + ((2<3) ^ (4>3)));produce la salida: xor false

Page 31: Sun Certified  Java  Programmer  (SCJP) Capítulo  4:  Operadores

El operador ! (boolean invert) retorna el valor booleano opuesto al actual:• if(!(7 == 5)) { System.out.println("not equal"); }

Puede ser leído "if it's not true that 7 == 5," y produce la salida: not equal

Operadores lógicos ^ and !