Upload
jorgmarq
View
227
Download
1
Tags:
Embed Size (px)
Citation preview
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/
AGENDA
>!Operadores de asignación
>!instanceof
>!Concatenación de Strings
>!Operador condicional
>!Operadores lógicos
Operadores de asignación
>!Cuando asignamos un valor a un primitivo, el tamaño importa. Debemos estar seguros de si se dará un casting implícito, uno explicito o si se truncará el número.
>!Una variable de referencia no es un objeto. Es una forma de alcanzar un objeto.
>!Cuando asignamos un valor a una variable de referencia, el tipo importa. Debemos recordar las reglas para supertipos, subtipos y arrays.
Igualdad en referencias a objetos
>!El operador == observa los bits en la variable, 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));
Comparación con instanceof
>!Es verdadera si el objeto en el lado izquierdo del operador pasa la prueba “ES UN” para la clase o interfaz en el lado derecho.
>!Los arrays son objetos, incluso cuando son arrays de primitivos.
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");
}
}
Operador de concatenación en
Strings String a = "String";
int b = 3;
int c = 7;
System.out.println(a+ b + c);
>!El signo ‘+’, ¿actuará como un operador de suma o como uno de concatenación cuando opere las variables b y c?
>!¿Y si hicieramos b+c+a?
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”.
>!Si ambos operandos son Strings, ‘+’ actuará como operador de concatenación. Si ambos son números, ‘+’ actuará como operador de adición.
Operador condicional
>!El operador condicional es un operador ternario que se utiliza para evaluar operaciones booleanas en forma similar al if.
>!La diferencia es que en vez de ejecutar un 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
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);
}
}
Operadores lógicos de
“cortocircuito”
>!Los operadores ‘&&’ y ‘||’ evalúan solo valores booleanos.
>!‘&&’: short-circuit AND
>!‘||’: short-circuit OR
>!Se llaman de cortocircuito porque evalúan primero el lado izquierdo de la operación y si logra una resolución, no evalúa la parte derecha.
XOR
>!El operador XOR (‘^’) no es de cortocircuito
>!Para que una operación XOR evalúe a true, uno y sólo uno de los operandos debe evaluar a true.
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