Operadores de Java

Uno de los propósitos más básicos de una computadora es realizar operaciones matemáticas. Como lenguaje de computadora, Java también proporciona un rico conjunto de operadores para manipular variables. Podemos dividir los operadores en los siguientes grupos:

  • Operadores aritméticos
  • Operadores relacionales
  • Operadores de bits
  • Operadores lógicos
  • Operadores de asignación
  • Otros operadores

Operadores aritméticos

Los operadores aritméticos se usan en expresiones matemáticas, y su función es la misma que en matemáticas. La siguiente tabla enumera todos los operadores aritméticos.

En los ejemplos de la tabla se supone que la variable entera A vale 10 y la variable B vale 20:

Operador Descripción Ejemplo
+ Suma - suma los valores a ambos lados del operador A + B es igual a 30
- Resta - resta el operando derecho del operando izquierdo A - B es igual a -10
* Multiplicación - multiplica los valores a ambos lados del operador A * B es igual a 200
/ División - divide el operando izquierdo por el operando derecho B / A es igual a 2
% Módulo - el resto de dividir el operando izquierdo entre el operando derecho B % A es igual a 0
++ Incremento: aumenta el valor del operando en 1 B++ o ++B es igual a 21 (la diferencia se explica más adelante)
-- Decremento: disminuye el valor del operando en 1 B-- o --B es igual a 19 (la diferencia se explica más adelante)

Ejemplo

El siguiente programa de ejemplo sencillo demuestra los operadores aritméticos. Copia y pega el siguiente programa Java y guárdalo como archivo Test.java, luego compila y ejecuta este programa:

Ejemplo

public class Test { public static void main(String[] args) { int a = 10; int b = 20; int c = 25; int d = 25; System.out.println("a + b = " + (a + b) ); System.out.println("a - b = " + (a - b) ); System.out.println("a * b = " + (a * b) ); System.out.println("b / a = " + (b / a) ); System.out.println("b % a = " + (b % a) ); System.out.println("c % a = " + (c % a) ); System.out.println("a++ = " + (a++) ); System.out.println("a-- = " + (a--) ); //Observa la diferencia entre d++ y ++d System.out.println("d++ = " + (d++) ); System.out.println("++d = " + (++d) ); } }

Ejecutar ejemplo »

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5
a++   = 10
a--   = 11
d++   = 25
++d   = 27

Operadores de incremento y decremento

1. Operadores de incremento (++) y decremento (--)Son un tipo especial de operadores aritméticos. Mientras que los operadores aritméticos necesitan dos operandos para realizar la operación, los operadores de incremento y decremento usan un solo operando.

Ejemplo

public class selfAddMinus{ public static void main(String[] args){ int a = 3;//Definir una variable; int b = ++a;//Operación de incremento int c = 3; int d = --c;//Operación de decremento System.out.println("El valor después de la operación de incremento es igual a"+b); System.out.println("El valor después de la operación de decremento es igual a"+d); } }

El resultado de la ejecución es:

进行自增运算后的值等于4
进行自减运算后的值等于2

Análisis:

  • int b = ++a; el proceso de la operación es: a=a+1=4; b=a=4, el resultado final es b=4, a=4

