SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

Mais procurados (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
 

Destaque (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
 

Semelhante a Operadores Java

Semelhante a 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
 

Último

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Último (15)

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

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