SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Java World – Capítulo 4     2

Operadores
                                                                                                                                           h
Los operadores son aquellos elementos que producen un resultado realizando operaciones con uno o varios operandos (estos son
                                                                                                                                           t
los elementos que se encuentran a la izquierda y derecha del operador).
                                                                                                                                           t
Operadores de asignación                                                                                                                   p
El operador de asignación es el =. Algunos conceptos a tener en cuenta:                                                                    :
                                                                                                                                           /
         Cuando se le asigna un valor a una primitiva, el tamaño si importa. (Es importante saber cuando ocurrirá un casteo
                                                                                                                                           /
         implícito, explícito, y cuando se trunca el valor).
         Una variable de referencia no es un objeto, es una manera de obtener el objeto al que hace referencia.
                                                                                                                                           g
         Cuando se asigna un valor a una referencia, el tipo importa. (Es importante saber las reglas para superclases, subclases, y       u
         arrays).                                                                                                                          s
                                                                                                                                           t
Operadores de asignación compuestos                                                                                                        a
Actualmente, existen alrededor de 11 operadores de asignación compuestos, pero en el examen solo aparecerán los 4 más comunes              v
(+=, -=, *=, /=) se encuentran en el examen.                                                                                               o
Pero, que es un operador de asignación compuesto?                                                                                          a
Simplemente, es una manera abreviada de realizar una operación con el valor de la variable en donde se asigna el resultado con otro
                                                                                                                                           l
                                                                                                                                           b
 int a = 2;
 a = a * 3;                                                                                                                                e
                                                                                                                                           r
 //Diferente sintaxis, mismo significado.
 int a = 2;                                                                                                                                o
 a *= 3;                                                                                                                                   l
conjunto. Veamos un ejemplo:                                                                                                               a
                                                                                                                                           .
 int a = 2;
 int b = 3;                                                                                                                                b
 int c = 5;                                                                                                                                l
 a = a * ( b + c );                                                                                                                        o
                                                                                                                                           g
 //Diferente sintaxis, mismo significado.
 int a = 2;
                                                                                                                                           s
 int b = 3;                                                                                                                                p
 int c = 5;                                                                                                                                o
 a *= b + c;
                                                                                                                                           t
A simple vista, parece sencillo, pero no hay que confundirse. El operador de asignación compuesto se refleja en realizar una
                                                                                                                                           .
opeación con el resultado de todo lo que se encuentra luego del igual. Veamos un ejemplo:                                                  c
                                                                                                                                           o
Es posible confundirse con esto, creyendo que la operación fuera “ ( a * b ) + c”, pero reitero, el operador de asignación compuesto       m
realiza los siguientes pasos:

    1.   Realiza todas las operaciones contenidas a la derecha del operador de asignación (=).
    2.   Realiza la operación compuesta (Multiplicar, Dividir, Sumar, Restar, ...).
    3.   Asigna el valor de la operación a la variable.

Operadores relacionales
El examen cubre sies operadores relaciones (<, <=, >, >=, == y ¡=).
Los operadores relacionales siempre producen como resultado un valor de tipo boolean.
Los operadures se traducen como:
3    Java World – Capítulo 4

                 <           menor que
h                <=          menor o igual que
t                >           mayor que
t                >=          mayor o igual que
                 ==          igual que
p
                 ¡=          distinto de
:
/                             Es muy común ver en una comparación un operador =. Esto es una asignación, no un operador relacional.
/                             Como dijimos, estos tipos de operadores devuelven un valor boolean, asi que pueden ser utilizados en
v                             sentencias condicionales (if, else, while), como ser asignados a una variable.
a
        Veamos algunos ejemplos:
l
o        int x = 7;
r        if ( x < 9       ) {
c          //Codigo       ...
         } else {
r          //Codigo       ...
e        }
         //Entra en       el if
a
t        boolean a = 100 > 90;
         if ( a ) {
i          //Codigo ...
v        } else {
o          //Codigo ...
         }
.        //Entra en el else
b
l
o       Ahora, veamos un ejemplo un poco más complicado:
g
s        int x = 12;
         if ( (x = 2 * 3 ) == 6 ) {
p          //Codigo ...
o        } else {
           //Codigo ...
t        }
.       En este código, se ejecuta el if.
c       Los pasos que realizó el programa fueron:
o           1. Realizar la operación “2 * 3”.
            2. Asignar el resultado de la operación anterior a x.
m           3. Comparar el valor de x con el literal 6.
        Vuelvo a recalcar la importancia de entender la diferencia entre = e ==, y saber identificar cuando podría haber un posible error.
        Quiero mostrar otro ejemplo, en donde se aprecia aun más la importancia de detectar las diferencias entre dichos operadores:

         boolean x = false;

         if ( x = true ) {
           //Codigo ...
         } else {
           //Codigo ...
         }


        El resultado de el código anterior ejecuta el código dentro del if.
        ¿Cómo? Simple:
Java World – Capítulo 4   4

    1.   x es false.
    2.   Dentro de la condición, se asigna true a x.                                                                                    h
    3.   Se evalua x (este ahora vale true).                                                                                            t
                       Hay que recordar que una sentencia de condición, en Java, solo evalua los tipos boolean. Es válido asignar       t
                       un valor a una variable dentro de una condición, pero si el tipo de dato almacenado no es de tipo boolean,       p
                       se generará un error de compilación. De manera que una sentencia como “if ( x = 9 )” generará un error de        :
                       compilación.                                                                                                     /
No es lo mismo que:                                                                                                                     /
 boolean x = false;
                                                                                                                                        g
                                                                                                                                        u
 if ( x == true ) {                                                                                                                     s
   //Codigo ...
 } else {                                                                                                                               t
   //Codigo ...                                                                                                                         a
 }
                                                                                                                                        v
                                                                                                                                        o
En este código se ejecuta el else.
También es posible realizar una comparación como:                                                                                       a
  char a = 7;                                                                                                                           l
  if ( a < 'g' ) {                                                                                                                      b
    //Codigo ...
  } else if ( a < 16 ) {                                                                                                                e
    //Codigo ...                                                                                                                        r
  }
                                                                                                                                        o
                                                                                                                                        l
Cuando se compara un valor de tipo char, se utiliza el valor unicode del caracter.                                                      a
Operadores de igualdad                                                                                                                  .
Los operadores de igualdad son:                                                                                                         b
                                                                                                                                        l
         ==      Igual que
         ¡=      Distinto de
                                                                                                                                        o
                                                                                                                                        g
Estos operadores solo comparan el patrón de bits. Esto es importante dado que en una variable de tipo referencia, el valor es la        s
posición de memoria donde se encuentra el objeto.                                                                                       p
Igualdad en primitivas                                                                                                                  o
Algunos ejemplos:                                                                                                                       t
                                                                                                                                        .
 'a' == 'a'                          //TRUE
 'a' == 'b'                          //FALSE                                                                                            c
 7 != 9                              //TRUE                                                                                             o
 1.0 == 1L                           //TRUE (se realiza un casteo implícito)
 true == false                       //FALSE                                                                                            m
