RSS

Los Operadores en Java (II)

04 Nov

Operador Resto: %

Devuelve el resto de una división.

class Resto{
    public static void main (String[] args){
        int dividendo = 15;
        int divisor = 2;
        int resto = dividendo % divisor;
        System.out.println("Resto: " + resto);

        int expresion = 3 + dividendo % divisor;
        System.out.println("Expresion: " + expresion);
    }
}

Hay que recordar que los operadores *, /, % tienen una prioridad mayor que los operadores + y -, como se puede comprobar en el ejemplo.

Recordamos también que las expresiones se evalúan por defecto de izquierda a derecha y que para cambiar la prioridad en las evaluaciones se pueden utilizar paréntesis.


Operador Concatenador: +
Con este operador se realiza una concatenación de objetos String y resulta en un nuevo objeto String.

String sujeto = "Ellos";
String predicado = "estudiaban Java";
String frase = sujeto + " " + predicado;
System.out.println(frase); //Devuelve "

Si uno de los argumentos del operador + es String el otro argumento se convierte en objeto String.

Por ejemplo, entre números y String:

class PruebaConcatenador{
    public static void main (String[] args){
        String nombre = "Virginia";
        int a = 10;
        int b = 20;

        System.out.println(nombre + a + b);
        System.out.println(a + b + nombre);
        System.out.println(a + b + nombre + a + b);
    }
}

Devolvería:

Todos los objetos pueden convertirse en objeto String de forma automática, pero el resultado puede tener poco significado. Es por esto que para dar una representación significativa de un objeto en String se suele sobrecargar el método toString().


Operadores de Incremento y Decremento: ++, —
Estos operadores se pueden colocar delante de la variable (notación prefjia) o después de la variable (notación sufija) y realizan un incremento o decremento en 1 en el valor de la variable.

Cuando tenemos la notación prefija (++i ó –i), primero se realiza el aumento o decremento en el valor y luego se evalúa.
Cuando tenemos la notaciión sufija (i++ ó i–), primero se evalúa y luego se realiza el aumento o decremento en el valor.

Por ejemplo:

class OperadoresIncrDecr{
    public static void main (String[] args){
        int a = 10;
        int b = 10;
        System.out.println("a++: " + a++); //1º Evalua con a y luego la incrementa.
        System.out.println("++b: " + ++b); //1º Incrementa y luego evalua con el nuevo valor.

        System.out.println(a); //Comprobamos que el valor se ha incrementado.
        System.out.println(b); //Comprobamos que el valor se ha incrementado.
    }
}

Devuelve:


Operador Condicional: ?:
El siguiente operador evalúa una condición y asigna un valor si es verdadera u otro valor si es falsa.

x = (expresion logica) ? valorSiVerdadero : valorSiFalso

Por ejemplo:

int nota = 80;
String resultado = (nota >= 65)? "Aprobado!!!" : "Suspenso";



Operadores Lógicos: &, |, &&, ||, ^, !

& y | son los operadores And y Or lógicos. Evalúan siempre ambas condiciones. No tienen evaluación perezosa.

&& y || son los operadores And y Or lógicos con evaluación perezosa.
Quiere decir que si pueden dar el resultado evaluando solo la primera condición no evaluarán la segunda.

Esto se da cuando:

  • La primera condición en || es cierta, independientemente de la segunda condición el resultado ya es cierto.
  • La primera condición en && es falsa, independientemente de la segunda condición el resultado es falso.

Un ejemplo con operadores de incremento para comprobar los diferentes resultados que podemos obtener si usamos un operador con evaluación normal o perezosa:

class Logicos{
    public static void main (String[] args){
        int a = 0; //Valores para operadores &, |
        int b = 5;
        int c = 0; //Valores para operadores perezosos &&, ||
        int d = 5;

        if ( a == 0 | b++ > 2) //Evalúa las dos condiciones y b se incrementa.
        {    System.out.println("Cierto (a==0 |  b++ > 2)-> a: " + a + " b: " + b);  }

        if (c == 0 || d++ > 2) //Evalúa solo la 1ª condición al ser cierta (c==0), b no incrementa.
        {    System.out.println("Cierto (c==0 || d++ > 2)-> c: " + c + " d: " + d);  }

        System.out.println();

        if (a > 0 & b++ < 5) //Evalúa las dos condiciones, b se incrementa de nuevo.
        {  }
        else
        {    System.out.println("Falso (a>0 &  b++  a: " + a + " b: " + b);  }

        if (c > 0 && d++ < 5) //Evalúa solo la 1ª condición por ser falsa (c > 0), d no incrementa.
        {    }
        else
        {    System.out.println("Falso (c>0 && d++ <5) -> c: " + c + " d: " + d);  }
    }
}

Devuelve:

^ es el operador Xor. Devueve cierto cuando una de las condiciones es falsa y la otra verdadera.
Siempre evalúa ambos operandos.

! es el operador Not. Si la condición es cierta devuelve falso y si es falsa devuelve cierto.
Con esto terminamos el tema de Operadores.
Recordaros que los operadores de desplazamiento de bits no entran en el examen para la versión 6. Os podéis encontrar preguntas sobre desplazamiento de bits en cuestionarios por ser de versiones anteriores.

