SCJP 6
   Clase 4 – Operadores




    Ezequiel Aranda
Sun Microsystems Campus
      Ambassador
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

>! peradores de asignación
 O
>!nstanceof
 i
>! oncatenación de Strings
 C
>! perador condicional
 O
>! peradores lógicos
 O
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.
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));
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.
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);
>! 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?
 ¿
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.
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
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”
>! 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.
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.
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
Preguntas

Clase4 operadores

  • 1.
    SCJP 6 Clase 4 – Operadores Ezequiel Aranda Sun Microsystems Campus Ambassador
  • 2.
    Disclaimer & Acknowledgments >!Eventhough 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 deasignació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 referenciasa 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ónen 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ónen 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 >! loperador 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 operadorXOR (‘^’) 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
  • 15.