Примитивные типы
В Java есть восемь примитивных типов — простейших типов, значения которых хранятся прямо в переменной. Из них строятся все остальные данные. Тип определяет, сколько памяти занимает значение и какие числа в него помещаются.
Целые числа
Для целых чисел есть четыре типа разного размера. Чаще всего используют int, а для очень больших значений — long:
| Тип | Размер | Диапазон |
|---|---|---|
byte | 1 байт | от −128 до 127 |
short | 2 байта | от −32 768 до 32 767 |
int | 4 байта | примерно ±2,1 миллиарда |
long | 8 байт | примерно ±9,2 × 10¹⁸ |
void main() {
int population = 146_000_000;
long distance = 9_460_730_472_580L;
IO.println(population);
IO.println(distance);
}Результат:
146000000
9460730472580Подчёркивания в числе облегчают чтение и ни на что не влияют. Буква L в конце говорит, что число имеет тип long.
Дробные числа
Для чисел с дробной частью есть double и float. Обычно берут double: он точнее. Значение для float помечают буквой f:
void main() {
double pi = 3.14159;
float rate = 0.5f;
IO.println(pi * 2);
IO.println(rate);
}Результат:
6.28318
0.5Символы
Тип char хранит один символ. Его пишут в одинарных кавычках, в отличие от строки в двойных:
void main() {
char grade = 'A';
char letter = 'Ж';
IO.println(grade);
IO.println(letter);
}Результат:
A
ЖЛогический тип
Тип boolean принимает только два значения: true (истина) и false (ложь). Такие значения получаются при сравнении и управляют условиями:
void main() {
boolean isAdult = 20 >= 18;
IO.println(isAdult);
}Результат:
trueПереполнение
Если результат не помещается в тип, он «перескакивает» на другой конец диапазона. Java при этом не сообщает об ошибке:
void main() {
int max = Integer.MAX_VALUE;
IO.println(max);
IO.println(max + 1);
}Результат:
2147483647
-2147483648Integer.MAX_VALUE — наибольшее значение int. Если числа могут быть такими большими, используйте long.
Частая ошибка
Целое число в коде по умолчанию считается int. Если оно больше диапазона int, программа не скомпилируется — даже когда переменная имеет тип long:
void main() {
long big = 3000000000;
IO.println(big);
}Результат:
Main.java:2: error: integer number too large
long big = 3000000000;
^
1 error
error: compilation failedДобавьте букву L: 3000000000L.