En este post tenéis algunos ejercicios resueltos sobre Operadores.

Anuncios
 
6 comentarios

Publicado por en 4 noviembre, 2011 en Tema4

 

Etiquetas: , , , , , , , , ,

6 Respuestas a “Los Operadores en Java (II)

  1. Harold

    10 noviembre, 2011 at 7:11 pm

    Hola Virginia, muchas gracias por tu trabajo que nos ayuda y nos reconforta en este camino nada sencillo.Soy seguidor del blog y aquí he encontrado contenido muy claro y muy organizado.

    Quería preguntarte, ¿será mejor hacer el examen en ingles ó en español ?, Gracias:)

     
    • Virginia Lopez

      10 noviembre, 2011 at 7:55 pm

      Hola Harold!
      Pues muchísimas gracias, yo encantada de poder ayudar!

      En cuanto a tu pregunta sobre el idioma del examen, la verdad es que no me lo había ni planteado! Creo que he dado por hecho que lo iba a hacer en español…
      En mi caso yo estoy comoda con el inglés y al estudiar y hacer tests en inglés pues ya estoy acostumbrada al vocabulario que puede salir y no creo que afectara al resultado hacerlo en uno un otro idioma. Otras personas a lo mejor ni se lo plantean porque les supone más esfuerzo… Ya depende de cada uno.
      En cuanto a la dificultad del examen no creo que haya ninguna diferencia entre hacerlo en inglés o en español.

      De todas formas voy a preguntar a gente que conozco que lo han hecho ya a ver qué eligieron ellos y ya te vuelvo a contestar.
      Un saludo!!

       
  2. Virginia Lopez

    9 noviembre, 2011 at 7:50 pm

    Hola Ariel!
    Si no se tiene demasiado tiempo para estudiar hace falta mucha voluntad y constancia. El blog me ayuda a tener “cierta” constancia. Además como veo que sirve a otros compañeros pues me anima más.

    Pongo tu enlace en el post de Libros.

    Muchas gracias!! Un saludo!

     
  3. ariel

    9 noviembre, 2011 at 6:44 pm

    Hola Virginia, al igual que Juan te felicito por tú gran aporte, se que no es fácil por el tiempo que se necesita invertir.
    Además quiero agregar un enlace que encontré con practicas para el examen http://code.google.com/p/arthaapps/downloads/detail?name=OCP%2BJava%2BSE%2B6%2BProgrammer%2BPractice%2BExams.pdf.

    Saludos,

     
  4. Virginia Lopez

    8 noviembre, 2011 at 10:00 pm

    Hola Juan!
    Pues muchas gracias por pasarte por aquí tan a menudo 🙂 Sabiéndolo intentaré que no pase tanto tiempo de una publicación a otra 😀

    Yo también sigo ese manual que mencionas, el de Kathy Sierra y Bern Bates, es simplemente genial. Al final me lo he comprado y todo! (en Amazon.uk 21 libras). Y el de exámenes lo tengo también, muchas gracias, lo estoy dejando para cuando me acabe todos los temas del de teoría.

    Eso sí, la página de JavaCertified en Facebook no la conocía y el enlace que me has puesto para realizar la prueba de nivel tampoco! Viene de perlas… Lo añadiré en los recursos.

    Yo la web que suelo usar es http://scjptest.com/ para hacer algún test de vez en cuando. Pero me apunto CertPal porque no la he probado…

    Y nada, te cuento, en general con la certificación voy más lenta de lo que a mí me gustaría. Muchas tardes después de trabajar me cuesta ponerme un montón… Este fin de semana he acabado el Tema 5. Publicaré algunos posts pronto en plan resumen, y a ver si puedo dar un empujón y acabar con el resto de temas pronto… pero esto lo llevo diciendo unos pocos de meses!!

    En fin, con constancia seguro que cae!! Y otra vez gracias por los enlaces y las visitas!

    Un saludo.

     
  5. Juan

    8 noviembre, 2011 at 9:18 pm

    Hola, me llamo Juan y me estoy preparando el OCJP , suelo entrar todos los dias a tu blog por si has escrito una nueva entrada jejeje , quería felicitarte por el blog, es muy ordenado y las explicaciones por ejemplo del widewing y del boxing/unboxing cuando se llama a métodos sobrecargados me sirvieron de mucho para aclararme con todo ese tema.

    Respecto al exámen ¿Como lo llevas? (si me permites la indiscrección jejej) Yo utilizo mucho CERTPAL, suelo leer blogs de java (como el tuyo) y a parte como manual imprescindible tengo el SCJP Sun Certified Programmer for Java 6. He conseguido el OCP Java SE 6 Programmer Practice Exams en pdf así que si quieres te los paso.

    Quizá también te interese este enlace, con él puedes conseguir una especie de examen de prueba supongo que con el mismo nivel que el oficial. Me ha sido de ayuda para comprobar mi nivel.

    Lo encontré aquí http://www.facebook.com/javacertifiedprofessional

    El enlace es este:
    http://www.oracle.com/webapps/dialogue/ns/dlgwelcome.jsp?p_ext=Y&p_dlg_id=10154592&src=7300552&Act=21

    Bueno espero haberte aportado algo que te sirva!!!
    Un saludo y enhorabuena por el blog!

     

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: