- Объявлять переменную с типом и присваивать ей значение
- Выбирать подходящий примитивный тип для задачи
- Правильно вычислять с целочисленным делением, остатком и приведением типов
Интернет-магазин должен помнить название каждого товара, его цену, сколько штук осталось на складе и действует ли на него скидка. Программы хранят такие данные в переменных. В Java у каждой переменной есть заранее известный тип, и он никогда не меняется, — такие языки называют статически типизированными.
Объявление переменных
Чтобы создать переменную, сначала пишут тип, затем имя и при желании сразу задают значение через =: int age = 14;. Позже переменной можно присвоить новое значение, но не значение другого типа: записать текст в переменную int не получится.
public class Main {
public static void main(String[] args) {
String name = "Leyla";
int age = 14;
double height = 1.62;
boolean isStudent = true;
char grade = 'A';
System.out.println(name + " is " + age + " years old.");
System.out.println("Height: " + height + " m");
System.out.println("Student: " + isStudent + ", grade: " + grade);
age = age + 1;
System.out.println("Next year: " + age);
}
}Leyla is 14 years old. Height: 1.62 m Student: true, grade: A Next year: 15
Примитивные типы
В Java восемь примитивных типов — самых простых «кирпичиков» языка. Они различаются тем, сколько памяти занимают и какие значения могут хранить. Для целых чисел обычно выбирают int, для дробных — double.
| Тип | Размер | Что хранит | Пример |
|---|---|---|---|
byte | 8 бит | целые числа от −128 до 127 | byte level = 5; |
short | 16 бит | целые числа от −32 768 до 32 767 | short year = 2026; |
int | 32 бита | примерно ±2,1 миллиарда | int people = 10_000_000; |
long | 64 бита | примерно ±9,2 · 10¹⁸ | long stars = 3_000_000_000L; |
float | 32 бита | дробное число, точность ~7 цифр | float t = 36.6f; |
double | 64 бита | дробное число, точность ~15–16 цифр | double price = 9.99; |
char | 16 бит | один символ (Unicode) | char grade = 'A'; |
boolean | – | true или false | boolean ok = true; |
long заканчивается на L, а float — на f. Подчёркивания _ помогают читать большие числа.String в этом списке нет: это не примитивный тип, а класс — поэтому он пишется с заглавной буквы. Со строками ты подробно познакомишься в следующем уроке. Обрати внимание: значение char пишется в одинарных кавычках ('A'), а String — в двойных.
byte состоит из 8 бит. Переключай биты: 8 бит дают 256 разных комбинаций, и Java использует их для чисел от −128 до 127.Арифметические операторы
В Java есть операторы +, -, *, / и % (остаток от деления). Самая важная тонкость: при делении двух целых чисел результат тоже целый — дробная часть просто отбрасывается. То есть 17 / 5 равно 3, а не 3.4.
public class Main {
public static void main(String[] args) {
int a = 17;
int b = 5;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
System.out.println(17.0 / 5);
int count = 10;
count += 5;
count++;
System.out.println(count);
}
}22 12 85 3 2 3.4 16
Как только одно из чисел дробное (17.0), результат тоже становится дробным. Запись count += 5 — сокращение от count = count + 5; так же работают -=, *= и /=. count++ увеличивает переменную на 1, а count-- уменьшает на 1.
Фильм длится 135 минут. Как показать это время в часах и минутах?
Показать решениеСкрыть решение
135 / 60 = 2.Оставшиеся минуты — остаток:
135 % 60 = 15.Строка
System.out.println(135 / 60 + " h " + 135 % 60 + " min"); выведет 2 h 15 min.Приведение типов
Иногда значение нужно перевести из одного типа в другой. От меньшего типа к большему (расширение, например int → double) Java преобразует сама и без потерь. От большего к меньшему (сужение, например double → int) информация может потеряться, поэтому такое приведение нужно запросить явно, указав тип в скобках: (int) price.
public class Main {
public static void main(String[] args) {
int apples = 7;
double d = apples;
System.out.println(d);
double price = 9.99;
int whole = (int) price;
System.out.println(whole);
int sum = 7, people = 2;
System.out.println(sum / people);
System.out.println((double) sum / people);
System.out.println((int) 'A');
System.out.println((char) 66);
int max = Integer.MAX_VALUE;
System.out.println(max + 1);
}
}7.0 9 3 3.5 65 B -2147483648
(int) 9.99даёт9: дробная часть отбрасывается, а не округляется.- В
(double) sum / peopleсначалаsumприводится кdouble, поэтому деление идёт с дробной частью:3.5. charна самом деле число: код символа'A'— 65, а 66 — это'B'.- Если прибавить 1 к максимальному
int, произойдёт переполнение (overflow): значение «перескочит» на самое маленькое отрицательное число.
Главное
- Java — статически типизированный язык: переменную объявляют как
тип имя = значение;, и её тип не меняется. - Примитивных типов восемь:
byte,short,int,long,float,double,char,boolean; аString— это класс. - Деление двух целых чисел даёт целое:
17 / 5=3,17 % 5=2. - Расширение происходит автоматически, а для сужения нужно явное приведение:
(int) 9.99=9. finalсоздаёт константу, аvarпозволяет компилятору самому определить тип.
Проверь себя
Вопросов: 10. Каждый правильный ответ приносит XP.
System.out.println(17 / 5);?