Math

Класс java.lang.Math содержит набор статических методов и констант для математических вычислений: корни, степени, тригонометрия, округление, случайные числа, минимум и максимум. Класс находится в пакете java.lang, поэтому импортировать его не нужно.

Все методы класса Math — статические. Это значит, что их нужно вызывать через имя класса: Math.sqrt(4), а не создавать объект. Сам класс Math объявлен final, и создать его экземпляр нельзя.

Внутри класса определены две основные константы: Math.PI (число π ≈ 3.14159…) и Math.E (основание натурального логарифма ≈ 2.71828…).

Зачем нужен

  • считать корни, степени и логарифмы;

  • работать с тригонометрией (синусы, косинусы);

  • округлять дробные числа;

  • генерировать случайные числа;

  • находить минимум и максимум двух значений.

Использование

Никаких импортов не требуется:

double r = Math.sqrt(25.0);   // 5.0
double p = Math.pow(2, 10);   // 1024.0
int m = Math.max(7, 12);      // 12

Популярные методы и константы

Метод / Константа

Назначение

Math.PI

константа π

Math.E

константа e

Math.abs(x)

модуль (абсолютное значение)

Math.max(a, b)

максимум двух чисел

Math.min(a, b)

минимум двух чисел

Math.sqrt(x)

квадратный корень

Math.cbrt(x)

кубический корень

Math.pow(a, b)

возведение в степень a^b

Math.exp(x)

e в степени x

Math.log(x)

натуральный логарифм

Math.log10(x)

десятичный логарифм

Math.sin / cos / tan

тригонометрия (в радианах)

Math.toRadians(deg)

градусы → радианы

Math.toDegrees(rad)

радианы → градусы

Math.round(x)

округление к ближайшему целому

Math.floor(x)

округление вниз

Math.ceil(x)

округление вверх

Math.random()

случайное число [0.0, 1.0)

Math.signum(x)

знак: -1.0, 0.0 или 1.0

Math.hypot(a, b)

sqrt(a*a + b*b)

Примеры

Пример 1. Модуль и сравнение

public class Demo1 {
    public static void main(String[] args) {
        int a = -7;
        int b = 5;
        System.out.println("|a| = " + Math.abs(a));
        System.out.println("max = " + Math.max(a, b));
        System.out.println("min = " + Math.min(a, b));
    }
}

Вывод:

|a| = 7
max = 5
min = -7

Пример 2. Корень и степень

public class Demo2 {
    public static void main(String[] args) {
        System.out.println("sqrt(81) = " + Math.sqrt(81));
        System.out.println("cbrt(27) = " + Math.cbrt(27));
        System.out.println("2^10 = " + Math.pow(2, 10));
    }
}

Вывод:

sqrt(81) = 9.0
cbrt(27) = 3.0
2^10 = 1024.0

Пример 3. Округление

public class Demo3 {
    public static void main(String[] args) {
        double x = 3.7;
        double y = 3.2;
        System.out.println("round(3.7) = " + Math.round(x));
        System.out.println("floor(3.7) = " + Math.floor(x));
        System.out.println("ceil(3.2) = " + Math.ceil(y));
    }
}

Вывод:

round(3.7) = 4
floor(3.7) = 3.0
ceil(3.2) = 4.0

Пример 4. Длина гипотенузы

public class Demo4 {
    public static void main(String[] args) {
        double a = 3;
        double b = 4;
        double c = Math.hypot(a, b);
        System.out.println("Гипотенуза: " + c);
    }
}

Вывод:

Гипотенуза: 5.0

Пример 5. Площадь круга

public class Demo5 {
    public static void main(String[] args) {
        double r = 5;
        double area = Math.PI * Math.pow(r, 2);
        System.out.printf("Площадь круга радиуса %.0f = %.4f%n", r, area);
    }
}

Вывод:

Площадь круга радиуса 5 = 78,5398

Пример 6. Случайное число от 1 до 6 (кубик)

public class Demo6 {
    public static void main(String[] args) {
        // фиксируем seed через java.util.Random для воспроизводимого вывода
        java.util.Random rnd = new java.util.Random(42);
        for (int i = 0; i < 5; i++) {
            int dice = 1 + rnd.nextInt(6);
            System.out.println("Бросок " + (i + 1) + ": " + dice);
        }
    }
}

Вывод (для seed 42):

Бросок 1: 1
Бросок 2: 2
Бросок 3: 5
Бросок 4: 4
Бросок 5: 5

Пример 7. Тригонометрия

public class Demo7 {
    public static void main(String[] args) {
        double deg = 30;
        double rad = Math.toRadians(deg);
        System.out.printf("sin(30°) = %.4f%n", Math.sin(rad));
        System.out.printf("cos(60°) = %.4f%n", Math.cos(Math.toRadians(60)));
    }
}

Вывод:

sin(30°) = 0,5000
cos(60°) = 0,5000

Пример 8. Логарифмы и экспонента

public class Demo8 {
    public static void main(String[] args) {
        System.out.println("log10(1000) = " + Math.log10(1000));
        System.out.println("ln(e) = " + Math.log(Math.E));
        System.out.println("exp(1) = " + Math.exp(1));
    }
}

Вывод:

log10(1000) = 3.0
ln(e) = 1.0
exp(1) = 2.718281828459045

См. также

Примечание

Лицензия и источники

Техническое описание класса адаптировано из официальной Java API Documentation (https://docs.oracle.com/en/java/javase/), Oracle Free Documentation License. Перевод на русский, примеры и пояснения — © AlashEd Wiki.