Uma classe pode ser entendida como um conjunto de métodos.
A classe Math do Java fornece diversos métodos matemáticos úteis para cálculos comuns. Esses métodos são estáticos, o que significa que podem ser usados diretamente sem criar uma instância da classe Math.
| Método | Descrição | Exemplo |
|---|---|---|
| Math.abs(x) | Valor absoluto | Math.abs(-5) → 5 |
| Math.pow(a, b) | Potência | Math.pow(2, 3) → 8.0 |
| Math.sqrt(x) | Raiz quadrada | Math.sqrt(16) → 4.0 |
| Math.max(a, b) | Maior valor | Math.max(10, 20) → 20 |
| Math.min(a, b) | Menor valor | Math.min(10, 20) → 10 |
| Math.round(x) | Arredonda para o inteiro mais próximo | Math.round(5.6) → 6 |
| Math.floor(x) | Arredonda para baixo | Math.floor(4.9) → 4.0 |
| Math.ceil(x) | Arredonda para cima | Math.ceil(4.1) → 5.0 |
| Math.random() | Número aleatório entre 0.0 e 1.0 | Math.random() |
Os métodos da classe Math têm tipos de retorno diferentes: Math.round() retorna um valor inteiro (int quando o parâmetro é float, ou long quando o parâmetro é double - sendo long também um tipo de número inteiro), enquanto Math.floor() e Math.ceil() sempre retornam valores do tipo double, mesmo quando o resultado numérico é um número inteiro como 4.0 ou 5.0. Essa diferença é importante ao atribuir os resultados a variáveis, pois pode ser necessário fazer conversão de tipos (cast) dependendo do método utilizado.
public class ExemplosClasseMath {
public static void main(String[] args) {
// Valor absoluto - retorna o valor positivo de um número
int numeroNegativo = -25;
int valorAbsoluto = Math.abs(numeroNegativo);
System.out.println("Math.abs(" + numeroNegativo + ") = " + valorAbsoluto);
// Potência - eleva o primeiro número (base) ao segundo número (expoente)
double base = 2.0;
double expoente = 3.0;
double potencia = Math.pow(base, expoente);
System.out.println("Math.pow(" + base + ", " + expoente + ") = " + potencia);
// Raiz quadrada - calcula a raiz quadrada de um número
double numero = 16.0;
double raizQuadrada = Math.sqrt(numero);
System.out.println("Math.sqrt(" + numero + ") = " + raizQuadrada);
// Máximo - retorna o maior entre dois valores
int a = 30;
int b = 45;
int maximo = Math.max(a, b);
System.out.println("Math.max(" + a + ", " + b + ") = " + maximo);
// Mínimo - retorna o menor entre dois valores
int minimo = Math.min(a, b);
System.out.println("Math.min(" + a + ", " + b + ") = " + minimo);
// Arredondamento para o inteiro mais próximo
float numeroFloat = 5.6f;
long arredondado = Math.round(numeroFloat);
System.out.println("Math.round(" + numeroFloat + ") = " + arredondado);
// Arredondamento para baixo (maior inteiro menor ou igual ao número)
double numeroParaBaixo = 4.9;
double arredondadoBaixo = Math.floor(numeroParaBaixo);
System.out.println("Math.floor(" + numeroParaBaixo + ") = " + arredondadoBaixo);
// Arredondamento para cima (menor inteiro maior ou igual ao número)
double numeroParaCima = 4.1;
double arredondadoCima = Math.ceil(numeroParaCima);
System.out.println("Math.ceil(" + numeroParaCima + ") = " + arredondadoCima);
// Número aleatório entre 0.0 (inclusive) e 1.0 (exclusive)
double aleatorio = Math.random();
System.out.println("Math.random() = " + aleatorio);
// Gerando número aleatório em um intervalo específico (1 a 100)
int aleatorioIntervalo = (int)(Math.random() * 100) + 1;
System.out.println("Número aleatório entre 1 e 100: " + aleatorioIntervalo);
}
}
Math.abs(-25) = 25
Math.pow(2.0, 3.0) = 8.0
Math.sqrt(16.0) = 4.0
Math.max(30, 45) = 45
Math.min(30, 45) = 30
Math.round(5.6) = 6
Math.floor(4.9) = 4.0
Math.ceil(4.1) = 5.0
Math.random() = 0.7239651193726082
Número aleatório entre 1 e 100: 73
O método Math.random() gera números aleatórios entre 0.0 (inclusive) e 1.0 (exclusive). Para gerar números aleatórios em diferentes intervalos, precisamos fazer algumas operações:
public class NumerosAleatorios {
public static void main(String[] args) {
// Gerando número aleatório entre 0.0 e 1.0
double aleatorio01 = Math.random(); // valor aleatório: 0.3782518296207728
System.out.println("Número aleatório entre 0.0 e 1.0: " + aleatorio01);
// Gerando número inteiro aleatório entre 0 e 9
double aleatorio02 = Math.random(); // valor aleatório: 0.0484432962077289
double aleatorio02Vezes10 = (aleatorio02 * 10);
// valor aleatório*10: 0.484432962077289
int aleatorio0a9 = (int)(aleatorio02Vezes10);
// valor inteiro: 0
System.out.println("Número aleatório entre 0 e 9: " + aleatorio0a9);
// Gerando número inteiro aleatório entre 1 e 10
double aleatorio03 = Math.random(); // valor aleatório: 0.7539432103127853
double aleatorio03Vezes10 = (aleatorio03 * 10);
// valor aleatório*10: 7.539432103127853
int aleatorio1a10 = (int)(aleatorio03Vezes10 + 1);
// valor inteiro: 8
System.out.println("Número aleatório entre 1 e 10: " + aleatorio1a10);
// Fórmula geral para gerar número aleatório entre min e max:
// int aleatorio = (int)(Math.random() * (max - min + 1)) + min;
// Exemplo: número aleatório entre 20 e 30
int min = 20;
int max = 30;
int aleatorioMinMax = (int)(Math.random() * (max - min + 1)) + min;
System.out.println("Número aleatório entre " + min + " e " + max + ": " + aleatorioMinMax);
}
}
Número aleatório entre 0.0 e 1.0: 0.3782518296207728
Número aleatório entre 0 e 9: 0
Número aleatório entre 1 e 10: 8
Número aleatório entre 20 e 30: 25
Dica: Para gerar números aleatórios em um intervalo específico [min, max], use a fórmula:
int aleatorio = (int)(Math.random() * (max - min + 1)) + min;
Teste seus conhecimentos sobre a classe Math:
Reforce o conteúdo desta aula com mais dois exercícios práticos: