JavaRush /Курсы /Java Syntax New /Операции над переменными типа int

Операции над переменными типа int

Java Syntax New
3 уровень , 10 лекция
Открыта

1. Операции над переменными типа int

— Приветствую, Амиго! Сегодня мы с тобой будем разбираться с переменными типа int.

— Так я вроде их уже знаю!

— Ты, как любой начинающий программист, пребываешь в своих иллюзиях. Ты что-то о них знаешь. Впрочем, ладно. Для начала давай разберёмся с вычислением целочисленных выражений. Ты ещё не забыл, как выглядит сокращённая запись создания и инициализации переменной?

— Помню. Вот так:

int имя = значение;

— Всё верно. И каким может быть это самое значение в правой части от оператора присваивания (знака равенства)?

— Целым числом?

— Именно. А точнее — комбинация чисел, переменных и знаков +, -, *, /.

— Также можно использовать скобки ( ). Главное, чтобы в результате получилось целое число.

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

Примеры:

Команда Примечание
int a = (2 + 2) * 2;
В переменной a будет значение 8
int b = (6 - 3) / (9 - 6);
В переменной b будет значение 1
int c = (-2) * (-3);
В переменной c будет значение 6
int d = 3 / 0;
При выполнении этой команды возникнет ошибка «деление на ноль», и программа завершится.

— А можно ли использовать в выражении переменные?

— Отличный вопрос, Амиго. Можно. Вот пример:

Команда Примечание
int a = 1;
int b = 2;
int c = a * b + 2;
В переменной a будет значение 1
В переменной b будет значение 2
В переменной c будет значение 4

— Более того, одна и та же переменная может одновременно быть слева и справа от оператора присваивания:

Команда Примечание
int x = 5;
x = x + 1;
x = x + 1;
x = x + 1;
x = x + 1;
x = x + 1;
В переменной x будет значение 5
В переменной x будет значение 6
В переменной x будет значение 7
В переменной x будет значение 8
В переменной x будет значение 9
В переменной x будет значение 10

— Это несколько сбивает с толку...

— С новичками так часто бывает. Не волнуйся — привыкнешь. Просто в языке Java символ = – это не обозначение равенства, а команда, которая в переменную слева от знака = заносит вычисленное значение выражения справа от знака =.

— Оператор присваивания!

— Да. Поэтому не бойся записей вроде x = x + 1. Ты просто заносишь в ячейку новое значение переменной x. Скажу больше: эту операцию ты будешь делать постоянно.


2. Деление целых чисел

Фрагмент лекции JavaRush - университета.


— Амиго, ты умеешь делить целые числа друг на друга?

— Естественно! Я заканчивал младшую школу.

— И сколько будет 5/2?

— Два с половиной!

— В школьной арифметике так и есть. А вот в Java при делении одного целого числа на другое целое число всегда получается целое число. Остаток от деления при этом отбрасывается. Или же можно сказать, что результат деления всегда округляется до целого в меньшую сторону.

Примеры:

Команда Результат деления Примечание
int a = 5 / 2;
2.5 В переменной a будет значение 2
int b = 20 / 3;
6.6667 В переменной b будет значение 6
int c = 6 / 5;
1.2 В переменной c будет значение 1
int d = 1 / 2;
0.5 В переменной d будет значение 0


3. Остаток от деления целых чисел

— Кроме сложения, вычитания, умножения и деления для целых чисел в Java есть еще оператор «остаток от деления». Используется для этого символ процент – %. Это именно остаток от деления целого числа на целое, а не дробная часть.

Примеры:

Команда Результат деления Примечание
int a = 5 % 2;
2 и 1 в остатке В переменной a будет значение 1
int b = 20 % 4;
5 и 0 в остатке В переменной b будет значение 0
int c = 9 % 5;
1 и 4 в остатке В переменной c будет значение 4
int d = 1 % 2;
0 и 1 в остатке В переменной d будет значение 1

— Не совсем понял, как считается остаток...

— Говоришь же, учился в младшей школе. Так уж и быть, напомню: допустим, тебе нужно разделить число 19 на 3.

19 / 3 = 6

— Остаток ищется так:

19 - 6 * 3 = 1

— Ага. Это понятно. А если делимое меньше делителя?

— Ровно то же самое.

1 / 2 = 0.5
1 % 2 = 0

— А остаток.

1 - 0 * 2 = 1

— Всё, теперь ясно. А зачем вообще этот оператор нужен?

— На самом деле это очень полезный оператор, и используется он довольно часто. Например, чтобы узнать, четное число или нет, достаточно поделить его на 2 и полученный остаток сравнить с нулем. Если остаток от деления равен нулю, число четное, если равен единице — нечетное.

— Выглядит эта проверка так:

(a % 2) == 0

