El documento resume los principales operadores en Java como los operadores de asignación, instanceof, concatenación de cadenas, condicionales, lógicos y XOR. Explica que los operadores de asignación deben tener en cuenta el tipo y tamaño de los valores, instanceof comprueba si un objeto es de un tipo específico, y los operadores lógicos && y || evalúan de forma secuencial para mejorar el rendimiento.
2. Disclaimer & Acknowledgments
>!Even though Ezequiel Aranda is a full-time employee of Sun
Microsystems, the contents here are created as his own
personal endeavor and thus does not reflect any official
stance of Sun Microsystems.
>!Sun Microsystems is not responsible for any inaccuracies in
the contents.
>!Acknowledgments – The slides of this presentation are made
from “SCJP Unit 4” by Warit Wanwithu and Thanisa
Kruawaisayawan and SCJP Workshop by P. Srikanth.
>!This slides are Licensed under a Creative Commons
Attribution – Noncommercial – Share Alike 3.0
>!http://creativecommons.org/licenses/by-nc-sa/3.0/
3. AGENDA
>! peradores de asignación
O
>!nstanceof
i
>! oncatenación de Strings
C
>! perador condicional
O
>! peradores lógicos
O
4. Operadores de asignación
>! uando asignamos un valor a un primitivo, el
C
tamaño importa. Debemos estar seguros de si
se dará un casting implícito, uno explicito o si
se truncará el número.
>! na variable de referencia no es un objeto. Es
U
una forma de alcanzar un objeto.
>! uando asignamos un valor a una variable de
C
referencia, el tipo importa. Debemos recordar
las reglas para supertipos, subtipos y arrays.
5. Igualdad en referencias a objetos
>! l operador == observa los bits en la variable,
E
y en el caso de las referencias esto significa
que si los bits en ambas variables de
referencia son iguales, entonces ambas hacen
referencia al mismo objeto.
JButton a = new JButton("Exit");
JButton b = new JButton("Exit");
JButton c = a;
System.out.println("a == b? " + (a ==
b));
System.out.println("a == c? " + (a ==
c));
6. Comparación con instanceof
>! s verdadera si el objeto
E
en el lado izquierdo del
operador pasa la prueba
“ES UN” para la clase o
interfaz en el lado
derecho.
>! os arrays son objetos,
L
incluso cuando son
arrays de primitivos.
7. class A { }
class B extends A {
public static void main (String [] args) {
A myA= new B();
m2(myA);
}
public static void m2(A a) {
if (a instanceof B)
((B)a).doBstuff(); //downcast
}
public static void doBstuff(){
System.out.println("'a' refers to a B");
}
}
8. Operador de concatenación en
Strings
String a = "String";
int b = 3;
int c = 7;
System.out.println(a+ b + c);
>! l signo ‘+’, ¿actuará como un operador de
E
suma o como uno de concatenación cuando
opere las variables b y c?
>! Y si hicieramos b+c+a?
¿
9. Operador de concatenación en
Strings (II)
>! Comenzamos con el String a, y le agregamos
“
el carácter 3 (b), para producir el String
“String3”. Después agregamos el carácter 7
(c), para producir el String “String37”, luego
lo imprimimos”.
>! i ambos operandos son Strings, ‘+’ actuará
S
como operador de concatenación. Si ambos
son números, ‘+’ actuará como operador de
adición.
10. Operador condicional
>! l operador condicional es un operador
E
ternario que se utiliza para evaluar
operaciones booleanas en forma similar al if.
>! a diferencia es que en vez de ejecutar un
L
bloque de código, sólo podremos asignar un
valor a una variable.
x = (boolean expression) ? value to
assign if true : value to assign
if false
11. class Salary {
public static void main(String[] args) {
int numOfPets = 3;
String status = (numOfPets<4) ?
“Pet limit not exceeded” :
“too many pets”;
System.out.println("This pet status is "
+ status);
}
}
12. Operadores lógicos de
“cortocircuito”
>! os operadores ‘&&’ y ‘||’ evalúan
L
solo valores booleanos.
>! &&’: short-circuit AND
‘
>! ||’: short-circuit OR
‘
>! e llaman de cortocircuito porque
S
evalúan primero el lado izquierdo
de la operación y si logra una
resolución, no evalúa la parte
derecha.
13. XOR
>! l operador XOR (‘^’) no
E
es de cortocircuito
>! ara que una operación
P
XOR evalúe a true, uno y
sólo uno de los operandos
debe evaluar a true.
14. class Feline {
public static void main(String[] args) {
Long x = 42L; Long y = 44L;
System.out.print(" " + 7 + 2 + " ");
System.out.print(foo() + x + 5 + " ");
System.out.println(x + y + foo());
}
static String foo() { return "foo"; }
}
>!¿Cuál es el resultado?
A. 9 foo47 86foo B. 9 foo47 4244foo
C. 9 foo425 86foo D. 9 foo425 4244foo
E. 72 foo47 86foo F. 72 foo47 4244foo
G. 72 foo425 86foo H. 72 foo425 4244foo