0Pricing
Java Academy · Урок

Основы класса Math

Используйте Math.abs, Math.pow, Math.sqrt, Math.random и другие часто применяемые методы Math.

«Основы класса Math» — бесплатный урок Java Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.

Математический класс

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

Абсолютное значение и знак

Math.abs() возвращает абсолютное значение (неотрицательное). Math.signum() возвращает -1.0, 0.0 или 1.0 в зависимости от знака.

System.out.println(Math.abs(-42));      // 42
System.out.println(Math.abs(3.14));     // 3.14
System.out.println(Math.signum(-5.0));  // -1.0
System.out.println(Math.signum(0.0));   //  0.0
System.out.println(Math.signum(7.0));   //  1.0

Степень, квадратный и кубический корни

Используйте Math.pow(base, exp) для возведения в степень, Math.sqrt() для вычисления квадратного корня и Math.cbrt() для вычисления кубического корня.

System.out.println(Math.pow(2, 10));  // 1024.0
System.out.println(Math.sqrt(144));   // 12.0
System.out.println(Math.cbrt(27));    // 3.0

// Hypotenuse of a right triangle (a=3, b=4)
double hyp = Math.sqrt(Math.pow(3, 2) + Math.pow(4, 2));
System.out.println(hyp); // 5.0

Минимум, максимум и ограничение диапазона

Math.min() и Math.max() возвращают меньшее или большее из двух значений. Объедините их, чтобы реализовать ограничение, удерживающее значение в заданном диапазоне.

int a = 10, b = 20;
System.out.println(Math.min(a, b)); // 10
System.out.println(Math.max(a, b)); // 20

// Clamp value between 0 and 100
int clamp(int value, int min, int max) {
    return Math.max(min, Math.min(value, max));
}
System.out.println(clamp(150, 0, 100)); // 100
System.out.println(clamp(-5,  0, 100)); // 0
System.out.println(clamp(75,  0, 100)); // 75

Округление вниз, вверх и до ближайшего целого

Math.floor() округляет вниз, Math.ceil() — вверх, а Math.round() — до ближайшего целого (половины округляются вверх).

double price = 9.3;
System.out.println(Math.floor(price));  // 9.0
System.out.println(Math.ceil(price));   // 10.0
System.out.println(Math.round(price));  // 9

double shipping = 3.5;
System.out.println(Math.round(shipping)); // 4 (half-up)

// Round to 2 decimal places
double tax = 7.5678;
double rounded = Math.round(tax * 100.0) / 100.0;
System.out.println(rounded); // 7.57

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

Math.log() вычисляет натуральный логарифм (по основанию e), Math.log10() — логарифм по основанию 10, а Math.exp() — значение e^x.

System.out.println(Math.log(Math.E));   // 1.0
System.out.println(Math.log10(1000));   // 3.0
System.out.println(Math.exp(1));        // 2.718281828...

// Change of base: log2(8)
double log2 = Math.log(8) / Math.log(2);
System.out.println(log2); // 3.0

// Compound interest: P * e^(r*t)
double principal = 1000, rate = 0.05, years = 10;
double amount = principal * Math.exp(rate * years);
System.out.printf("Amount: %.2f%n", amount); // 1648.72

Тригонометрические методы

Math предоставляет тригонометрические функции, принимающие углы в радианах. Используйте Math.toRadians(), чтобы преобразовать градусы в радианы.

double angle = Math.toRadians(45);
System.out.printf("sin(45): %.4f%n", Math.sin(angle)); // 0.7071
System.out.printf("cos(45): %.4f%n", Math.cos(angle)); // 0.7071
System.out.printf("tan(45): %.4f%n", Math.tan(angle)); // 1.0000

// Distance between two GPS coordinates (simplified)
double lat1 = Math.toRadians(40.7128);
double lat2 = Math.toRadians(34.0522);
double deltaLat = lat2 - lat1;
System.out.printf("Delta lat (rad): %.4f%n", deltaLat);

Случайные числа

Math.random() возвращает значение типа double из диапазона [0.0, 1.0). Умножьте его и выполните приведение, чтобы получить целые числа из заданного диапазона. Для более качественной случайности предпочитайте java.util.Random.

// Random double [0.0, 1.0)
double rand = Math.random();

// Random int [min, max] inclusive
int min = 1, max = 6;
int dice = (int) (Math.random() * (max - min + 1)) + min;
System.out.println("Dice roll: " + dice); // 1–6

// Prefer java.util.Random for more features
import java.util.Random;
Random rng = new Random();
int secureRoll = rng.nextInt(6) + 1; // cleaner API
System.out.println("Secure roll: " + secureRoll);

Константы: число π и число e

Math.PI и Math.E — константы типа double, соответствующие числу π и числу Эйлера e. Используйте их в геометрических и финансовых вычислениях.

System.out.println(Math.PI); // 3.141592653589793
System.out.println(Math.E);  // 2.718281828459045

// Circle area and circumference
double radius = 7.0;
double area = Math.PI * Math.pow(radius, 2);
double circumference = 2 * Math.PI * radius;

System.out.printf("Area: %.2f%n", area);           // 153.94
System.out.printf("Circumference: %.2f%n", circumference); // 43.98

Math.floorDiv и Math.floorMod

Math.floorDiv() и Math.floorMod() единообразно обрабатывают отрицательные числа, в отличие от операторов / и %, которые могут давать неожиданные результаты с отрицательными значениями.

// Regular % can be negative with negative dividend
System.out.println(-7 % 3);           // -1 (may surprise you)
System.out.println(Math.floorMod(-7, 3)); // 2  (always non-negative)

// Floor division rounds toward negative infinity
System.out.println(-7 / 3);              // -2 (truncates toward zero)
System.out.println(Math.floorDiv(-7, 3)); // -3 (floors down)

// Use floorMod for cyclic calculations like days of week
int day = Math.floorMod(-1, 7); // Sunday (6), not -1
System.out.println(day); // 6

Практика: расстояние и физика

Применение математических методов к физической задаче: вычисление дальности полёта снаряда с помощью тригонометрии и квадратных корней.

// Projectile range: R = v^2 * sin(2*angle) / g
double velocity = 50.0;   // m/s
double angleDeg = 45.0;   // degrees
double g = 9.81;          // m/s^2

double angleRad = Math.toRadians(angleDeg);
double range = Math.pow(velocity, 2) * Math.sin(2 * angleRad) / g;

System.out.printf("Projectile range: %.1f m%n", range); // 254.8 m

Быстрая проверка

Каков результат выполнения Math.floorMod(-7, 3)?

Итоги: математический класс

Основные выводы:

  • Math.abs, Math.min, Math.max — для базовых сравнений
  • Math.pow, Math.sqrt, Math.cbrt — для степеней и корней
  • Math.floor, Math.ceil, Math.round — для округления
  • Math.log, Math.log10, Math.exp — для логарифмов и экспонент
  • Math.sin, Math.cos, Math.tan используют радианы — преобразуйте градусы с помощью Math.toRadians
  • Math.floorMod корректно обрабатывает отрицательные числа в циклической арифметике
  • Математические константы доступны встроенными

Часто задаваемые вопросы

Урок «Основы класса Math» бесплатный?

Да — полный текст урока «Основы класса Math» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы класса Math»?

Используйте Math.abs, Math.pow, Math.sqrt, Math.random и другие часто применяемые методы Math. Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Java Academy?

Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы класса Math»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Java Academy?

Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы класса Math
  2. Целочисленная арифметика и переполнение
  3. BigDecimal для финансовых вычислений
  4. NumberFormat и printf
← Назад к Java Academy