5    Java World – Capítulo 4

        Igualdad en variables de tipo referencia
h       Cuando se compara una referencia con los operadores de igualdad, solo se compara el objeto al que referencian (el valor de la
t       variable es la dirección de memoria en donde se encuentra el objeto realmente).
t        class Simple {
p          int x;
:          Simple(int x){ this.x = x; }
         }
/
/        public static void main(String[] args) {
           Simple obj_1 = new Simple(16);
v          Simple obj_2 = new Simple(16);
a          Simple obj_3 = obj_1;
l
             System.out.println("Objeto 1 es igual a objeto 2?                             " + (obj_1 == obj_2));
o            System.out.println("Objeto 1 es igual a objeto 3?                             " + (obj_1 == obj_3));
r        }
c
r
e                            Objeto 1 es igual a objeto 2?                  False
a                            Objeto 1 es igual a objeto 3?                  True
t
i       A pesar de que el único atributo que tiene el objeto Simple es igual en obj_1 como en obj_2, su comparación de igualdad da false.
        Vamos a hacerlo un poco más gráfico para dejar este importante concepto bien en claro.
v
o                                                              Obj_1               Obj_2           Obj_3
.
                                       Variables             0x0000F0            0x0000A9         0x0000F0
b
l
o
g
s
                                       Memoria                   16                  16
p
o
                                                              0x0000F0           0x0000A9
t
.
c       En el gráfico podemos apreciar facilmente el porque la comparación entre obj_1 y obj_2 fallo, cuando entre obj_1 y obj_3 fue
        exitosa. Más alla de que obj_1 y obj_2 contentan su único atributo con el mismo valor.
o
m       Igualdad en enumeradores
        Se aplica la política de variables de referencia. Al final, un enumerador es un objeto.

        Comparación con instanceof
        El operador instanceof devuelve un valor de tipo boolean, que indica si el objeto Es-Un objeto del tipo especificado (o subtipo).
        También aplica a interfaces, cuando el objeto Implementa una interfaz especificada (o alguna de sus superclases la implementa).

                               El operador instanceof solo funciona para comparar tipos que se encuentren en el mismo árbol de
                               herencia.
Java World – Capítulo 4   6

Veamos un ejemplo de esto:
                                                                                                                                          h
 interface Dibujable {}
 class Triangulo implements Dibujable {}                                                                                                  t
 class Cuadrado extends Triangulo {}                                                                                                      t
 class Circulo implements Dibujable {}
                                                                                                                                          p
                                                                                                                                          :
Tipo              Se puede comparar con                                                      No se puede comparar con
                                                                                                                                          /
null              Cualquier clase o interface                                                -
                                                                                                                                          /
Dibujable         Dibujable – Object – Circulo – Triangulo – Cuadrado                        -
Circulo           Circulo – Dibujable – Object                                               Triangulo – Cuadrado
                                                                                                                                          g
Triangulo         Cuadrado – Triangulo – Dibujable – Object                                  Circulo                                      u
Cuadrado          Cuadrado – Triangulo – Dibujable – Object                                  Circulo                                      s
http://thechroniclesofbinary.googlecode.com/files/ejemploInstanceof.java                                                                  t
Para compilarlo: Javac -g ejemploInstanceof.java                                                                                          a
Para ejecutarlo: java ejemploInstanceof                                                                                                   v
Operadores aritméticos                                                                                                                    o
                                                                                                                                          a
No hay mucho que decir acerca de estos, salvo que todos los utilizamos.
                                                                                                                                          l
El operador de resto                                                                                                                      b
Cualdo realizamos una operación de división, existe un resto. Este valor puede ser obtenido a partir del operador %.                      e
                                                                                                                                          r
 public class ejemploResto {                                                                                                              o
   static public void main(String[] arg) {
                                                                                                                                          l
     System.out.println("9 dividido 2 es " + (9 / 2) + ". Y el resto es " + (9 % 2));
   }                                                                                                                                      a
 }                                                                                                                                        .
Un ejemplo del operador:                                                                                                                  b
                                                                                                                                          l
                                                                                                                                          o
                    9 dividido 2 es 4. Y el resto es 1.
                                                                                                                                          g
                                                                                                                                          s
                                                                                                                                          p
El operador de concatenación                                                                                                              o
                                                                                                                                          t
El operador + también puede ser utilizado para concatenar cadenas de caracteres.
La regla para saber cuando se comporta como suma y cuando como concatenación es simple: Si alguno de los dos valores es un                .
String, el + funciona como concatenador.                                                                                                  c
Algunos ejemplos:                                                                                                                         o
 System.out.println(67 + 45 + 9);                                                        //121                                            m
 System.out.println(67 + 45 + " - valores" + 67 + 45);                                   //112 – valores6745
 System.out.println("hola" + " " + "mundo");                                             //hola mundo
7    Java World – Capítulo 4

        Operadores de incremento y decremento
h       Estos operadores sirven para incrementar o decrementar en 1 el valor de cualquier variable numérica.
t
        http://thechroniclesofbinary.googlecode.com/files/ejemploOperadoresIncrementoDecremento.java
t
        Para compilarlo: Javac -g ejemploOperadoresIncrementoDecremento.java
p       Para ejecutarlo: java ejemploOperadoresIncrementoDecremento
:
        En el ejemplo se puede ver como el operador de incremento y decremento es aplicado a todos los valores de tipo numérico, y como
/
        funciona el de preincremento y posincremento.
/
v
a                            Existe una gran diferencia entre los operadores de preincremento y posincremento.
l
o
r
                Preincremento ++variable          Antes de realizar cualquier acción, el valor de la variable es incrementado en 1. Luego
c
                continúa con la lógica.
r               Posincremento variable++          Primero realiza la lógica, y al finalizar incrementa el valor de la variable en 1.
e
a       Veamos un ejemplo:
t        int x;
i        x = 0;
v        System.out.println(x++ + 6); //6
o        System.out.println(x);       //7

.        x = 0;
b        System.out.println(++x + 6); //7
         System.out.println(x);       //7
l
o
        Hay que tener cuidado en codigos de condición complejos, veamos algunos ejemplos:
