Aprenda sobre os operadores em Java, a ordem de precedência e entenda seus usos com exemplos. Também tentaremos compreender quando usar cada operador e o que esperar como resultado.
1. Operadores em Java
Um operador é um símbolo que realiza uma operação específica em um, dois ou três operandos, produzindo um resultado. O tipo do operador e seus operandos determinam o tipo de operação realizada e o tipo de resultado produzido.
Os operadores em Java podem ser categorizados com base em dois critérios:
- Número de operadores – Existem três tipos de operadores com base no número de operandos. Um operador é chamado de operador unário, binário ou ternário, dependendo do número de operandos. Se um operador usa um operando, é chamado de operador unário; se usa dois operandos, é chamado de operador binário; se usa três operandos, é chamado de operador ternário.
- Tipo de operação que realizam – Um operador pode ser classificado como operador aritmético, relacional, lógico ou bit a bit, dependendo do tipo de operação que realiza nos operandos.
Operador | Descrição |
+ – * / | Operadores aritméticos unários ou binários |
++ — | Operadores unários de incremento e decremento |
== != | Operadores de igualdade |
< > <= => | Operadores relacionais |
! & | | Operadores lógicos |
&& || ?: | Operadores condicionais |
= += -= *= /= %= | Operadores de atribuição |
&= |= ^= <<= >>= >>>= | Operadores de atribuição bit a bit |
& | ~ ^ << >> >>> | Operadores bit a bit |
-> :: | Operadores de seta e referência de método |
new | Operador de criação de instância |
instanceOf | Operador de comparação de tipos |
+ | Operador de concatenação de strings |
Posts recentes
Vamos aprender sobre alguns dos operadores mais usados com exemplos
2. Operador de Atribuição
- O operador de atribuição (=) é usado para atribuir um valor a uma variável.
- É um operador binário, que utiliza dois operandos.
- O valor do operando à direita é atribuído ao operando à esquerda.
- O operando à esquerda deve ser uma variável.
// 26 é o operando à direita.
// counter é o operando à esquerda, que é uma variável do tipo int.
int counter = 26;
O Java garante que o valor do operando à direita seja compatível com o tipo de dados do operando à esquerda. Caso contrário, ocorre um erro em tempo de compilação.
No caso de variáveis de referência, pode-se compilar o código, mas ocorrerá um erro de ClassCastException em tempo de execução se o objeto representado pelo operando da direita não for compatível com a variável de referência à esquerda.
3. Operadores Aritméticos
- Operadores como + (mais), – (menos),* (multiplicação), / (divisão) são chamados de operadores aritméticos em Java.
- Eles só podem ser usados com operandos de tipo numérico, como byte, short, char, int, long, float e double
- Não podem ser usados com operandos do tipo boolean e tipos de referência.
int soma = 10 + 20;
int diferenca = 50 - 20;
long area = 20l * 30l;
int porcentagem = 20 / 100;
3.1. Operadores Aritméticos Unários
Operador | Descrição |
‘+’ | Indica valor positivo |
‘-‘ | Nega o valor da expressão |
‘++’ | Incrementa o valor em 1 |
‘–‘ | Decrementa o valor em 1 |
‘!’ | Inverte o valor booleano |
3.2. Operadores Aritméticos Binários
Operador | Descrição |
‘+’ | Adição |
‘-‘ | Subtração |
‘*’ | Multiplicação |
‘/’ | Divisão |
‘%’ | Resto da divisão |
4. Operador de Concatenação de Strings
O operador + é sobrecarregado em Java, sendo usado tanto para adição quanto para concatenação de strings.
4.1. Concatenando Duas Strings
Até agora, você viu seu uso como um operador de adição aritmética para somar dois números. Ele também pode ser usado para concatenar duas strings.
String str1 = "Hello";
String str2 = " World";
String str3 = str1 + str2; // Atribui "Hello World" a str3
4.2. Concatenando Tipos Primitivos a String
O operador de concatenação de strings também é usado para concatenar um valor de tipo de dado primitivo e de tipo de dado de referência a uma string.
int num = 26;
String str1 = "Alfabetos";
String str2 = num + str1; // Assigns "26Alfabetos" to str2
4.3. Concatenando null
Se uma variável de referência contiver a referência ‘null’, o operador de concatenação utiliza a string ‘null’.
String str1 = "Eu sou ";
String str2 = null;
String str3 = str1 + str2; // Assigns "Eu sou null" to str3
5. Operadores Relacionais
- Todos os operadores relacionais são operadores binários.
- Eles utilizam dois operandos.
- O resultado produzido por um operador relacional é sempre um valor booleano true ou false
- Eles são amplamente utilizados em instruções de controle em Java, como instruções if, while, etc.
Vamos ver abaixo todos os operadores relacionais disponíveis em Java.
Operador | Descrição |
‘==’ | Verifica se os valores dos operandos são iguais |
‘!=’ | Verifica se os valores dos operandos são diferentes |
‘>’ | Verifica se o operando da esquerda é maior que o da direita |
‘<‘ | Verifica se o operando da esquerda é menor que o da direita |
‘>=’ | Verifica se o operando da esquerda é maior ou igual ao da direita |
‘<=’ | Verifica se o operando da esquerda é menor ou igual ao da direita |
int result = 20;
if( result > 10) {//true
//some operation
}
boolean isEqual = ( 10 == 20 ); //false
6. Operadores Lógicos Booleanos
São usados apenas com operadores booleanos, principalmente em instruções de controle para comparar condições.
Operador | Descrição |
‘!’ | Inverte o valor booleano |
‘&&’ | Retorna true se ambos os operadores forem true |
‘&’ | Retorna true se ambos os operadores forem true |
‘||’ | Retorna true se um dos operadores for true |
‘|’ | Retorna true se um dos operandos for true |
‘^’ | Retorna true se um dos operandos for true, mas não ambos |
‘&=;’ | Se ambos os operandos forem avaliados como verdadeiros, `&=` retorna verdadeiro. Caso contrário, retorna falso. |
‘|=’ | Se qualquer um dos operandos for avaliado como verdadeiro, `|=` retorna verdadeiro. Caso contrário, retorna falso. |
‘^=’ | Se os dois operandos forem avaliados como valores diferentes, ou seja, se um dos operandos for verdadeiro, mas não ambos, `^=` retorna verdadeiro. Caso contrário, retorna falso. |
int result = 20;
if( result > 10 && result < 30) {
//alguma operacao
}
if( result > 10 || result < 30) {
//alguma operacao
}
- O operador lógico AND (&) funciona da mesma forma que o operador lógico AND de curto-circuito (&&), com uma diferença. O operador lógico AND (&) avalia seu operando à direita mesmo se o operando à esquerda for avaliado como falso.
- O operador lógico OR (|) funciona da mesma forma que o operador lógico OR de curto-circuito (||), com uma diferença. O operador lógico OR (|) avalia seu operando à direita mesmo se o operando à esquerda for avaliado como verdadeiro.
7. Operadores Bit a Bit
Os operadores bit a bit manipulam os bits individuais dos operandos, e podem ser aplicados a tipos inteiros.
Operador | Descrição |
‘&’ | O operador AND binário copia um bit para o resultado se ele existir em ambos os operandos. |
‘|’ | O operador OR binário copia um bit se ele existir em pelo menos um dos operandos. |
‘^’ | O operador XOR binário copia o bit se ele estiver definido em um dos operandos, mas não em ambos. |
‘~’ | O operador de complemento de um binário é unário e tem o efeito de ‘inverter’ os bits. |
<< | Operador de deslocamento à esquerda binário. O valor do operando à esquerda é deslocado para a esquerda pelo número de bits especificado pelo operando à direita. |
>> | Operador de deslocamento à direita binário. O valor do operando à esquerda é deslocado para a direita pelo número de bits especificado pelo operando à direita. |
>>> | Operador de deslocamento à direita com preenchimento de zeros. O valor do operando à esquerda é deslocado para a direita pelo número de bits especificado pelo operando à direita, e os valores deslocados são preenchidos com zeros. |
8. Operador Ternário
O “Operador Ternário” é um operador condicional que em Java utiliza três operandos. Sua sintaxe é:
condição ? expressão1 : expressão2
- Condição: Uma expressão booleana que é avaliada como true ou false.
- expressão1: Se a condição for true, essa expressão é avaliada e seu valor é retornado.
- expressão2: Se a condição for false, essa expressão é avaliada e seu valor é retornado.
Exemplo:
int a = 10;
int b = 20;
int maior = (a > b) ? a : b; // Se a > b, maior recebe o valor de a; caso contrário, recebe o valor de b.
O operador ternário é uma forma concisa de escrever uma expressão condicional, muitas vezes substituindo uma instrução if-else.
9. Tabela de Precedência dos Operadores
Java possui regras bem definidas para especificar a ordem na qual os operadores em uma expressão são avaliados quando a expressão contém vários operadores. Por exemplo, multiplicação e divisão têm maior precedência do que adição e subtração.
Regras de precedência podem ser sobrescritas por parênteses explícitos.
Quando dois operadores compartilham um operando, o operador com maior precedência vem primeiro. Por exemplo, 1 + 2 * 3
é tratado como 1 + (2 * 3)
porque a precedência da multiplicação é maior do que a adição.
Na expressão acima, se você quiser adicionar os valores primeiro, use parênteses explícitos assim: (1 + 2) * 3
.
Precedência dos Operadores
Precedência | Operador | Tipo | Associatividade |
---|---|---|---|
15 | () [] | Parênteses, Subscrito de Array, Seleção de Membro | Esquerda para Direita |
14 | ++ -- | Incremento e Decremento Pós-fixado | Direita para Esquerda |
13 | ++ -- + - ! ~ (tipo) | Incremento e Decremento Pré-fixado, Mais, Menos, Negação Lógica, Complemento Bitwise, Conversão de Tipo | Direita para Esquerda |
12 | * / % | Multiplicação, Divisão, Módulo | Esquerda para Direita |
11 | + - | Adição, Subtração | Esquerda para Direita |
10 | << >> >>> | Deslocamento à Esquerda, Deslocamento à Direita com Sinal, Deslocamento à Direita com Preenchimento de Zeros | Esquerda para Direita |
9 | < <= > >= instanceof | Relacional Menor, Menor ou Igual, Maior, Maior ou Igual, Comparação de Tipo | Esquerda para Direita |
8 | == != | Igualdade, Diferença | Esquerda para Direita |
7 | & | AND Bitwise | Esquerda para Direita |
6 | ^ | XOR Bitwise | Esquerda para Direita |
5 | ` | ` | OR Bitwise |
4 | && | AND Lógico | Esquerda para Direita |
3 | ` | ` | |
2 | ?: | Condicional Ternário | Direita para Esquerda |
1 | = += -= *= /= %= | Atribuição, Atribuição com Adição, Atribuição com Subtração, Atribuição com Multiplicação, Atribuição com Divisão, Atribuição com Módulo | Direita para Esquerda |
Essa tabela ajuda a determinar a ordem em que os operadores são aplicados em expressões complexas, garantindo que a avaliação aconteça conforme esperado.