Fala, meus consagrados! Beleza?
Neste artigo, teremos um resumo sobre os operadores aritméticos na linguagem Java.
Temos os seguintes operadores aritméticos:
- Adição + ;
- Subtração – ;
- Multiplicação * ;
- Divisão / ; e
- Módulo ou resto da divisão % .
Figura 1: Operadores aritméticos.
Esses operadores são bem tranquilos de serem aplicados, porém, há alguns detalhes que precisamos estudar. É o que veremos nos próximos tópicos.
Operador | Nome | Exemplo |
+ | Adição | x + y |
– | Subtração | x – y |
* | Multiplicação | x * y |
/ | Divisão | x / y |
% | Módulo ou resto da divisão | x % y |
Tabela 1: Exemplos do uso dos operadores aritméticos.
Na linguagem Java, não há um operador de exponenciação. Para essa operação, utilizamos o método pow() da classe Math (Math.pow(x, y).
Exemplo da operação de exponenciação em Java:
int x = 2;
int y = 3;
System.out.println(Math.pow(x, y)); // 8.0
Antes de vermos detalhes de alguns operadores, é importante entendermos os tipos dos resultados das operações aritméticas:
- O tipo do resultado é int quando os dois operadores são dos tipos byte, short e int;
- O tipo do resultado é long quando:
- Pelo menos um operador for do tipo long; e
- O outro for um tipo menos preciso;
- O tipo do resultado é float quando:
- Pelo menos um operador for do tipo float; e
- O outro for um tipo menos preciso;
- O tipo do resultado é double quando:
- Pelo menos um operador for do tipo double; e
- O outro for um tipo menos preciso.
Tipo do operando 1 | Tipo do operando 2 | Tipo de resultado da operação |
byte | byte | int |
short | short | int |
int | int | int |
Pelo menos um deles for do tipo long e o outro for do mesmo tipo ou de um tipo menos preciso | long | |
Pelo menos um deles for do tipo float e o outro for do mesmo tipo ou de um tipo menos preciso | float | |
Pelo menos um deles for do tipo double e o outro for do mesmo tipo ou de um tipo menos preciso | double |
Tabela 2: Resumo da descrição das fases de uma aplicação Java.
Exemplo 1:
byte j = 15;
byte l = 20;
byte m = (byte) (j + l);
No exemplo 1, os dois operandos j e l são do tipo byte e o resultado da operação de adição dos dois operandos é do tipo int. Com isso, houve a necessidade de se fazer casting para que a variável m do tipo byte pudesse receber o resultado da operação.
Exemplo 2:
int n = 15;
long o = 20;
int p = (int) (n – o);
No exemplo 2, o operando o é do tipo long e o tipo do operando n é de um tipo menos preciso que o primeiro operando. Então o resultado da operação de adição dos dois operandos é do tipo long. A variável p é do tipo int e, para que ela pudesse receber o resultado, houve a utilização de casting.
Exemplo 3:
float q = 15.5f;
double r = 20.7;
float s = (float) (q * r);
double é o tipo retorno pela multiplicação da variável q do tipo float pela variável r do tipo double. Isso acontece porque um dos operandos é double e outro é de um tipo menos preciso do que double, tipo float. Por isso temos que fazer casting para que a variável s do tipo float possa receber o resultado da operação.
Exemplo 5:
byte t = 19;
int u = 3;
double v = t / u;
No exemplo 5, temos dois operandos: t do tipo byte e u do tipo int. A variável t recebeu o valor 19 e a u, 3. Temos também a declaração da variável v do tipo double recebendo o resultado da operação de divisão das variáveis t e u. Com isso, v receberá 6.0.
Como ambos os operandos são do grupo dos tipos numéricos integrais, então o resultado da divisão no exemplo é do tipo int 6, mas a variável v é do tipo double, então haverá a conversão automática de 6 para double (6.0).
Exemplo 6:
double w = 19.0;
int x = 3;
double y = w / x;
No exemplo 6, temos dois operandos w e x, sendo a variável w do tipo double e a variável x do tipo int. Com isso, o resultado da operação de divisão entre essas variáveis será do tipo double (6.333333333333333). Como a variável y é do tipo double, então ela vai receber esse valor.
O operador de adição + possui duas funções:
- Função 1: adição entre tipos numéricos; e
- Função 2: concatenação de strings.
Como concatenador de strings, basta que um dos operandos seja do tipo String para que o resultado da operação seja uma string concatenada.
Figura 2: Funções do operador de adição +.
Se forem usados vários operadores de adição e vários operandos, a partir do primeiro operando do tipo String, terão a função de concatenar strings o operador de adição antes desse operando e todos os operadores de adição após ele.
Exemplo:
String z = 15 + 8 + “Kal-El” + 15 + 8;
// z terá valor de “23Kal-El158”
// 15 + 8 antes do operando “Kal-El” foram somados (23)
// 15 + 8 depois do operando “Kal-El” foram concatenados (158)
Figura 3: Operadores de divisão / e módulo % entre dois números inteiros.
O operador de divisão / representa a divisão de:
- Números inteiros; e
- Números de ponto flutuante.
No caso de divisão de números inteiros, ou seja, quando os operandos sejam do tipo do grupo BSIL (byte, short, int e long):
- O tipo do resultado é int quando os dois operandos são dos tipos byte, short e int;
- O tipo do resultado é long quando:
- Pelo menos um dos operandos for do tipo long; e
- O outro for de um tipo igual ou menos preciso;
Exemplo:
int x = 15 / 2; // x receberá o valor 7
Em uma divisão de inteiros, quando o divisor for 0, leva-se a uma exceção ArithmeticException, pois não há divisão de inteiros por zero!
No caso de divisão de números de ponto flutuante:
- O tipo do resultado é float quando:
- Pelo menos um dos operandos for do tipo float; e
- O outro for de um tipo igual ou menos preciso;
- O tipo do resultado é double quando:
- Pelo menos um dos operandos for do tipo double; e
- O outro for de um tipo igual ou menos preciso.
Exemplo:
double y = 15 / 2.0; // y terá valor 7.5.
Quando da divisão de (sendo um deles dos tipos FD float/double):
- Número positivo por 0, produz resultado infinito positivo;
- Número negativo por 0, produz resultado infinito negativo; e
- 0 por 0, produz NaN (not a number).
O operador de divisão / representa o quociente da divisão entre dois números inteiros, enquanto o operador módulo % representa o resto da divisão entre dois números inteiros.
Espero que tenham gostado!
Forte abraço e até a próxima jornada!
_________________________
Professor Rogerão Araújo
Quer ficar por dentro dos concursos públicos abertos e previstos pelo Brasil?
clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
clique no link abaixo e inscreva-se gratuitamente:
Participe da conversa