  • int d = --c; el proceso de la operación es: c=c-1=2; d=c=2, el resultado final es d=2, c=2

2. Incremento/decremento prefijo (++a, --a):Primero se realiza el incremento o decremento, y luego se evalúa la expresión.

3. Incremento/decremento sufijo (a++, a--):Primero se evalúa la expresión, y luego se realiza el incremento o decremento. Ejemplo:

Ejemplo

public class selfAddMinus{ public static void main(String[] args){ int a = 5;//Definir una variable; int b = 5; int x = 2*++a; int y = 2*b++; System.out.println("Después de la operación de incremento con prefijo, a="+a+",x="+x); System.out.println("Después de la operación de incremento con sufijo, b="+b+",y="+y); } }

El resultado de la ejecución es:

自增运算符前缀运算后a=6,x=12
自增运算符后缀运算后b=6,y=10

Operadores relacionales

La siguiente tabla enumera los operadores relacionales que admite Java

En la tabla, la variable entera A vale 10 y la variable B vale 20:

Operador Descripción Ejemplo
== Comprueba si los valores de dos operandos son iguales; si son iguales, la condición es verdadera. (A == B) es falso.
!= Comprueba si los valores de dos operandos son iguales; si no son iguales, la condición es verdadera. (A != B) es verdadero.
>  Comprueba si el valor del operando izquierdo es mayor que el valor del operando derecho; si es así, la condición es verdadera. (A > B) es falso.
<  Comprueba si el valor del operando izquierdo es menor que el valor del operando derecho; si es así, la condición es verdadera. (A < B) es verdadero.
>= Comprueba si el valor del operando izquierdo es mayor o igual que el valor del operando derecho; si es así, la condición es verdadera. (A >= B) es falso.
<= Comprueba si el valor del operando izquierdo es menor o igual que el valor del operando derecho; si es así, la condición es verdadera. (A <= B) es verdadero.

Ejemplo

El siguiente programa de ejemplo sencillo demuestra los operadores relacionales. Copia y pega el siguiente programa Java y guárdalo como archivo Test.java, luego compila y ejecuta este programa:

Código del archivo Test.java:

public class Test { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a == b = " + (a == b) ); System.out.println("a != b = " + (a != b) ); System.out.println("a > b = " + (a > b) ); System.out.println("a < b = " + (a < b) ); System.out.println("b >= a = " + (b >= a) ); System.out.println("b <= a = " + (b <= a) ); } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false

Operadores de bits

Java define operadores de bits, que se aplican a tipos como entero (int), entero largo (long), entero corto (short), carácter (char) y byte (byte).

Los operadores de bits actúan sobre todos los bits y realizan operaciones bit a bit. Supongamos que a = 60 y b = 13; sus representaciones en formato binario son las siguientes:

A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011

La siguiente tabla enumera las operaciones básicas de los operadores de bits, suponiendo que la variable entera A vale 60 y la variable B vale 13:

Operador Descripción Ejemplo
& Si los bits correspondientes son ambos 1, el resultado es 1; de lo contrario, es 0. (A & B) da 12, es decir, 0000 1100
| Si los bits correspondientes son ambos 0, el resultado es 0; de lo contrario, es 1. (A | B) da 61, es decir, 0011 1101
^ Si los valores de los bits correspondientes son iguales, el resultado es 0; de lo contrario, es 1. (A ^ B) da 49, es decir, 0011 0001
〜 El operador de complemento bit a bit invierte cada bit del operando, es decir, 0 se convierte en 1 y 1 se convierte en 0. (~A) da -61, es decir, 1100 0011
<<  Operador de desplazamiento a la izquierda. Desplaza el operando izquierdo a la izquierda la cantidad de posiciones especificada por el operando derecho. A << 2 da 240, es decir, 1111 0000
>>  Operador de desplazamiento a la derecha. Desplaza el operando izquierdo a la derecha la cantidad de posiciones especificada por el operando derecho. A >> 2 da 15, es decir, 1111
>>>  Operador de desplazamiento a la derecha con relleno de ceros. El valor del operando izquierdo se desplaza a la derecha la cantidad de posiciones especificada por el operando derecho, y los huecos que se generan se rellenan con ceros. A >>> 2 da 15, es decir, 0000 1111

Ejemplo

El siguiente programa de ejemplo sencillo demuestra los operadores de bits. Copia y pega el siguiente programa Java y guárdalo como archivo Test.java, luego compila y ejecuta este programa:

Código del archivo Test.java:

public class Test {   public static void main(String[] args) {     int a = 60; /* 60 = 0011 1100 */       int b = 13; /* 13 = 0000 1101 */      int c = 0;      c = a & b;       /* 12 = 0000 1100 */      System.out.println("a & b = " + c );      c = a | b;       /* 61 = 0011 1101 */      System.out.println("a | b = " + c );      c = a ^ b;       /* 49 = 0011 0001 */      System.out.println("a ^ b = " + c );      c = ~a;          /*-61 = 1100 0011 */      System.out.println("~a = " + c );      c = a << 2;     /* 240 = 1111 0000 */      System.out.println("a << 2 = " + c );      c = a >> 2;     /* 15 = 1111 */      System.out.println("a >> 2  = " + c );       c = a >>> 2;     /* 15 = 0000 1111 */      System.out.println("a >>> 2 = " + c );   } } 

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2  = 15
a >>> 2 = 15

Operadores lógicos

La siguiente tabla enumera las operaciones básicas de los operadores lógicos, suponiendo que la variable booleana A es verdadera y la variable B es falsa.

Operador Descripción Ejemplo
&& Se llama operador lógico Y (AND). La condición es verdadera si y solo si ambos operandos son verdaderos. (A && B) es falso.
| | Se llama operador lógico O (OR). Si cualquiera de los dos operandos es verdadero, la condición es verdadera. (A || B) es verdadero.
! Se llama operador lógico NO (NOT). Se utiliza para invertir el estado lógico del operando. Si la condición es true, el operador NO lógico devolverá false. !(A && B) es verdadero.

Ejemplo

El siguiente programa de ejemplo sencillo demuestra los operadores lógicos. Copia y pega el siguiente programa Java y guárdalo como archivo Test.java, luego compila y ejecuta este programa:

Ejemplo

public class Test { public static void main(String[] args) { boolean a = true; boolean b = false; System.out.println("a && b = " + (a&&b)); System.out.println("a || b = " + (a||b) ); System.out.println("!(a && b) = " + !(a && b)); } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

a && b = false
a || b = true
!(a && b) = true

Operadores lógicos de cortocircuito

Cuando se usa el operador lógico AND, el resultado solo es true si ambos operandos son true, pero cuando el primer operando es false, el resultado será necesariamente false, por lo que ya no se evalúa el segundo operando.

Ejemplo

public class LuoJi{ public static void main(String[] args){ int a = 5;//Definir una variable; boolean b = (a<4)&&(a++<10); System.out.println("El resultado de usar el operador lógico de cortocircuito es"+b); System.out.println("El resultado de a es"+a); } }

El resultado de la ejecución es:

使用短路逻辑运算符的结果为false
a的结果为5

Análisis:Este programa utiliza el operador lógico de cortocircuito (&&). Primero, el resultado de a<4 es false, entonces el resultado de b debe ser false, por lo que no se ejecuta la evaluación de la segunda operación a++<10, por lo tanto el valor de a es 5.


Operadores de asignación

A continuación se muestran los operadores de asignación compatibles con Java:

Operador Descripción Ejemplo
= Operador de asignación simple, asigna el valor del operando derecho al operando izquierdo C = A + B asignará el valor obtenido de A + B a C
+ = Operador de suma y asignación, suma el operando izquierdo y el derecho y asigna el resultado al operando izquierdo C + = A es equivalente a C = C + A
- = Operador de resta y asignación, resta el operando derecho del izquierdo y asigna el resultado al operando izquierdo C - = A es equivalente a C = C - A
* = Operador de multiplicación y asignación, multiplica el operando izquierdo y el derecho y asigna el resultado al operando izquierdo C * = A es equivalente a C = C * A
/ = Operador de división y asignación, divide el operando izquierdo entre el derecho y asigna el resultado al operando izquierdo C / = A, cuando C y A son del mismo tipo, es equivalente a C = C / A
(%)= Operador de módulo y asignación, calcula el módulo del operando izquierdo y el derecho y asigna el resultado al operando izquierdo C%= A es equivalente a C = C%A
<< = Operador de asignación de desplazamiento a la izquierda C << = 2 es equivalente a C = C << 2
>> = Operador de asignación de desplazamiento a la derecha C >> = 2 es equivalente a C = C >> 2
&= Operador de asignación AND bit a bit C&= 2 es equivalente a C = C&2
^ = Operador de asignación XOR bit a bit C ^ = 2 es equivalente a C = C ^ 2
| = Operador de asignación OR bit a bit C | = 2 es equivalente a C = C | 2

Ejemplo

El siguiente programa de ejemplo simple demuestra los operadores de asignación. Copie y pegue el siguiente programa Java, guárdelo como archivo Test.java, luego compílelo y ejecútelo:

Código del archivo Test.java:

public class Test { public static void main(String[] args) { int a = 10; int b = 20; int c = 0; c = a + b; System.out.println("c = a + b = " + c ); c += a ; System.out.println("c += a  = " + c ); c -= a ; System.out.println("c -= a = " + c ); c *= a ; System.out.println("c *= a = " + c ); a = 10; c = 15; c /= a ; System.out.println("c /= a = " + c ); a = 10; c = 15; c %= a ; System.out.println("c %= a  = " + c ); c <<= 2 ; System.out.println("c <<= 2 = " + c ); c >>= 2 ; System.out.println("c >>= 2 = " + c ); c >>= 2 ; System.out.println("c >>= 2 = " + c ); c &= a ; System.out.println("c &= a  = " + c ); c ^= a ; System.out.println("c ^= a   = " + c ); c |= a ; System.out.println("c |= a   = " + c ); } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

c = a + b = 30
c += a  = 40
c -= a = 30
c *= a = 300
c /= a = 1
c %= a  = 5
c <<= 2 = 20
c >>= 2 = 5
c >>= 2 = 1
c &= a  = 0
c ^= a   = 10
c |= a   = 10

Operador condicional (?:)

El operador condicional también se conoce como operador ternario. Este operador tiene 3 operandos y necesita evaluar el valor de una expresión booleana. Su función principal es decidir qué valor se debe asignar a la variable.

variable x = (expression) ? value if true : value if false

Ejemplo

Código del archivo Test.java:

public class Test { public static void main(String[] args){ int a , b; a = 10; //Si a es igual a 1, se establece b en 20; de lo contrario, en 30. b = (a == 1) ? 20 : 30; System.out.println( "Value of b is : " + b ); //Si a es igual a 10, se establece b en 20; de lo contrario, en 30. b = (a == 10) ? 20 : 30; System.out.println( "Value of b is : " + b ); } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

Value of b is : 30
Value of b is : 20

Operador instanceof

Este operador se utiliza para operar sobre instancias de objetos, verificando si el objeto es de un tipo específico (tipo de clase o tipo de interfaz).

El formato de uso del operador instanceof es el siguiente:

( Object reference variable ) instanceof  (class/interface type)

Si el objeto al que apunta la variable a la izquierda del operador es un objeto de la clase o interfaz (class/interface) a la derecha del operador, entonces el resultado es true.

A continuación se muestra un ejemplo:

String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真

Si el objeto comparado es compatible con el tipo de la derecha, el operador aún devuelve true.

Vea el siguiente ejemplo:

class Vehicle {} public class Car extends Vehicle { public static void main(String[] args){ Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println( result); } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

true

Precedencia de operadores en Java

Cuando varios operadores aparecen en una expresión, ¿cuál va primero y cuál después? Esto involucra el problema del nivel de prioridad de los operadores. En una expresión con múltiples operadores, una precedencia de operadores diferente puede causar que el resultado final varíe enormemente.

Por ejemplo, (1+3) + (3+2)*2, si en esta expresión la suma tiene la mayor prioridad, el resultado es 18; si la multiplicación tiene la mayor prioridad, el resultado es 14.

Otro ejemplo, x = 7 + 3 * 2; aquí x obtiene 13, no 20, porque el operador de multiplicación tiene mayor prioridad que el de suma, por lo que primero se calcula 3 * 2 obteniendo 6, y luego se suma 7.

En la siguiente tabla, los operadores con mayor prioridad están en la parte superior, y los de menor prioridad en la parte inferior.

Categoría Operador Asociatividad
Sufijo () [] . (operador de punto) De izquierda a derecha
Unario expr++ expr-- De izquierda a derecha
Unario ++expr --expr + - ~ ! De derecha a izquierda
Multiplicativo * /% Izquierda a derecha
Aditivo + - Izquierda a derecha
Desplazamiento >> >>>  <<  Izquierda a derecha
Relacional > >= < <=  Izquierda a derecha
Igualdad ==  != Izquierda a derecha
AND bit a bit & Izquierda a derecha
XOR bit a bit ^ Izquierda a derecha
OR bit a bit | Izquierda a derecha
AND lógico && Izquierda a derecha
OR lógico | | Izquierda a derecha
Condicional ?: De derecha a izquierda
Asignación = + = - = * = / =%= >> = << =&= ^ = | = De derecha a izquierda
Coma , Izquierda a derecha
Otras extensiones