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

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

Открыта

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, 09:23
так и не исправили пример с делением меньшего целого числа на большее: "1 / 2 = 0.5 и 1 % 2 = 0" Все-таки, должно быть: 1 / 2 = 0 1 % 2 = 1
Byte Boss
Уровень 33
12 апреля 2022, 14:30
Опечатка в тексте - вместо знака деления / поставили знак % " — Ровно то же самое. 1 / 2 = 0.5 1 % 2 = 0 — А остаток. 1 - 0 * 2 = 1 "
Gennady Raster
Уровень 24
9 февраля 2022, 10:14
Задачка для понимания происходящего. Чему равен x?
int x = 1;
x = x++ + ++x;
Anonymous #3029517
Уровень 6
20 марта 2022, 14:33
4?
13 июня 2022, 01:01
4, верно. Сперва неизмененный х = 1 складывается с преинкременом ++х(2), получается 3, и результат постинкрементом(х++) увеличивается на 1, получается 4. Ух я поковырялся, сперва думал 6 получится.
Timur Khasmamedov
Уровень 14
Expert
5 января 2023, 21:37
Не знаю, имел ли ты это в виду, но: 1. х = х (то есть 1), но следующий х в цепочке УЖЕ изменен 2. 1 + ++2. двойка - это тот самый измененный х. и т.к. еще и тут ++, то сначала двойка 3. станет тройкой 4. и потом будет 1+3 = 4 (если что приоритет у ++ и -- выше чем у сложения и вычитания)
Рыбалко Иван
Уровень 36
25 декабря 2021, 10:34
BucketOnHeadJava Developer в Уже нигдеExpert
25 ноября 2021, 16:03
Тут почему-то не стали рассказывать о постфиксной и префиксной записи инкремента / декремента. Но это имеет большое значение, например:
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, 13:09
Не помешало бы объяснение постфиксной и префиксной записи инкремента и декремента. Постфиксная запись int a = 2; int b = a++; //переменной b присвоится значение 2 ------------- Префиксная запись int a = 2; int b = ++a; //переменной b присвоится значение 3
Roman #2803588
Уровень 10
12 сентября 2021, 16:04
Попрошу вас, сударь, пояснить) Если мы по постфиксной записи присваиваем b значение 2, переменная а затем исполняет команду а++ и становится равна 3?
Сергей
Уровень 9
20 сентября 2021, 08:54
Совершенно верно
hidden #2565693
Уровень 10
20 марта 2021, 13:03
Опечатки в тексте 1%2 = 0.
Стас
Уровень 28
21 мая 2021, 06:28
т е 1%2 = 1, верно?
Anonymous #2903333
Уровень 7
25 ноября 2021, 18:29
да
Sergey
Уровень 13
17 марта 2021, 13:10
Уверен, что после такой не сложной главы, задачи будут жуткими:/
Jav@Men
Уровень 35
16 марта 2021, 07:01
ха... это легко...
SeregaInTheGame Машинист крана (пока)
15 февраля 2021, 19:04
Тут не сложно =)