Типы данных в Java: примитивы, обёртки и String

В Java у каждой переменной есть тип, и компилятор строго за ним следит. Это кажется лишней формальностью, пока не спасёт вас от ошибки, которая в другом языке всплыла бы только в работающей программе. Разбираем типы данных по порядку.
Редакция Бинариума
Пишем о профессиях в дизайне, BIM и IT · 6 минут чтения
Из этой статьи вы узнаете:
Восемь примитивных типов
| Тип | Размер | Для чего |
|---|---|---|
| byte | 8 бит | Целые от −128 до 127 |
| short | 16 бит | Целые до ±32 тысяч |
| int | 32 бита | Обычные целые числа — используется чаще всего |
| long | 64 бита | Большие целые: идентификаторы, время в миллисекундах |
| float | 32 бита | Дробные с меньшей точностью |
| double | 64 бита | Дробные числа — стандартный выбор |
| char | 16 бит | Один символ |
| boolean | — | true или false |
На практике чаще всего используются int, long, double и boolean. Остальные нужны в специфических задачах.
Классы-обёртки
У каждого примитива есть класс-обёртка: Integer, Long, Double, Boolean и другие. Они нужны, например, в коллекциях — туда нельзя положить примитив.
List<Integer> numbers = new ArrayList<>(); numbers.add(5); // int автоматически упаковывается в Integer
Курс Бинариума
Java-разработчик с нуля — основы языка на практике
String
String — не примитив, а класс. Строки в Java неизменяемы: любая «правка» создаёт новую строку.
String name = "Java"; String upper = name.toUpperCase(); // name не изменилась
Ловушки для новичков
Деление целых чисел
int a = 7 / 2; // 3, а не 3.5 double b = 7 / 2.0; // 3.5
Сравнение строк
s1 == s2 // сравнивает ссылки — ошибка s1.equals(s2) // сравнивает содержимое — правильно
Переполнение
Если результат вычисления не помещается в int, он «перескакивает» в отрицательные значения без всякой ошибки. Для больших чисел используйте long.
Деньги в double
Дробные типы хранят числа приблизительно. Для денежных расчётов используют BigDecimal.
Главное
- В Java восемь примитивов, чаще всего — int, long, double, boolean.
- Обёртки нужны для коллекций и работы с null.
- Строки неизменяемы и сравниваются через equals.
- Осторожно с делением целых, переполнением и деньгами в double.
Частые вопросы
Что такое var в Java?
Ключевое слово, которое позволяет не писать тип локальной переменной явно — компилятор выведет его сам. Тип при этом всё равно строгий.
Может ли примитив быть null?
Нет. null может быть только у объектов, например у Integer.
Курс Бинариума
Java-разработчик с нуля
От типов данных до собственного проекта на GitHub.
- 11 недель обучения
- 10+ практических работ
- Проект в портфолио