Slides de la cuarta clase del curso de Java SCJP dictado en la Universidad Nacional de Centro de La Provincia de Buenos Aires.
Contenido:
1. Operadores
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(quot;Exitquot;);
JButton b = new JButton(quot;Exitquot;);
JButton c = a;
System.out.println(quot;a == b? quot; + (a ==
b));
System.out.println(quot;a == c? quot; + (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(quot;'a' refers to a Bquot;);
}
}
8. Operador de concatenación en
Strings
String a = quot;Stringquot;;
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(quot;This pet status is quot;
+ 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(quot; quot; + 7 + 2 + quot; quot;);
System.out.print(foo() + x + 5 + quot; quot;);
System.out.println(x + y + foo());
}
static String foo() { return quot;fooquot;; }
}
> ¿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