Java - Класс Numbers
Привет, мечтающие программисты на Java! Сегодня мы погружаемся в увлекательный мир чисел в Java. Не волнуйтесь, если вы новичок в программировании; мы начнем с основ и постепенно будем углубляться. К концу этого урока вы сможете манипулировать числами как профи!
Введение в Java Numbers
В Java числа не просто значения; это объекты с суперсилами! Java предоставляет несколько классов для обработки различных типов чисел. Эти классы являются частью пакета java.lang
, который автоматически импортируется в каждую программу на Java.
Иерархия класса Number
Давайте начнем с общего взгляда на иерархию класса Number:
Number (абстрактный)
|
+-------+-------+
| | |
Integer Float Double
|
Byte
Класс Number
является суперклассом всех классов-оберток для числовых типов. Он является абстрактным, что означает, что вы не можете создать объект Number
напрямую, но вы можете использовать его подклассы.
Классы-обертки
Java предоставляет классы-обертки для каждого примитивного числового типа. Эти классы "оборачивают" примитивные значения в объекты, добавляя им дополнительную функциональность. Вот таблица наиболее часто используемых числовых классов-оберток:
Примитивный тип | Класс-обертка |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
Создание объектов Number
Давайте создадим несколько объектов чисел и посмотрим, как они работают:
Integer intObj = new Integer(42);
Double doubleObj = new Double(3.14159);
Float floatObj = new Float(2.5f);
В этом примере мы создаем объекты различных типов чисел. Обратите внимание, как мы используем ключевое слово new
, следуемое конструктором класса-обертки.
Но подождите, есть проще! Java предоставляет автобоксинг, который автоматически преобразует примитивы в их объекты-обертки:
Integer intObj = 42;
Double doubleObj = 3.14159;
Float floatObj = 2.5f;
Не замечательно? Java делает обертку для нас за кулисами!
Общие методы Number
Теперь, когда у нас есть наши объекты чисел, давайте рассмотрим некоторые полезные методы, которые они предоставляют:
1. valueOf()
Метод valueOf()
является удобным способом создания объектов чисел:
Integer intObj = Integer.valueOf(42);
Double doubleObj = Double.valueOf("3.14159");
Этот метод часто предпочитается использованию конструкторов, потому что может повторно использовать кэшированные объекты для лучшей производительности.
2. xxxValue()
Эти методы преобразуют объект числа в его примитивный тип:
Integer intObj = 42;
int intValue = intObj.intValue();
double doubleValue = intObj.doubleValue();
Здесь intValue()
возвращает значение int, а doubleValue()
преобразует его в double.
3. compareTo()
Этот метод сравнивает два объекта чисел:
Integer num1 = 42;
Integer num2 = 100;
int result = num1.compareTo(num2);
System.out.println(result); // Выводит: -1
Метод compareTo()
возвращает:
- Отрицательное значение, если первое число меньше второго
- Ноль, если они равны
- Положительное значение, если первое число больше второго
4. equals()
Этот метод проверяет, равны ли два объекта чисел:
Integer num1 = 42;
Integer num2 = 42;
boolean areEqual = num1.equals(num2);
System.out.println(areEqual); // Выводит: true
Помните, equals()
сравнивает значения, а не ссылки на объекты!
Забава с числами: мини-проект
Поместим наши новые знания в использование с мини-проектом. Создадим простую игру в угадывание числа:
import java.util.Random;
import java.util.Scanner;
public class NumberGuessingGame {
public static void main(String[] args) {
Random random = new Random();
Integer secretNumber = random.nextInt(100) + 1;
Scanner scanner = new Scanner(System.in);
Integer guess;
int attempts = 0;
System.out.println("Добро пожаловать в игру 'Угадай число'!");
System.out.println("Я думаю о числе от 1 до 100.");
do {
System.out.print("Введите ваше предположение: ");
guess = scanner.nextInt();
attempts++;
if (guess.compareTo(secretNumber) < 0) {
System.out.println("Слишком мало! Попробуйте еще раз.");
} else if (guess.compareTo(secretNumber) > 0) {
System.out.println("Слишком много! Попробуйте еще раз.");
} else {
System.out.println("Поздравляем! Вы угадали число за " + attempts + " попыток!");
}
} while (!guess.equals(secretNumber));
scanner.close();
}
}
Разберем, что происходит в этом коде:
- Мы создаем объект
Random
, чтобы сгенерировать случайное число от 1 до 100. - Мы используем
Scanner
, чтобы читать пользовательский ввод. - Мы используем цикл do-while, чтобы продолжать спрашивать предположения до тех пор, пока не будет угадано правильное число.
- Мы используем
compareTo()
, чтобы проверить, слишком мало или слишком много введено число. - Мы используем
equals()
, чтобы проверить, правильно ли угадано число.
Эта игра демонстрирует, как мы можем использовать объекты Number и их методы в реальном приложении. Это не просто хранение чисел; это их манипуляция и сравнение в значимых контекстах.
Заключение
Мы лишь коснулись поверхности того, что классы Number в Java могут делать. Когда вы продолжите свое погружение в мир Java, вы обнаружите еще более мощные функции и методы. Помните, практика совершенствует мастера, поэтому не стесняйтесь экспериментировать с этими концепциями в своих проектах.
Продолжайте программировать, учиться и, что самое важное, наслаждайтесь числами в Java!
Credits: Image by storyset