Где, как вы уже догадались, a % 2 – получение остатка от деления на 2 (т.е. 0 или 1), а == используется для сравнения с нулем.



4. Инкремент и декремент

Фрагмент лекции JavaRush - университета.


— В программировании очень часто приходится увеличивать или уменьшать переменную на единицу.

— Ну да. x = x + 1. Видишь, я запомнил!

— Ты, конечно, молодец, но поскольку операция увеличения именно на единицу используется чрезвычайно часто, для неё в Java выделили специальные команды:

— Оператор инкремент (увеличение на единицу) выглядит так:

a++;
Увеличение на единицу

— Эта команда делает то же самое, что и команда a = a + 1; – увеличивает переменную a на единицу.

— Выглядит красиво!

— Рад, что тебе нравится. Помимо инкремента есть ещё оператор декремент. Он выглядит так:

a--;
Декремент

— Догадаешься, что он делает?

— Видимо, уменьшает на единицу!

— Всё правильно! Эта команда делает то же самое, что и команда a = a - 1; – уменьшает переменную a на единицу.

Примеры:

Команда Примечание
int x = 5;
x++;
x++;
x++;
x++;
x++;
В переменной x будет значение 5
В переменной x будет значение 6
В переменной x будет значение 7
В переменной x будет значение 8
В переменной x будет значение 9
В переменной x будет значение 10
int x = 5;
x--;
x--;
x--;
x--;
x--;
x--;
В переменной x будет значение 5
В переменной x будет значение 4
В переменной x будет значение 3
В переменной x будет значение 2
В переменной x будет значение 1
В переменной x будет значение 0
В переменной x будет значение -1

Комментарии (17)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Cat_Virus Уровень 9
19 декабря 2023
так и не исправили пример с делением меньшего целого числа на большее: "1 / 2 = 0.5 и 1 % 2 = 0" Все-таки, должно быть: 1 / 2 = 0 1 % 2 = 1
Byte Boss Уровень 33
12 апреля 2022
Опечатка в тексте - вместо знака деления / поставили знак % " — Ровно то же самое. 1 / 2 = 0.5 1 % 2 = 0 — А остаток. 1 - 0 * 2 = 1 "
Gennady Raster Уровень 24
9 февраля 2022
Задачка для понимания происходящего. Чему равен x?

int x = 1;
x = x++ + ++x;
Anonymous #3029517 Уровень 6
20 марта 2022
4?
Алексей Кобзев Уровень 37
13 июня 2022
4, верно. Сперва неизмененный х = 1 складывается с преинкременом ++х(2), получается 3, и результат постинкрементом(х++) увеличивается на 1, получается 4. Ух я поковырялся, сперва думал 6 получится.
Timur Khasmamedov Уровень 14 Expert
5 января 2023
Не знаю, имел ли ты это в виду, но: 1. х = х (то есть 1), но следующий х в цепочке УЖЕ изменен 2. 1 + ++2. двойка - это тот самый измененный х. и т.к. еще и тут ++, то сначала двойка 3. станет тройкой 4. и потом будет 1+3 = 4 (если что приоритет у ++ и -- выше чем у сложения и вычитания)
Рыбалко Иван Уровень 36
25 декабря 2021
BucketOnHead Уровень 51 Expert
25 ноября 2021
Тут почему-то не стали рассказывать о постфиксной и префиксной записи инкремента / декремента. Но это имеет большое значение, например:

int x = 5; // x равен 5
System.out.println(++x) // Выведется 6, x равен 6 
НО:

int x = 5; // x равен 5
System.out.println(x++) // Выведется 5, x станет равным 6
Олег Дурышин Уровень 17
21 марта 2021
Не помешало бы объяснение постфиксной и префиксной записи инкремента и декремента. Постфиксная запись int a = 2; int b = a++; //переменной b присвоится значение 2 ------------- Префиксная запись int a = 2; int b = ++a; //переменной b присвоится значение 3
Roman #2803588 Уровень 10
12 сентября 2021
Попрошу вас, сударь, пояснить) Если мы по постфиксной записи присваиваем b значение 2, переменная а затем исполняет команду а++ и становится равна 3?
Сергей Уровень 9
20 сентября 2021
Совершенно верно
hidden #2565693 Уровень 10
20 марта 2021
Опечатки в тексте 1%2 = 0.
Стас Уровень 28
21 мая 2021
т е 1%2 = 1, верно?
Anonymous #2903333 Уровень 7
25 ноября 2021
да
Sergey Уровень 13
17 марта 2021
Уверен, что после такой не сложной главы, задачи будут жуткими:/
Jav@Men Уровень 35
16 марта 2021

ха... это легко...
SeregaInTheGame Уровень 15
15 февраля 2021
Тут не сложно =)