g       http://thechroniclesofbinary.googlecode.com/files/ejemploIncrementoDecrementoCondicionales.java
s       Para compilarlo: Javac -g ejemploIncrementoDecrementoCondicionales.java
p       Para ejecutarlo: java ejemploIncrementoDecrementoCondicionales
o
t
.
c
o
m
Java World – Capítulo 4   8

 int x, y, z;
                                                                                               h
 x = 0;y = 2;z = 2;                                                                            t
 if ( (x++ == y) || (z == ++y) ){
   System.out.println("( (x++ == y) || (z == ++y) ) ? true");                                  t
 } else {                                                                                      p
   System.out.println("( (x++ == y) || (z == ++y) ) ? false");
 }
                                                                                               :
 //Resultado: false                                                                            /
                                                                                               /
 x = 0;
 if ( (x++ == ++x) ) {                                                                         g
   System.out.println("( (x++ == ++x) ) ? true");                                              u
 } else {
   System.out.println("( (x++ == ++x) ) ? false");                                             s
 }                                                                                             t
 //Resultado: false
                                                                                               a
 x = 0;                                                                                        v
 if ( (++x == x++) ) {                                                                         o
   System.out.println("( (++x == x++) ) ? true");
 } else {                                                                                      a
   System.out.println("( (++x == x++) ) ? false");                                             l
 }
 //Resultado: true                                                                             b
                                                                                               e
 x = 0;y = 1;z = 2;
 if ( (--z > y) && (x == z) ) {
                                                                                               r
   System.out.println("( (--z > y) && (++x < z) ) ? true");                                    o
 } else {                                                                                      l
   System.out.println("( (--z > y) && (++x < z) ) ? false");
 }                                                                                             a
 //Resultado: false                                                                            .
 x = 2;y = 1;z = 2;                                                                            b
 if ( (--z > y) && (x > z) ) {                                                                 l
   System.out.println("( (--z > y) && (x > z) ) ? true");
 } else {
                                                                                               o
   System.out.println("( (--z > y) && (x > z) ) ? false");                                     g
 }                                                                                             s
 //Resultado: false
                                                                                               p
                                                                                               o
Veamos a fondo uno por uno:
                                                                                               t
 x = 0;y = 2;z = 2;                                                                            .
 if ( (x++ == y) || (z == ++y) ){ //...
                                                                                               c
 ( (0 == 2) || (2 == 3) ) //false || false                                                     o
                                                                                               m
 x = 0;
 if ( (x++ == ++x) ) { //...

 ( (0 == 1) ) //false
9    Java World – Capítulo 4



h        x = 0;
         if ( (++x == x++) ) { //...
t
t        ( (1 == 1) ) //true
p
:        x = 2;y = 1;z = 2;
/        if ( (--z > y) && (x > z) ) { //...
/        ( (1 > 1) && (2 > 1) ) ) //false && true
v
a
l       Operador condicional
o
        Este operador requiere tres términos, y es utilizado para la asignación de valores a una variable.
r
        Su funcionamiento es similar al de un if, verifica una condición, y si esta es true asigna un valor, caso contrario asigna la otra.
c       Ejemplo de la sintaxis:
r
         variable = (expresion booleana) ? valor a asignar si la condicion fue true : valor a
e        asignar si la condicion fue false;
a
         int x;
t        x = ( true ) ? 1 : 2;                //x ahora contiene el valor 1
i        x = ( false ) ? 1 : 2;               //x ahora contiene el valor 2
v
o
.                             Hay que recordar que los operadores lógicos solo funcionan con valores de tipo boolean, salvo aquellos
b                             que se utilizan a nivel de bits.
l
o
g
s
p
o
t
.
c
o
m
Java World – Capítulo 4      10

Operadores lógicos
                                                                                                                                               h
Los operadores lógicos necesarios para el examen son: &, |, ^, ¡, && y ||.
                                                                                                                                               t
Operadores lógicos sobre bits (no entra en el examen)                                                                                          t
Los siguientes operadores &, | y ^ pueden utilizarse en diferentes situaciones, una de ellas es para comparación a nivel de bits. Estos        p
fueron incluidos en versiones de examenes previas, pero para nuestra versión, no son necesarios.                                               :
                                                                                                                                               /
 byte b01 = 5 & 15; //Compuerta AND                                                                                                            /
 /*
     0 0 1 0 1   - 5
                                                                                                                                               g
     0 1 1 1 1   - 15                                                                                                                          u
     ----------                                                                                                                                s
     0 0 1 0 1   - 5
 */                                                                                                                                            t
                                                                                                                                               a
 byte b02 = 3 | 8; //Compuerta OR
 /*                                                                                                                                            v
     0 0 0 1 1   - 3                                                                                                                           o
     0 1 0 0 0   - 8
     ----------
                                                                                                                                               a
     0 1 0 1 1   - 11                                                                                                                          l
 */                                                                                                                                            b
 byte b03 = 29 ^         11; //Compuerta XOR                                                                                                   e
 /*                                                                                                                                            r
     1 1 1 0 1           - 29
     0 1 0 1 1           - 11                                                                                                                  o
     ----------                                                                                                                                l
     1 0 1 1 0           - 21
 */
                                                                                                                                               a
                                                                                                                                               .
                                                                                                                                               b
                                                                                                                                               l
                                                                                                                                               o
Si deseas comprender un poco más acerca del funcionamiento de las operaciones lógicas con compuertas en código binario, puedes
buscar en internet por el nombre de las mismas (AND, OR, XOR).
                                                                                                                                               g
                                                                                                                                               s
                                                                                                                                               p
                                                                                                                                               o
                                                                                                                                               t
                                                                                                                                               .
                                                                                                                                               c
                                                                                                                                               o
                                                                                                                                               m
11    Java World – Capítulo 4

         Operadores lógicos de circuito corto
h        Estos son:
t
t                &&      AND de circuito corto
p                ||      OR de circuito corto
:        Pero, ¿por qué de circuito corto?
/        Se denominan de esta manera porque cuando se evalua una expresión, si la primer evaluación hace que la condición no se cumpla
/        no se evalua la siguiente.
v        Veamos algunos ejemplos:
a          class Valores {
l            public int getValor1() {
               System.out.println("Devuelvo el valor 1");
o              return 1;
r            }
c              public int getValor2() {
r                System.out.println("Devuelvo el valor 2");
e                return 2;
               }
a          }
t
           public class ejemploOperadoresLogicosCircuitoCorto {
i            static public void main(String[] args) {
v              Valores valores = new Valores();
o              if ( (valores.getValor1() == 2) && (valores.getValor1() == 1) ) {
.                System.out.println("( (valores.getValor1() == 2) && (valores.getValor1() ==
b          1) ) ? true");
               } else {
l                System.out.println("( (valores.getValor1() == 2) && (valores.getValor1() ==
o          1) ) ? false");
               }
g
s              if ( (valores.getValor2() > 0) || (valores.getValor2() != 5) ) {
                 System.out.println("( (valores.getValor2() > 0) || (valores.getValor2() !=
p          5) ) ? true");
o              } else {
t                System.out.println("( (valores.getValor2() > 0) || (valores.getValor2() !=
           5) ) ? false");
.              }
c            }
           }
