Um dos usos mais básicos dos computadores é realizar operações matemáticas. Como linguagem de computador, Java também fornece um rico conjunto de operadores para manipular variáveis. Podemos dividir os operadores nos seguintes grupos:
Os operadores aritméticos são usados em expressões matemáticas e funcionam da mesma forma que na matemática. A tabela a seguir lista todos os operadores aritméticos.
O exemplo da tabela assume que a variável inteira A tem o valor 10 e a variável B tem o valor 20:
Operador | descrever | exemplo |
---|---|---|
+ | Adição – os valores de cada lado do operador de adição | A + B é igual a 30 |
- | Subtração - operando esquerdo menos operando direito | A – B é igual a -10 |
* | Multiplicação – Multiplica os valores de cada lado do operador | A * B é igual a 200 |
/ | Divisão - divide o operando esquerdo pelo operando direito | B/A é igual a 2 |
% | Módulo - o restante do operando esquerdo dividido pelo operando direito | B%A é igual a 0 |
++ | Incremento - aumenta o valor do operando em 1 | B++ ou ++B é igual a 21 |
-- | Decrementar - diminui o valor do operando em 1 | B-- ou --B é igual a 19 |
Embora ambos sejam auto-crescentes (seus resultados de operação são iguais a B+1), ainda existem diferenças entre B++ e ++B ++B é um valor l e pode ser operado diretamente no local (pode ser entendido como + diretamente). variável B) 1), B++ é um rvalue Ao operar no compilador, uma variável temporária será construída primeiro e, em seguida, a variável temporária será usada para calcular +1 e então atribuída a B.
Portanto, no código de exemplo abaixo, ao imprimir d++, verifica-se que o resultado não é +1 (neste momento, a variável d é impressa e a variável temporária de d é operada), mas o resultado exibido no próximo a instrução impressa é +1 novamente O resultado final (o valor da variável temporária é atribuído à variável d). O resultado da impressão ++d é diretamente +1.
O programa de exemplo simples a seguir demonstra operadores aritméticos. Copie e cole o seguinte programa Java e salve-o como um arquivo Test.java e, em seguida, compile e execute o 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) ); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
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
A tabela a seguir mostra os operadores relacionais suportados por Java
A variável inteira de exemplo A na tabela tem um valor de 10 e a variável B tem um valor de 20:
operador | descrever | exemplo |
---|---|---|
== | Verifica se os valores dos dois operandos são iguais, se sim então a condição é verdadeira. | (A == B) é falso (não é verdade). |
!= | Verifica se os valores de dois operandos são iguais, se os valores não forem iguais então a condição é verdadeira. | (A! = B) é verdadeiro. |
> | Verifica se o valor do operando esquerdo é maior que o valor do operando direito; nesse caso, a condição se torna verdadeira. | (A>B) não é verdade. |
< | Verifica se o valor do operando esquerdo é menor que o valor do operando direito; nesse caso, a condição se torna verdadeira. | (A <B) é verdadeiro. |
>= | Verifica se o valor do operando esquerdo é maior ou igual ao valor do operando direito, se sim a condição se torna verdadeira. | (A>=B) é falso. |
<= | Verifica se o valor do operando esquerdo é menor ou igual ao valor do operando direito; nesse caso, a condição se torna verdadeira. | (A <= B) é verdadeiro. |
O programa de exemplo simples a seguir demonstra operadores relacionais. Copie e cole o seguinte programa Java e salve-o como um arquivo Test.java e, em seguida, compile e execute o 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) ); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
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 aplicam a tipos inteiros (int), inteiros longos (long), inteiros curtos (short), tipos de caracteres (char) e tipos de bytes (byte).
Os operadores bit a bit operam em todos os bits e operam bit a bit. Suponha que a = 60 e b = 13; sua representação em formato binário será a seguinte:
A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A | B = 0011 1101 A ^ B = 0011 0001 ~A= 1100 0011
A tabela a seguir lista as operações básicas de operadores bit a bit, assumindo que a variável inteira A tem um valor de 60 e a variável B tem um valor de 13:
Operador | descrever | exemplo |
---|---|---|
& | Operador AND bit a bit, o resultado é 1 se e somente se um determinado bit de ambos os operandos for diferente de 0. | (A&B), obtenha 12, que é 0000 1100 |
| | Operador OR bit a bit, desde que um determinado bit dos dois operandos seja diferente de 0, o resultado será 1. | (A | B) obtém 61, que é 0011 1101 |
^ | Operador XOR bit a bit, quando um determinado bit dos dois operandos é diferente, o bit resultante é 1. | (A ^ B) nos dá 49, que é 0011 0001 |
~ | O operador de complemento bit a bit inverte cada bit do operando. | (~A) obtém -61, que é 1100 0011 |
<< | Operador de deslocamento à esquerda bit a bit. O operando esquerdo é deslocado para a esquerda pelo número de bits especificado pelo operando direito. | A << 2 nos dá 240, que é 1111 0000 |
>> | Operador de deslocamento à direita bit a bit. O operando esquerdo é deslocado bit a bit para a direita pelo número de bits especificado pelo operando direito. | A >> 2 resulta em 15, que é 1111 |
>>> | Operador de preenchimento de zero com deslocamento bit a bit para a direita. O valor do operando esquerdo é deslocado para a direita pelo número de bits especificado pelo operando direito e as vagas resultantes são preenchidas com zeros. | A >>> 2 obtém 15, que é 0000 1111 |
O programa de exemplo simples a seguir demonstra operadores bit a bit. Copie e cole o seguinte programa Java e salve-o como um arquivo Test.java e, em seguida, compile e execute o 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 ); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
a & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a << 2 = 240 a >> 2 = 15 a >>> 2 = 15
A tabela a seguir lista as operações básicas de operadores lógicos, assumindo que a variável booleana A é verdadeira e a variável B é falsa
Operador | descrever | exemplo |
---|---|---|
&& | Chamado de operador lógico AND. Uma condição é verdadeira se e somente se ambos os operandos forem verdadeiros. | (A && B) é falso. |
| | Chamado de operador lógico OR. A condição é verdadeira se qualquer um dos dois operandos for verdadeiro. | (A | | B) é verdadeiro. |
! | Chamado de operador lógico NOT. Usado para inverter o estado lógico do operando. Se a condição for verdadeira, o operador lógico NOT será falso. | ! (A && B) é verdadeiro. |
O programa de exemplo simples a seguir demonstra operadores lógicos. Copie e cole o seguinte programa Java e salve-o como um arquivo Test.java e, em seguida, compile e execute o 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)); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
a && b = false a || b = true !(a && b) = true
A seguir estão os operadores de atribuição suportados pela linguagem Java:
Operador | descrever | exemplo |
---|---|---|
= | Operador de atribuição simples, atribui o valor do operando direito ao operando esquerdo | C = A + B atribuirá o valor obtido por A + B a C |
+ = | Operador de atribuição de adição, que adiciona o operando esquerdo e o operando direito e atribui o valor ao operando esquerdo | C + = A é equivalente a C = C + A |
-= | Operador de subtração e atribuição, que subtrai o operando esquerdo e o operando direito e atribui o valor ao operando esquerdo | C - = A é equivalente a C = C - A |
* = | O operador de multiplicação e atribuição, que multiplica o operando esquerdo e o operando direito e atribui o valor ao operando esquerdo | C*=A é equivalente a C=C*A |
/ = | O operador de divisão e atribuição divide o operando esquerdo e o operando direito e atribui o valor ao operando esquerdo. | C/=A é equivalente a C=C/A |
(%)= | Módulo e operador de atribuição, que modula os operandos esquerdo e direito e atribui o valor ao operando esquerdo | C%=A é equivalente a C=C%A |
<< = | operador de atribuição de turno esquerdo | C << = 2 é equivalente a C = C << 2 |
>> = | operador de atribuição de turno à direita | C >> = 2 é equivalente a C = C >> 2 |
&= | Operador de atribuição AND bit a bit | C&=2 é equivalente a C=C&2 |
^ = | Operador de atribuição XOR bit a bit | C^=2 é equivalente a C=C^2 |
| | Operador de atribuição OR bit a bit | C|=2 é equivalente a C=C|2 |
O programa de exemplo simples a seguir demonstra o operador de atribuição. Copie e cole o seguinte programa Java e salve-o como um arquivo Test.java e, em seguida, compile e execute o 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 ); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
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
Os operadores condicionais também são conhecidos como operadores ternários. Este operador possui três operandos e precisa avaliar o valor de uma expressão booleana. O principal objetivo deste operador é decidir qual valor deve ser atribuído à variável.
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 ); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
Value of b is : 30 Value of b is : 20
Este operador é usado para operar em instâncias de objetos e verificar se o objeto é de um tipo específico (tipo de classe ou tipo de interface).
O operador instanceof é usado no seguinte formato:
( Object reference variable ) instanceof (class/interface type)
Se o objeto apontado pela variável do lado esquerdo do operador for um objeto da classe ou interface (classe/interface) do lado direito do operador, o resultado é verdadeiro.
Aqui está um exemplo:
String name = 'James'; boolean result = name instanceof String; // 由于name是String类型,所以返回真
Este operador ainda retorna verdadeiro se os objetos comparados forem compatíveis com o tipo à direita.
Veja o exemplo a seguir:
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); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
true
Quando vários operadores aparecem em uma expressão, qual deles vem primeiro? Isso envolve a questão da precedência do operador. Numa expressão multioperador, diferentes prioridades de operador levarão a resultados finais muito diferentes.
Por exemplo, (1+3) + (3+2)*2, se esta expressão for calculada de acordo com o sinal de mais como a prioridade mais alta, a resposta é 18, e se o sinal de multiplicação for a prioridade mais alta, a resposta é 14.
Outro exemplo, x = 7 + 3 * 2; aqui x obtém 13, não 20, porque o operador de multiplicação tem uma prioridade mais alta que o operador de adição, então 3 * 2 é calculado primeiro para obter 6 e, em seguida, 7 é adicionado.
Os operadores com maior precedência na tabela a seguir estão no topo da tabela e os operadores com menor precedência estão na parte inferior da tabela.
categoria | Operador | relevância |
---|---|---|
sufixo | () [] (operador ponto) | esquerda para direita |
um yuan | + + -! ~ | direita para esquerda |
multiplicativo | */% | esquerda para direita |
Aditividade | + - | esquerda para direita |
mudança | >> >>> << | esquerda para direita |
relação | >> = << = | esquerda para direita |
igual | == != | esquerda para direita |
E bit a bit | & | esquerda para direita |
XOR bit a bit | ^ | esquerda para direita |
OU bit a bit | | | esquerda para direita |
lógico E | && | esquerda para direita |
lógico ou | | | esquerda para direita |
doença | ? : | direita para esquerda |
Atribuição | = + = - = * = / =%= >> = << =&= ^ = | | direita para esquerda |
vírgula | , | esquerda para direita |