310 likes | 435 Views
Sun Certified Java Programmer (SCJP) Capítulo 4: Operadores. Objetivo de certificacion.
E N D
SunCertified Java Programmer (SCJP) Capítulo 4: Operadores
Objetivo de certificacion • Escribir 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.
Operadores de Asignación Compuestos • Existen 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;
Relational Operators • (<, <=, >, >=, ==, and !=). • El resultado de evaluar un operador relacional siempre es un valor booleano (true or false). • Java tiene 4 operadoresrealcionalesquepueden ser utilizadosparacompararcualquiercombinación de integers, floating-point numbers, o caracteres: • > mayor que • >= mayor que o igual a • < menorque • <= menorque o oigual a
Relational Operators Cuando se compara un caracter con un caracter, o un caracter con un número, Java usará el valor Unicode para la comparación.
Operadores de igualdad "Equality" • == equals • != not equals • No se puedecomparartipos incompatibles. • Hay 4 tiposdiferentes de cosasquepueden ser comparadas: • números • caracteres • booleanos • Variables de referencia a Objetos El operador == analiza el valor en la variable, en otraspalabras ,el patrón de bits.
Igualdadpara variables de referencia • JButton 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.
Igualdadparaenumeraciones • Unavezque se ha declarado un enumeraciónesta no esexpandible. • Durante la ejecución no hay manera de adicionarconstantes a la enumeración. Se puedeusar el operador == asicomo el método equals() paradeterminarsi dos variables se refieren e a la mismaconstante de unaenumeración:
Comparacióninstanceof • El 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"); }
Comparacióninstanceof • Aúnsi el objetoqueestásiendotesteado no esunainstancia del tipo de clase, instanceofretornaráverdaderosi el objetoqueestasiendocomparadoescompatible con el tipo del ladoderecho. • Ejemplo: probar un objetoparaversiesteesunainstancia de una de sussubtipos, antes de intentar un "downcast":
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
Además es legal probar si null es una instancia de una clase. Esto siempre será falso.
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
Operadorconcatenación de String • String 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
Operador concatenación de String • 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);
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: 0 The value of players is 1 The value of players is now 2
Operadores de incremento y decremento "If 3 is equal to 2 OR 3 < 4" Este código imprime: x = 3 y = 4
Conditional Operator • El 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
Operadoresló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
Short-Circuit Logical Operators • && short-circuit AND • || short-circuit OR Estos son usadosparaenlazarpequeñasexpresionesbooleanas con el fin de construirexpresionesbooleanasmásgrandes. Los operadores && y || evaluan solo valoresbooleanos. Para queunaexpresión (&&) sea verdadera, ambos operandosdeben ser verdaderos.
Operadoreslógicos Short-Circuit • Un short-circuit && evaluaprimero el ladoizquierdo (operandouno), y siésteesfalso, el operador && no se molesta en analizar el ladoderecho de la expresión (operando dos) porque el operando && yaconoceque no esposibleque la expresióncompleta sea verdadera.
Operadoreslógicos Short-Circuit • 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 (Not Short-Circuit) • & non-short-circuit AND • | non-short-circuit OR • Estos 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.
Operadoreslógicos ^ and ! • ^ exclusive-OR (XOR) • ! boolean invert • El 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
Operadoreslógicos ^ and ! • 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