o
m
                            Devuelvo el valor 1
                            ( (valores.getValor1() == 2) && (valores.getValor1() == 1) ) ? false
                            Devuelvo el valor 2
                            ( (valores.getValor2() > 0) || (valores.getValor2() != 5) ) ? true



         Como se puede apreciar, en los dos casos, al evaluar la primer condición no es necesario evaluar la segunda, de manera que esta
         última, directamente es obviada.
Java World – Capítulo 4   12

Operadores lógicos de circuito completo
                                                                                                                                        h
Estos son:
                                                                                                                                        t
        |                                                                                                                               t
        &                                                                                                                               p
                                                                                                                                        :
Al contrario de los de circuito corto, estos siempre evaluan todas las condiciones, por más que ya se conozca de antemano el
resultado de la operación lógica (estos operadores son ineficientes).                                                                   /
Veamos el ejemplo con los operadores de circuito completo:                                                                              /
                                                                                                                                        g
                                                                                                                                        u
A diferencia de los operadores lógicos de circuito corto, vemos como se verifica la segunda condición.                                  s
 class Valores {                                                                                                                        t
   public int getValor1() {
                                                                                                                                        a
     System.out.println("Devuelvo el valor 1");
     return 1;                                                                                                                          v
   }                                                                                                                                    o
     public int getValor2() {                                                                                                           a
       System.out.println("Devuelvo el valor 2");                                                                                       l
       return 2;
     }                                                                                                                                  b
 }                                                                                                                                      e
                                                                                                                                        r
 public class ejemploOperadoresLogicosCircuitoCompleto {
   static public void main(String[] args) {                                                                                             o
     Valores valores = new Valores();                                                                                                   l
     if ( (valores.getValor1() == 2) & (valores.getValor1() == 1) ) {                                                                   a
       System.out.println("( (valores.getValor1() == 2) & (valores.getValor1() == 1)                                                    .
 ) ? true");
     } else {                                                                                                                           b
       System.out.println("( (valores.getValor1() == 2) & (valores.getValor1() == 1)                                                    l
 ) ? false");                                                                                                                           o
     }
                                                                                                                                        g
     if ( (valores.getValor2() > 0) | (valores.getValor2() != 5) ) {                                                                    s
       System.out.println("( (valores.getValor2() > 0) | (valores.getValor2() != 5) )
 ? true");                                                                                                                              p
     } else {                                                                                                                           o
       System.out.println("( (valores.getValor2() > 0) | (valores.getValor2() != 5) )
 ? false");
                                                                                                                                        t
     }                                                                                                                                  .
   }                                                                                                                                    c
 }
                                                                                                                                        o
                                                                                                                                        m
                  Devuelvo el valor 1
                  Devuelvo el valor 1
                  ( (valores.getValor1() == 2) & (valores.getValor1() == 1) ) ? false
                  Devuelvo el valor 2
                  Devuelvo el valor 2
                  ( (valores.getValor2() > 0) | (valores.getValor2() != 5) ) ? true
13   Java World – Capítulo 4

                                                   Operadores lógicos ^ y ¡
h                                                  Estos operadores cumplen la unción de las siguientes compuertas:
t
t                                                         ¡ Not
p                                                         ^ Xor
:                                                  Not
/
                                                   El operador Not solo toma un término, y el resultado refleja el valor de
/
                                                   entrada invertido.
v
a                                                  Xor
l
          Lo que se viene
                                                   El operador Xor evalua dos términos. Si estos son diferentes, el resultado
o         En la proxima entrega estaremos          es true, de lo contrario es false.
r         adentrandonos en las sentencia para
c         control de flujo del programa.
r
e         Veremos las sentencias de condición y
a         bucles.
t
i         Nos adentraremos en el mundo de la
v         excepciones para saber como tratar los
o         errores en Java.
.
b         Veremos las afirmaciones, un mecanismo
l         que Java nos otorga para verificar
o         aquellas secciones de código que
g
          estamos seguros no deberían de fallar
s
          jamás.
p
o
          Esto y mucho más, en el próximo
t
          JavaWorld.
.
c
o
m
Java World – Capítulo 4       14

                                                                                                                                                 h
                                                                                                                                                 t
                                                                                                                                                 t
                                                                                                                                                 p
¿Que es JavaWorld para Valor Creativo?                                                                                                           :
                                                                                                                                                 /
Muchos de los visitantes de Valor Creativo provienen de la revista digital JavaWorld de Gustavo Alberola y Matias Álvarez.
                                                                                                                                                 /
Recientemente se agrego a la revista una nueva sección relacionado con la importancia de la creatividad en la industria del Software.
                                                                                                                                                 g
                                   JavaWorld es más bien un resumen, para gente de habla hispana, de un libro de más de 900                      u
                                   páginas totalmente en ingles (por ello serán 10 ediciones). El libro habla de programación en                 s
                                   lenguaje Java y esta orientado a programadores.                                                               t
                                   Valor Creativo se unió a la iniciativa y su objetivo es transformar este resumen en un revista                a
                                   creando, con el paso del tiempo, múltiples secciones relacionado con Java y el mundo de la
                                                                                                                                                 v
                                   Informática.
                                                                                                                                                 o
                                   Este proyecto llevo muchas horas de planificación antes del lanzamiento de la primera edición, con            a
                                   un simple objetivo realizar la revista lo mejor posible con los recursos disponibles.                         l
                                                                                                                                                 b
                                   Decisiones                                                                                                    e
                                                                                                                                                 r
Cuando empezamos a diagramar la revista surgio el problema de que los párrafos de doble columna eran incómodos a la vista por la
                                                                                                                                                 o
información que manejaban, de ahí nuestra primer decisión: realizar una Revista tipo Informe.
La segunda decisión era como llamarla había que darle un nombre y un logo, que más simple que el lema Java para todo el mundo,                   l
de aquí nació el mundo dentro de una taza.                                                                                                       a
                                                                                                                                                 .
                                                                                                                                                 b
                                                                                                                                                 l
                                                                                                                                                 o
                                                                                                                                                 g
                                                                                                                                                 s
                                                                                                                                                 p
                                                                                                                                                 o
                                                                                                                                                 t
                                                                                                                                                 .
                                                                                                                                                 c
                                                                                                                                                 o
                                                                                                                                                 m

La tercera decisión fue como proponer la revista que las personas sean atraídas a el, y nacen los lemas ¿Querés ser un SCJP? en el
portada, ¿Tenes lo que se necesita para serlo? en la contratapa -en un comentario personal cuando se pensó en estos lemas
simplemente nacieron por mi incapacidad de entender los temas de JavaWorld, la verdad es que no entendía nada y por ello el
desafío-.
La cuarta decisión fue muy importante debido a que la revista era gratuita y los costos de diseño son elevados, se decidió realizar
una plantilla única y mantenerla durante todas las ediciones. Fue muy difícil esta decisión porque si queremos algo prolijo tenemos
que respetar lo anterior y la idea es que las revistas sean coleccionables, por ello si ahora no nos gusta la letra, por ejemplo, será un
error que no se debe corregir.
15    Java World – Capítulo 4

         Resultados
h
t        A partir de todas nuestras decisiones se lanzo la primera edición.
t
         Nadie se esperaba el éxito de la revista tan pronto, y con mente fría se lanzo el segundo capitulo con mayor aceptación. A partir de
p
         la tercera edición se anexa la sección Valor Creativo con el fin de darles a los lectores herramientas para que agreguen valor a sus
:        trabajos intangibles.
/
/        Estamos muy contentos con todos los comentarios que nos dejan los usuarios, y ello nos motiva aún más a seguir adelante. Es un
v        esfuerzo en conjunto muy grande y que la gente lo valore y reconozco es nuestra recompensa.
a
         Seguiremos trabajando por más ediciones, y cualquier adhesión, apoyo o sugerencia es bien recibida.
l
o
         Saludos a todos y feliz año nuevo.
r
c
r
e
a
t
i
v
o
.
b
l
o
g
s
p
o
t
.
c
o
m
Operadores Java

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (16)

Conversion
ConversionConversion
Conversion
 
Funciones trigo uni
Funciones trigo uniFunciones trigo uni
Funciones trigo uni
 
Efs
EfsEfs
Efs
 
61405595 03 s-1-numeros-cuanticos
61405595 03 s-1-numeros-cuanticos61405595 03 s-1-numeros-cuanticos
61405595 03 s-1-numeros-cuanticos
 
E smicro2 s
E smicro2 sE smicro2 s
E smicro2 s
 
Poo
PooPoo
Poo
 
FUNCIONES
FUNCIONESFUNCIONES
FUNCIONES
 
Unidad 4 funciones reales de varias variables
Unidad 4 funciones reales de varias variablesUnidad 4 funciones reales de varias variables
Unidad 4 funciones reales de varias variables
 
Recursividad
RecursividadRecursividad
Recursividad
 
Modulo4
Modulo4Modulo4
Modulo4
 
Calculo negocios unidadiv_verano2011
Calculo negocios unidadiv_verano2011Calculo negocios unidadiv_verano2011
Calculo negocios unidadiv_verano2011
 
Estudio del espín mediante la notación de Dirac
Estudio del espín mediante la notación de DiracEstudio del espín mediante la notación de Dirac
Estudio del espín mediante la notación de Dirac
 
C ++ cuarto trabajo . -...
C ++ cuarto trabajo . -...C ++ cuarto trabajo . -...
C ++ cuarto trabajo . -...
 
El lenguaje de programacion c++ prev
El lenguaje de programacion c++ prevEl lenguaje de programacion c++ prev
El lenguaje de programacion c++ prev
 
Matematicas
MatematicasMatematicas
Matematicas
 
C ++ cuarto trabajo
C ++ cuarto trabajoC ++ cuarto trabajo
C ++ cuarto trabajo
 

Andere mochten auch (8)

JavaWorld - SCJP - Capitulo 1
JavaWorld - SCJP - Capitulo 1JavaWorld - SCJP - Capitulo 1
JavaWorld - SCJP - Capitulo 1
 
JavaWorld - SCJP - Capitulo 5
JavaWorld - SCJP - Capitulo 5JavaWorld - SCJP - Capitulo 5
JavaWorld - SCJP - Capitulo 5
 
JavaWorld - SCJP - Capitulo 6
JavaWorld - SCJP - Capitulo 6JavaWorld - SCJP - Capitulo 6
JavaWorld - SCJP - Capitulo 6
 
JavaWorld - SCJP - Capitulo 4
JavaWorld - SCJP - Capitulo 4JavaWorld - SCJP - Capitulo 4
JavaWorld - SCJP - Capitulo 4
 
JavaWorld - SCJP - Capitulo 3
JavaWorld - SCJP - Capitulo 3JavaWorld - SCJP - Capitulo 3
JavaWorld - SCJP - Capitulo 3
 
JavaWorld - SCJP - Capitulo 7
JavaWorld - SCJP - Capitulo 7JavaWorld - SCJP - Capitulo 7
JavaWorld - SCJP - Capitulo 7
 
JavaWorld - SCJP - Capitulo 2
JavaWorld - SCJP - Capitulo 2JavaWorld - SCJP - Capitulo 2
JavaWorld - SCJP - Capitulo 2
 
Capitulo 8 9-10
Capitulo 8 9-10Capitulo 8 9-10
Capitulo 8 9-10
 

Ähnlich wie Operadores Java

Ähnlich wie Operadores Java (9)

Elementos del lenguaje java
Elementos del lenguaje javaElementos del lenguaje java
Elementos del lenguaje java
 
Apuntadores
ApuntadoresApuntadores
Apuntadores
 
Introduccion c
Introduccion cIntroduccion c
Introduccion c
 
Actividad N° 7 - Unidad 4
Actividad N° 7 - Unidad 4 Actividad N° 7 - Unidad 4
Actividad N° 7 - Unidad 4
 
Certificación java 6 cap 3
Certificación java 6 cap 3Certificación java 6 cap 3
Certificación java 6 cap 3
 
Asignación n°4
Asignación n°4Asignación n°4
Asignación n°4
 
Tipo de operadores
Tipo de operadoresTipo de operadores
Tipo de operadores
 
Matrices Y Punteros - Sergio Cabello
Matrices Y Punteros - Sergio CabelloMatrices Y Punteros - Sergio Cabello
Matrices Y Punteros - Sergio Cabello
 
OPERADORES MATEMATICOS
OPERADORES MATEMATICOSOPERADORES MATEMATICOS
OPERADORES MATEMATICOS
 

Kürzlich hochgeladen

Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 

Kürzlich hochgeladen (20)

Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 

Operadores Java

  • 1.
  • 2. Java World – Capítulo 4 2 Operadores h Los operadores son aquellos elementos que producen un resultado realizando operaciones con uno o varios operandos (estos son t los elementos que se encuentran a la izquierda y derecha del operador). t Operadores de asignación p El operador de asignación es el =. Algunos conceptos a tener en cuenta: : / Cuando se le asigna un valor a una primitiva, el tamaño si importa. (Es importante saber cuando ocurrirá un casteo / implícito, explícito, y cuando se trunca el valor). Una variable de referencia no es un objeto, es una manera de obtener el objeto al que hace referencia. g Cuando se asigna un valor a una referencia, el tipo importa. (Es importante saber las reglas para superclases, subclases, y u arrays). s t Operadores de asignación compuestos a Actualmente, existen alrededor de 11 operadores de asignación compuestos, pero en el examen solo aparecerán los 4 más comunes v (+=, -=, *=, /=) se encuentran en el examen. o Pero, que es un operador de asignación compuesto? a Simplemente, es una manera abreviada de realizar una operación con el valor de la variable en donde se asigna el resultado con otro l b int a = 2; a = a * 3; e r //Diferente sintaxis, mismo significado. int a = 2; o a *= 3; l conjunto. Veamos un ejemplo: a . int a = 2; int b = 3; b int c = 5; l a = a * ( b + c ); o g //Diferente sintaxis, mismo significado. int a = 2; s int b = 3; p int c = 5; o a *= b + c; t A simple vista, parece sencillo, pero no hay que confundirse. El operador de asignación compuesto se refleja en realizar una . opeación con el resultado de todo lo que se encuentra luego del igual. Veamos un ejemplo: c o Es posible confundirse con esto, creyendo que la operación fuera “ ( a * b ) + c”, pero reitero, el operador de asignación compuesto m realiza los siguientes pasos: 1. Realiza todas las operaciones contenidas a la derecha del operador de asignación (=). 2. Realiza la operación compuesta (Multiplicar, Dividir, Sumar, Restar, ...). 3. Asigna el valor de la operación a la variable. Operadores relacionales El examen cubre sies operadores relaciones (<, <=, >, >=, == y ¡=). Los operadores relacionales siempre producen como resultado un valor de tipo boolean. Los operadures se traducen como:
  • 3. 3 Java World – Capítulo 4 < menor que h <= menor o igual que t > mayor que t >= mayor o igual que == igual que p ¡= distinto de : / Es muy común ver en una comparación un operador =. Esto es una asignación, no un operador relacional. / Como dijimos, estos tipos de operadores devuelven un valor boolean, asi que pueden ser utilizados en v sentencias condicionales (if, else, while), como ser asignados a una variable. a Veamos algunos ejemplos: l o int x = 7; r if ( x < 9 ) { c //Codigo ... } else { r //Codigo ... e } //Entra en el if a t boolean a = 100 > 90; if ( a ) { i //Codigo ... v } else { o //Codigo ... } . //Entra en el else b l o Ahora, veamos un ejemplo un poco más complicado: g s int x = 12; if ( (x = 2 * 3 ) == 6 ) { p //Codigo ... o } else { //Codigo ... t } . En este código, se ejecuta el if. c Los pasos que realizó el programa fueron: o 1. Realizar la operación “2 * 3”. 2. Asignar el resultado de la operación anterior a x. m 3. Comparar el valor de x con el literal 6. Vuelvo a recalcar la importancia de entender la diferencia entre = e ==, y saber identificar cuando podría haber un posible error. Quiero mostrar otro ejemplo, en donde se aprecia aun más la importancia de detectar las diferencias entre dichos operadores: boolean x = false; if ( x = true ) { //Codigo ... } else { //Codigo ... } El resultado de el código anterior ejecuta el código dentro del if. ¿Cómo? Simple:
  • 4. Java World – Capítulo 4 4 1. x es false. 2. Dentro de la condición, se asigna true a x. h 3. Se evalua x (este ahora vale true). t Hay que recordar que una sentencia de condición, en Java, solo evalua los tipos boolean. Es válido asignar t un valor a una variable dentro de una condición, pero si el tipo de dato almacenado no es de tipo boolean, p se generará un error de compilación. De manera que una sentencia como “if ( x = 9 )” generará un error de : compilación. / No es lo mismo que: / boolean x = false; g u if ( x == true ) { s //Codigo ... } else { t //Codigo ... a } v o En este código se ejecuta el else. También es posible realizar una comparación como: a char a = 7; l if ( a < 'g' ) { b //Codigo ... } else if ( a < 16 ) { e //Codigo ... r } o l Cuando se compara un valor de tipo char, se utiliza el valor unicode del caracter. a Operadores de igualdad . Los operadores de igualdad son: b l == Igual que ¡= Distinto de o g Estos operadores solo comparan el patrón de bits. Esto es importante dado que en una variable de tipo referencia, el valor es la s posición de memoria donde se encuentra el objeto. p Igualdad en primitivas o Algunos ejemplos: t . 'a' == 'a' //TRUE 'a' == 'b' //FALSE c 7 != 9 //TRUE o 1.0 == 1L //TRUE (se realiza un casteo implícito) true == false //FALSE m
  • 5. 5 Java World – Capítulo 4 Igualdad en variables de tipo referencia h Cuando se compara una referencia con los operadores de igualdad, solo se compara el objeto al que referencian (el valor de la t variable es la dirección de memoria en donde se encuentra el objeto realmente). t class Simple { p int x; : Simple(int x){ this.x = x; } } / / public static void main(String[] args) { Simple obj_1 = new Simple(16); v Simple obj_2 = new Simple(16); a Simple obj_3 = obj_1; l System.out.println("Objeto 1 es igual a objeto 2? " + (obj_1 == obj_2)); o System.out.println("Objeto 1 es igual a objeto 3? " + (obj_1 == obj_3)); r } c r e Objeto 1 es igual a objeto 2? False a Objeto 1 es igual a objeto 3? True t i A pesar de que el único atributo que tiene el objeto Simple es igual en obj_1 como en obj_2, su comparación de igualdad da false. Vamos a hacerlo un poco más gráfico para dejar este importante concepto bien en claro. v o Obj_1 Obj_2 Obj_3 . Variables 0x0000F0 0x0000A9 0x0000F0 b l o g s Memoria 16 16 p o 0x0000F0 0x0000A9 t . c En el gráfico podemos apreciar facilmente el porque la comparación entre obj_1 y obj_2 fallo, cuando entre obj_1 y obj_3 fue exitosa. Más alla de que obj_1 y obj_2 contentan su único atributo con el mismo valor. o m Igualdad en enumeradores Se aplica la política de variables de referencia. Al final, un enumerador es un objeto. Comparación con instanceof El operador instanceof devuelve un valor de tipo boolean, que indica si el objeto Es-Un objeto del tipo especificado (o subtipo). También aplica a interfaces, cuando el objeto Implementa una interfaz especificada (o alguna de sus superclases la implementa). El operador instanceof solo funciona para comparar tipos que se encuentren en el mismo árbol de herencia.
  • 6. Java World – Capítulo 4 6 Veamos un ejemplo de esto: h interface Dibujable {} class Triangulo implements Dibujable {} t class Cuadrado extends Triangulo {} t class Circulo implements Dibujable {} p : Tipo Se puede comparar con No se puede comparar con / null Cualquier clase o interface - / Dibujable Dibujable – Object – Circulo – Triangulo – Cuadrado - Circulo Circulo – Dibujable – Object Triangulo – Cuadrado g Triangulo Cuadrado – Triangulo – Dibujable – Object Circulo u Cuadrado Cuadrado – Triangulo – Dibujable – Object Circulo s http://thechroniclesofbinary.googlecode.com/files/ejemploInstanceof.java t Para compilarlo: Javac -g ejemploInstanceof.java a Para ejecutarlo: java ejemploInstanceof v Operadores aritméticos o a No hay mucho que decir acerca de estos, salvo que todos los utilizamos. l El operador de resto b Cualdo realizamos una operación de división, existe un resto. Este valor puede ser obtenido a partir del operador %. e r public class ejemploResto { o static public void main(String[] arg) { l System.out.println("9 dividido 2 es " + (9 / 2) + ". Y el resto es " + (9 % 2)); } a } . Un ejemplo del operador: b l o 9 dividido 2 es 4. Y el resto es 1. g s p El operador de concatenación o t El operador + también puede ser utilizado para concatenar cadenas de caracteres. La regla para saber cuando se comporta como suma y cuando como concatenación es simple: Si alguno de los dos valores es un . String, el + funciona como concatenador. c Algunos ejemplos: o System.out.println(67 + 45 + 9); //121 m System.out.println(67 + 45 + " - valores" + 67 + 45); //112 – valores6745 System.out.println("hola" + " " + "mundo"); //hola mundo
  • 7. 7 Java World – Capítulo 4 Operadores de incremento y decremento h Estos operadores sirven para incrementar o decrementar en 1 el valor de cualquier variable numérica. t http://thechroniclesofbinary.googlecode.com/files/ejemploOperadoresIncrementoDecremento.java t Para compilarlo: Javac -g ejemploOperadoresIncrementoDecremento.java p Para ejecutarlo: java ejemploOperadoresIncrementoDecremento : En el ejemplo se puede ver como el operador de incremento y decremento es aplicado a todos los valores de tipo numérico, y como / funciona el de preincremento y posincremento. / v a Existe una gran diferencia entre los operadores de preincremento y posincremento. l o r Preincremento ++variable Antes de realizar cualquier acción, el valor de la variable es incrementado en 1. Luego c continúa con la lógica. r Posincremento variable++ Primero realiza la lógica, y al finalizar incrementa el valor de la variable en 1. e a Veamos un ejemplo: t int x; i x = 0; v System.out.println(x++ + 6); //6 o System.out.println(x); //7 . x = 0; b System.out.println(++x + 6); //7 System.out.println(x); //7 l o Hay que tener cuidado en codigos de condición complejos, veamos algunos ejemplos: g http://thechroniclesofbinary.googlecode.com/files/ejemploIncrementoDecrementoCondicionales.java s Para compilarlo: Javac -g ejemploIncrementoDecrementoCondicionales.java p Para ejecutarlo: java ejemploIncrementoDecrementoCondicionales o t . c o m
  • 8. Java World – Capítulo 4 8 int x, y, z; h x = 0;y = 2;z = 2; t if ( (x++ == y) || (z == ++y) ){ System.out.println("( (x++ == y) || (z == ++y) ) ? true"); t } else { p System.out.println("( (x++ == y) || (z == ++y) ) ? false"); } : //Resultado: false / / x = 0; if ( (x++ == ++x) ) { g System.out.println("( (x++ == ++x) ) ? true"); u } else { System.out.println("( (x++ == ++x) ) ? false"); s } t //Resultado: false a x = 0; v if ( (++x == x++) ) { o System.out.println("( (++x == x++) ) ? true"); } else { a System.out.println("( (++x == x++) ) ? false"); l } //Resultado: true b e x = 0;y = 1;z = 2; if ( (--z > y) && (x == z) ) { r System.out.println("( (--z > y) && (++x < z) ) ? true"); o } else { l System.out.println("( (--z > y) && (++x < z) ) ? false"); } a //Resultado: false . x = 2;y = 1;z = 2; b if ( (--z > y) && (x > z) ) { l System.out.println("( (--z > y) && (x > z) ) ? true"); } else { o System.out.println("( (--z > y) && (x > z) ) ? false"); g } s //Resultado: false p o Veamos a fondo uno por uno: t x = 0;y = 2;z = 2; . if ( (x++ == y) || (z == ++y) ){ //... c ( (0 == 2) || (2 == 3) ) //false || false o m x = 0; if ( (x++ == ++x) ) { //... ( (0 == 1) ) //false
  • 9. 9 Java World – Capítulo 4 h x = 0; if ( (++x == x++) ) { //... t t ( (1 == 1) ) //true p : x = 2;y = 1;z = 2; / if ( (--z > y) && (x > z) ) { //... / ( (1 > 1) && (2 > 1) ) ) //false && true v a l Operador condicional o Este operador requiere tres términos, y es utilizado para la asignación de valores a una variable. r Su funcionamiento es similar al de un if, verifica una condición, y si esta es true asigna un valor, caso contrario asigna la otra. c Ejemplo de la sintaxis: r variable = (expresion booleana) ? valor a asignar si la condicion fue true : valor a e asignar si la condicion fue false; a int x; t x = ( true ) ? 1 : 2; //x ahora contiene el valor 1 i x = ( false ) ? 1 : 2; //x ahora contiene el valor 2 v o . Hay que recordar que los operadores lógicos solo funcionan con valores de tipo boolean, salvo aquellos b que se utilizan a nivel de bits. l o g s p o t . c o m
  • 10. Java World – Capítulo 4 10 Operadores lógicos h Los operadores lógicos necesarios para el examen son: &, |, ^, ¡, && y ||. t Operadores lógicos sobre bits (no entra en el examen) t Los siguientes operadores &, | y ^ pueden utilizarse en diferentes situaciones, una de ellas es para comparación a nivel de bits. Estos p fueron incluidos en versiones de examenes previas, pero para nuestra versión, no son necesarios. : / byte b01 = 5 & 15; //Compuerta AND / /* 0 0 1 0 1 - 5 g 0 1 1 1 1 - 15 u ---------- s 0 0 1 0 1 - 5 */ t a byte b02 = 3 | 8; //Compuerta OR /* v 0 0 0 1 1 - 3 o 0 1 0 0 0 - 8 ---------- a 0 1 0 1 1 - 11 l */ b byte b03 = 29 ^ 11; //Compuerta XOR e /* r 1 1 1 0 1 - 29 0 1 0 1 1 - 11 o ---------- l 1 0 1 1 0 - 21 */ a . b l o Si deseas comprender un poco más acerca del funcionamiento de las operaciones lógicas con compuertas en código binario, puedes buscar en internet por el nombre de las mismas (AND, OR, XOR). g s p o t . c o m
  • 11. 11 Java World – Capítulo 4 Operadores lógicos de circuito corto h Estos son: t t && AND de circuito corto p || OR de circuito corto : Pero, ¿por qué de circuito corto? / Se denominan de esta manera porque cuando se evalua una expresión, si la primer evaluación hace que la condición no se cumpla / no se evalua la siguiente. v Veamos algunos ejemplos: a class Valores { l public int getValor1() { System.out.println("Devuelvo el valor 1"); o return 1; r } c public int getValor2() { r System.out.println("Devuelvo el valor 2"); e return 2; } a } t public class ejemploOperadoresLogicosCircuitoCorto { i static public void main(String[] args) { v Valores valores = new Valores(); o if ( (valores.getValor1() == 2) && (valores.getValor1() == 1) ) { . System.out.println("( (valores.getValor1() == 2) && (valores.getValor1() == b 1) ) ? true"); } else { l System.out.println("( (valores.getValor1() == 2) && (valores.getValor1() == o 1) ) ? false"); } g s if ( (valores.getValor2() > 0) || (valores.getValor2() != 5) ) { System.out.println("( (valores.getValor2() > 0) || (valores.getValor2() != p 5) ) ? true"); o } else { t System.out.println("( (valores.getValor2() > 0) || (valores.getValor2() != 5) ) ? false"); . } c } } o m Devuelvo el valor 1 ( (valores.getValor1() == 2) && (valores.getValor1() == 1) ) ? false Devuelvo el valor 2 ( (valores.getValor2() > 0) || (valores.getValor2() != 5) ) ? true Como se puede apreciar, en los dos casos, al evaluar la primer condición no es necesario evaluar la segunda, de manera que esta última, directamente es obviada.
  • 12. Java World – Capítulo 4 12 Operadores lógicos de circuito completo h Estos son: t | t & p : Al contrario de los de circuito corto, estos siempre evaluan todas las condiciones, por más que ya se conozca de antemano el resultado de la operación lógica (estos operadores son ineficientes). / Veamos el ejemplo con los operadores de circuito completo: / g u A diferencia de los operadores lógicos de circuito corto, vemos como se verifica la segunda condición. s class Valores { t public int getValor1() { a System.out.println("Devuelvo el valor 1"); return 1; v } o public int getValor2() { a System.out.println("Devuelvo el valor 2"); l return 2; } b } e r public class ejemploOperadoresLogicosCircuitoCompleto { static public void main(String[] args) { o Valores valores = new Valores(); l if ( (valores.getValor1() == 2) & (valores.getValor1() == 1) ) { a System.out.println("( (valores.getValor1() == 2) & (valores.getValor1() == 1) . ) ? true"); } else { b System.out.println("( (valores.getValor1() == 2) & (valores.getValor1() == 1) l ) ? false"); o } g if ( (valores.getValor2() > 0) | (valores.getValor2() != 5) ) { s System.out.println("( (valores.getValor2() > 0) | (valores.getValor2() != 5) ) ? true"); p } else { o System.out.println("( (valores.getValor2() > 0) | (valores.getValor2() != 5) ) ? false"); t } . } c } o m Devuelvo el valor 1 Devuelvo el valor 1 ( (valores.getValor1() == 2) & (valores.getValor1() == 1) ) ? false Devuelvo el valor 2 Devuelvo el valor 2 ( (valores.getValor2() > 0) | (valores.getValor2() != 5) ) ? true
  • 13. 13 Java World – Capítulo 4 Operadores lógicos ^ y ¡ h Estos operadores cumplen la unción de las siguientes compuertas: t t ¡ Not p ^ Xor : Not / El operador Not solo toma un término, y el resultado refleja el valor de / entrada invertido. v a Xor l Lo que se viene El operador Xor evalua dos términos. Si estos son diferentes, el resultado o En la proxima entrega estaremos es true, de lo contrario es false. r adentrandonos en las sentencia para c control de flujo del programa. r e Veremos las sentencias de condición y a bucles. t i Nos adentraremos en el mundo de la v excepciones para saber como tratar los o errores en Java. . b Veremos las afirmaciones, un mecanismo l que Java nos otorga para verificar o aquellas secciones de código que g estamos seguros no deberían de fallar s jamás. p o Esto y mucho más, en el próximo t JavaWorld. . c o m
  • 14. Java World – Capítulo 4 14 h t t p ¿Que es JavaWorld para Valor Creativo? : / Muchos de los visitantes de Valor Creativo provienen de la revista digital JavaWorld de Gustavo Alberola y Matias Álvarez. / Recientemente se agrego a la revista una nueva sección relacionado con la importancia de la creatividad en la industria del Software. g JavaWorld es más bien un resumen, para gente de habla hispana, de un libro de más de 900 u páginas totalmente en ingles (por ello serán 10 ediciones). El libro habla de programación en s lenguaje Java y esta orientado a programadores. t Valor Creativo se unió a la iniciativa y su objetivo es transformar este resumen en un revista a creando, con el paso del tiempo, múltiples secciones relacionado con Java y el mundo de la v Informática. o Este proyecto llevo muchas horas de planificación antes del lanzamiento de la primera edición, con a un simple objetivo realizar la revista lo mejor posible con los recursos disponibles. l b Decisiones e r Cuando empezamos a diagramar la revista surgio el problema de que los párrafos de doble columna eran incómodos a la vista por la o información que manejaban, de ahí nuestra primer decisión: realizar una Revista tipo Informe. La segunda decisión era como llamarla había que darle un nombre y un logo, que más simple que el lema Java para todo el mundo, l de aquí nació el mundo dentro de una taza. a . b l o g s p o t . c o m La tercera decisión fue como proponer la revista que las personas sean atraídas a el, y nacen los lemas ¿Querés ser un SCJP? en el portada, ¿Tenes lo que se necesita para serlo? en la contratapa -en un comentario personal cuando se pensó en estos lemas simplemente nacieron por mi incapacidad de entender los temas de JavaWorld, la verdad es que no entendía nada y por ello el desafío-. La cuarta decisión fue muy importante debido a que la revista era gratuita y los costos de diseño son elevados, se decidió realizar una plantilla única y mantenerla durante todas las ediciones. Fue muy difícil esta decisión porque si queremos algo prolijo tenemos que respetar lo anterior y la idea es que las revistas sean coleccionables, por ello si ahora no nos gusta la letra, por ejemplo, será un error que no se debe corregir.
  • 15. 15 Java World – Capítulo 4 Resultados h t A partir de todas nuestras decisiones se lanzo la primera edición. t Nadie se esperaba el éxito de la revista tan pronto, y con mente fría se lanzo el segundo capitulo con mayor aceptación. A partir de p la tercera edición se anexa la sección Valor Creativo con el fin de darles a los lectores herramientas para que agreguen valor a sus : trabajos intangibles. / / Estamos muy contentos con todos los comentarios que nos dejan los usuarios, y ello nos motiva aún más a seguir adelante. Es un v esfuerzo en conjunto muy grande y que la gente lo valore y reconozco es nuestra recompensa. a Seguiremos trabajando por más ediciones, y cualquier adhesión, apoyo o sugerencia es bien recibida. l o Saludos a todos y feliz año nuevo. r c r e a t i v o . b l o g s p o t . c o m