Operadores unarios en Java

OTUS lanzará mañana un nuevo programa profesional de preparación para la certificación Oracle Java Programmer (OCAJP) . Lo invitamos a ver el registro de la lección de demostración gratuita "Tipos de datos de Java: identificadores y primitivos" y continuar publicando una serie de artículos de Vladislav Rodin, el jefe del grupo de desarrollo, profesor en MIPT y foxminded.





Introducción



La certificación OCA (Oracle Certified Associate Java SE8 Programmer) ofrece una serie de asignaciones extravagantes que prueban una comprensión profunda de cómo funciona el lenguaje de programación Java. Todo el bloque está dedicado a expresiones, bucles y operadores. Hablaremos de esto último hoy.



Prioridad del operador



El operador acepta argumentos como entrada y devuelve algunos valores. Hay operadores unarios, binarios y ternarios. Por ejemplo ,! False es unario, a + b es binario y? : - es el único operador que toma tres argumentos.



Lo primero que debe recordar es la precedencia de los operadores:



  1. Operadores post-unarios: excepción ++ y excepción--
  2. Operadores preunarios: ++ excepción y --excepción
  3. El resto de operadores unarios: +, - ,!
  4. Multiplicación, división, tomando el resto: *, /,%
  5. Suma y resta: +, -
  6. Operadores de desplazamiento de bits: <<, >>, >>>
  7. Operadores de comparación: <,>, <=,> =, instancia de
  8. Operadores de igualdad-desigualdad: == ,! =
  9. Operadores lógicos: &, |, ^
  10. Operadores lógicos de cortocircuito: &&, ||
  11. Operador ternario: ¿expresión booleana? expression1: expre-

    sion2
  12. Operadores de asignación: =, + =, - =, * =, / =,% =, & =, ^ = ,! =, << =, >> =, >>> =


Trabajando con operadores unarios



Hablamos de operadores binarios la última vez. Hoy discutiremos los operadores unarios, que se desprende del título del artículo. En el examen, pueden ofrecer expresiones bastante complejas para cuyo cálculo debe recordar el orden de su ejecución.



Operadores de cambio de signo e inversión lógica



Operador lógico inverso ! se aplica solo a variables de tipo booleano y convierte el valor de verdadero a falso y viceversa. Por ejemplo:



boolean x = false;
System.out.println(x); // false
x = !x;
System.out.println(x); // true


Operador de cambio de signo : se aplica solo a números e invierte el signo:



double x = 1.21;
System.out.println(x); // 1.21
x = -x;
System.out.println(x); // -1.21
x = -x;
System.out.println(x); // 1.21


Java, a diferencia de la misma C, separa claramente los tipos de datos enteros y los booleanos y, por lo tanto, el uso del operador de cambio de signo a booleano o el uso del operador de inversión lógica conduce a errores de compilación:



int x = !5; // DOES NOT COMPILE
boolean y = -true; // DOES NOT COMPILE
boolean z = !0; // DOES NOT COMPILE


Operadores de incremento y decremento



Los operadores de incremento ++ y decremento se aplican a variables enteras y tienen dos variaciones: postincremento (decremento) y preincremento (decremento), en el código i ++ (i--) y ++ i (--i), respectivamente. La diferencia entre las variaciones es que ++ i incrementa la variable y devuelve el nuevo valor, mientras que i ++ devuelve el valor anterior y solo entonces incrementa la variable. La diferencia se puede ver más claramente en este código:



int counter = 0;
System.out.println(counter); // Outputs 0
System.out.println(++counter); // Outputs 1
System.out.println(counter); // Outputs 1
System.out.println(counter--); // Outputs 1
System.out.println(counter); // Outputs 0


En el examen, se pueden ofrecer varias tareas complicadas, donde dichos operadores son un vagón y un carrito pequeño. Por ejemplo, se puede ofrecer una tarea de este tipo.



¿Qué se mostrará como resultado de este programa?

int x = 3;
int y = ++x * 5 / x-- + --x;
System.out.println("x is " + x);
System.out.println("y is " + y);


El problema es que x cambia varias veces en la misma línea.



Para resolver tales problemas, puede analizar la expresión de izquierda a derecha, sustituyendo en la expresión lo que devuelven los operadores y fijando por separado el valor de la variable que se está cambiando. Por ejemplo, así:



int y = 4 * 5 / x-- + --x; // x assigned value of 4
int y = 4 * 5 / 4 + --x; // x assigned value of 3
int y = 4 * 5 / 4 + 2; // x assigned value of 2


Como puede ver, se aplican todas las reglas anteriores para aplicar operadores. El resultado será el siguiente:



x is 2
y is 7


Lee mas








All Articles