Uno de los usos más básicos de las computadoras es realizar operaciones matemáticas. Como lenguaje informático, Java también proporciona un rico conjunto de operadores para manipular variables. Podemos dividir a los operadores en los siguientes grupos:
Los operadores aritméticos se utilizan en expresiones matemáticas y funcionan de la misma manera que en matemáticas. La siguiente tabla enumera todos los operadores aritméticos.
El ejemplo de la tabla supone que la variable entera A tiene un valor de 10 y la variable B tiene un valor de 20:
Operador | describir | ejemplo |
---|---|---|
+ | Suma: los valores a cada lado del operador de suma | A + B es igual a 30 |
- | Resta: operando izquierdo menos operando derecho | A – B es igual a -10 |
* | Multiplicación: multiplica los valores a cada lado 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 del operando izquierdo dividido por el operando derecho | B%A es igual a 0 |
++ | Incremento: aumenta el valor del operando en 1 | B++ o ++B es igual a 21 |
-- | Decremento: disminuye el valor del operando en 1 | B-- o --B es igual a 19 |
Aunque ambos aumentan automáticamente (sus resultados de operación son iguales a B + 1), todavía existen diferencias entre B ++ y ++ B es un valor l y se puede operar directamente en el lugar (puede entenderse como + directamente en). variable B). B ++ es un valor r. Cuando se opera en el compilador, primero se construirá una variable temporal y luego la variable temporal se usará para calcular +1 y luego se asignará a B.
Por lo tanto, en el código de ejemplo a continuación, al imprimir d ++, se encuentra que el resultado no es +1 (en este momento, se imprime la variable d y se opera la variable temporal de d), pero el resultado se muestra en el siguiente La declaración impresa es +1 nuevamente. El resultado final (el valor de la variable temporal se asigna a la variable d). El resultado de imprimir ++d es directamente +1.
El siguiente programa de ejemplo simple demuestra operadores aritméticos. Copie y pegue el siguiente programa Java y guárdelo como un archivo Test.java, luego compile y ejecute el programa:
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--) ); // 查看d++ 与++d 的不同System.out.println("d++ = " + (d++) ); System.out.println("d = " + d); System.out.println("++d = " + (++d) ); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
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 =26 ++d = 27
La siguiente tabla muestra los operadores relacionales soportados por Java.
La variable entera de ejemplo A en la tabla tiene un valor de 10 y la variable B tiene un valor de 20:
operador | describir | ejemplo |
---|---|---|
== | Comprueba si los valores de los dos operandos son iguales, de ser así entonces la condición es verdadera. | (A == B) es falso (no es cierto). |
!= | Comprueba si los valores de dos operandos son iguales, si los valores no son iguales entonces la condición es verdadera. | (A! = B) es cierto. |
> | Comprueba si el valor del operando izquierdo es mayor que el valor del operando derecho; de ser así, la condición se vuelve verdadera. | (A>B) no es cierto. |
< | Comprueba si el valor del operando izquierdo es menor que el valor del operando derecho; de ser así, la condición se vuelve verdadera. | (A < B) es cierto. |
>= | Comprueba si el valor del operando izquierdo es mayor o igual que el valor del operando derecho; de ser así, la condición se vuelve verdadera. | (A>=B) es falso. |
<= | Comprueba si el valor del operando izquierdo es menor o igual que el valor del operando derecho; de ser así, la condición se vuelve verdadera. | (A <= B) es cierto. |
El siguiente programa de ejemplo simple demuestra operadores relacionales. Copie y pegue el siguiente programa Java y guárdelo como un archivo Test.java, luego compile y ejecute el programa:
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) ); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
a == b = false a != b = true a > b = false a < b = true b >= a = true b <= a = false
Java define operadores bit a bit, que se aplican a tipos de enteros (int), enteros largos (long), enteros cortos (short), tipos de caracteres (char) y tipos de bytes (byte).
Los operadores bit a bit operan en todos los bits y operan bit a bit. Supongamos que a = 60 y b = 13; su representación en formato binario será la siguiente:
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 bit a bit, suponiendo que la variable entera A tiene un valor de 60 y la variable B tiene un valor de 13:
Operador | describir | ejemplo |
---|---|---|
& | Operador AND bit a bit, el resultado es 1 si y solo si un cierto bit de ambos operandos no es 0. | (A&B), obtenga 12, que es 0000 1100 |
| | Operador OR bit a bit, siempre que un determinado bit de los dos operandos no sea 0, el resultado será 1. | (A | B) obtiene 61, que es 0011 1101 |
^ | Operador XOR bit a bit, cuando un determinado bit de los dos operandos es diferente, el bit de resultado es 1. | (A^B) nos da 49, que es 0011 0001 |
~ | El operador de complemento bit a bit invierte cada bit del operando. | (~A) obtiene -61, que es 1100 0011 |
<< | Operador de desplazamiento a la izquierda bit a bit. El operando izquierdo se desplaza hacia la izquierda el número de bits especificado por el operando derecho. | Un << 2 nos da 240, que es 1111 0000 |
>> | Operador de desplazamiento a la derecha bit a bit. El operando izquierdo se desplaza bit a derecha el número de bits especificado por el operando derecho. | A >> 2 obtiene 15 que es 1111 |
>>> | Operador de relleno de ceros con desplazamiento a la derecha bit a bit. El valor del operando izquierdo se desplaza hacia la derecha el número de bits especificado por el operando derecho y las vacantes resultantes se llenan con ceros. | A >>>2 obtiene 15 que es 0000 1111 |
El siguiente programa de ejemplo simple demuestra operadores bit a bit. Copie y pegue el siguiente programa Java y guárdelo como un archivo Test.java, luego compile y ejecute el programa:
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; /* 215 = 1111 */ System.out.println("a >> 2 = " + c ); c = a >>> 2; /* 215 = 0000 1111 */ System.out.println("a >>> 2 = " + c ); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
a & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a << 2 = 240 a >> 2 = 15 a >>> 2 = 15
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 | describir | ejemplo |
---|---|---|
&& | Llamado operador lógico AND. Una condición es verdadera si y sólo si ambos operandos son verdaderos. | (A && B) es falso. |
| | Llamado operador lógico OR. La condición es verdadera si cualquiera de los dos operandos es verdadero. | (A | | B) es cierto. |
! | Llamado operador lógico NOT. Se utiliza para invertir el estado lógico del operando. Si la condición es verdadera, el operador lógico NOT será falso. | ! (A && B) es cierto. |
El siguiente programa de ejemplo simple demuestra operadores lógicos. Copie y pegue el siguiente programa Java y guárdelo como un archivo Test.java, luego compile y ejecute el programa:
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)); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
a && b = false a || b = true !(a && b) = true
Los siguientes son los operadores de asignación soportados por el lenguaje Java:
Operador | describir | ejemplo |
---|---|---|
= | Operador de asignación simple, asigna el valor del operando derecho al operando izquierdo | C = A + B asignará el valor obtenido por A + B a C |
+ = | Operador de asignación de suma, que suma el operando izquierdo y el operando derecho y asigna el valor al operando izquierdo | C+ = A es equivalente a C = C + A |
-= | Operador de resta y asignación, que resta el operando izquierdo y el operando derecho y asigna el valor al operando izquierdo | C - = A es equivalente a C = C - A |
* = | El operador de multiplicación y asignación, que multiplica el operando izquierdo y el operando derecho y asigna el valor al operando izquierdo. | C* = A es equivalente a C = C * A |
/ = | El operador de división y asignación divide el operando izquierdo y el operando derecho y asigna el valor al operando izquierdo. | C/=A es equivalente a C=C/A |
(%)= | Operador de módulo y asignación, que modula los operandos izquierdo y derecho y asigna el valor al operando izquierdo | C%=A es equivalente a C=C%A |
<< = | operador de asignación de turno a la izquierda | C << = 2 es equivalente a C = C << 2 |
>> = | operador de asignación de turno 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 |
El siguiente programa de ejemplo simple demuestra el operador de asignación. Copie y pegue el siguiente programa Java y guárdelo como un archivo Test.java, luego compile y ejecute el programa:
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 >>= a = " + 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 ); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
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
Los operadores condicionales también se conocen como operadores ternarios. Este operador tiene tres operandos y necesita evaluar el valor de una expresión booleana. El objetivo principal de este operador es decidir qué valor se debe asignar a la variable.
variable x = (expression) ? value if true : value if false
public class Test { public static void main(String args[]){ int a , b; a = 10; b = (a == 1) ? 20: 30; System.out.println( "Value of b is : " + b ); b = (a == 10) ? 20: 30; System.out.println( "Value of b is : " + b ); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
Value of b is : 30 Value of b is : 20
Este operador se utiliza para operar en instancias de objetos y verificar si el objeto es de un tipo específico (tipo de clase o tipo de interfaz).
El operador instancia de se utiliza en el siguiente formato:
( Object reference variable ) instanceof (class/interface type)
Si el objeto señalado por la variable en el lado izquierdo del operador es un objeto de la clase o interfaz (clase/interfaz) en el lado derecho del operador, el resultado es verdadero.
He aquí un ejemplo:
String name = 'James'; boolean result = name instanceof String; // 由于name是String类型,所以返回真
Este operador aún devuelve verdadero si los objetos comparados son compatibles con el tipo de la derecha.
Mira 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); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
true
Cuando aparecen varios operadores en una expresión, ¿cuál aparece primero? Esto implica la cuestión de la precedencia de los operadores. En una expresión de múltiples operadores, diferentes prioridades de los operadores conducirán a resultados finales muy diferentes.
Por ejemplo, (1+3) + (3+2)*2, si esta expresión se calcula según el signo más como máxima prioridad, la respuesta es 18, y si el signo de multiplicación es la máxima prioridad, la respuesta es 14.
Otro ejemplo, x = 7 + 3 * 2; aquí x obtiene 13, no 20, porque el operador de multiplicación tiene una prioridad más alta que el operador de suma, por lo que primero se calcula 3 * 2 para obtener 6 y luego se suma 7.
Los operadores con mayor precedencia en la siguiente tabla están en la parte superior de la tabla y los operadores con menor precedencia están en la parte inferior de la tabla.
categoría | Operador | pertinencia |
---|---|---|
sufijo | () [] (operador de punto) | de izquierda a derecha |
un yuan | + + -! ~ | derecha a izquierda |
multiplicativo | */% | de izquierda a derecha |
Aditividad | + - | de izquierda a derecha |
cambio | >> >>> << | de izquierda a derecha |
relación | >> = << = | de izquierda a derecha |
igual | == != | de izquierda a derecha |
Bit a bit Y | & | de izquierda a derecha |
XOR bit a bit | ^ | de izquierda a derecha |
O bit a bit | | | de izquierda a derecha |
lógico Y | && | de izquierda a derecha |
lógico o | | | de izquierda a derecha |
condición | ? : | derecha a izquierda |
Asignación | = + = - = * = / =%= >> = << =&= ^ = = | | derecha a izquierda |
coma | , | de izquierda a derecha |