Основные операции с переменными в Java
Ну, как же обойтись в программировании без возможности что-то складывать, вычитать, умножать и т.д.? Такую возможность в Java обеспечивают так называемые операторы. В Java все операторы можно разбить на 3 группы:
- арифметические
- логические
- побитовые
В этой статье мы рассмотрим:
- арифметические операции
- очень обзорно логические операции.
Логические и побитовые операции мы рассмотрим с Вами в отдельных статьях. На данном этапе Вам будет достаточно только понимания того, что такое арифметические операции. Итак, приступим!
Арифметические операторы
На самом деле, со многими арифметическими операторами Вы уже знакомы со школы:
- сложение
- вычитание
- умножение
- деление
Давайте попробуем разобраться с этими операторами на примере.
Пример №1
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class Test { public static void main(String[] args) { int k = 70; int p = 10; int f = 5; int m = k+p; System.out.println(m); m = m-30; System.out.println(m); int s = m*f; System.out.println (s); s =s/f; System.out.println(s); } } |
Если Вы попробуете запустить этот код на своём компьютере, то в консоль у Вас будут выведены вот такие числа:
80
50
250
50
Комментарии:
Давайте разберём каждую строчку кода.
1 2 3 |
int k = 70; int p = 10; int f = 5; |
Здесь мы объявили переменную k и присвоили ей значение 70, затем объявили переменную p и присвоили ей значение 10, а потом объявили еще переменную f и присвоили ей значение 5.
1 |
int m = k+p; |
Затем объявили переменную m и присвоили ей значение, равное сумме k и p. А k у нас равно 70, p равно 10, соответственно, m будет равно 80.
1 |
System.out.println(m); |
Затем вывели в консоль значение m. И, действительно, в консоли мы видим 80.
1 |
m = m-30; |
В этой строчке мы сказали, что переменной m должно быть присвоено новое значение, которое должно быть равно m-30. m у нас было равно 80, поэтому новое значение m будет равно 80-30, то есть 50.
1 |
System.out.println(m); |
Выводим в консоль новое значение m и, действительно, в консоли видим 50.
1 |
int s = m*f; |
Объявляем переменную s и присваиваем ей значение равное m*f. Поскольку m у нас равно 50, а f равно 5, то при умножении 50 на 5 получаем 250. Значит, s равно 250.
1 |
System.out.println (s); |
Выводим в консоль значение переменной s. И, действительно, видим в консоли 250.
1 |
s =s/f; |
Присваиваем новое значение переменной s, которое равно s/f. Знаком / обозначается деление в Java. Переменная s у нас сейчас равна 250, а f равно 5. Поэтому при деление 250 на 5 получим 50. То есть новое значение переменной s равно 50.
1 |
System.out.println(s); |
Выводим в консоль новое значение переменной s. И, действительно, в консоли видим 50.
Обратите внимание: в Java деление обозначается знаком /
Сокращённые арифметические операторы
Также к арифметическим операторам относят так называемые сокращённые арифметически операторы. Вы должны знать, что есть 2 формы записи основных арифметических операций. Например:
m += 7; // это всё равно, что m = m+7;
m -= 7 ; // это всё равно, что m = m-7;
m*= 7; // это всё равно, что m = m*7;
m/= 7; // это всё равно, что m = m/7;
Зачем придумали сокращённые арифметические операторы? Да потому что лень - двигатель прогресса! Когда пишешь много-много строчек кода, каждый лишний символ отнимает силы и время. Проще использовать сокращённые арифметические операторы...
Чтобы убедиться в том, что сокращённые арифметические операторы в коде дают такой же результат, что и полная форма арифметических операций, предлагаем Вам запустить на своём компьютере вот эти 2 небольшие программы. И в примере №2, и в примере №3 в консоль у Вас будет выведено число 9.
Пример №2
1 2 3 4 5 6 7 8 |
class Test { public static void main(String[] args) { int m = 2; m = m + 7; System.out.print (m); } } |
Если Вы попробуете запустить этот код на своём компьютере, то в консоль у Вас будет выведено вот такое число:
9
Пример №3
1 2 3 4 5 6 7 8 |
class Test { public static void main(String[] args) { int m = 2; m+= 7; System.out.print (m); } } |
Если Вы попробуете запустить этот код на своём компьютере, то в консоль у Вас будет выведено вот такое число:
9
Теперь давайте рассмотрим ещё один арифметический оператор - оператор деления по модулю. Мы ему посвятили отдельную статью - "Деление по модулю в Java". А когда Вы прочитаете эту статью, мы с Вами перейдём к операторам инкремента и декремента - см. ниже
Инкремент и декремент
Ну что ж, мы с Вами уже рассмотрели операции в Java, которые очень похожи на те, что мы знаем со школы. Теперь самое время перейти к операциям в Java, которые, если Вы ранее не программировали, будут для Вас в новинку. Хотя ничего сложного в них нет.
Дело в том, что в программировании очень часто приходится выполнять операции, когда:
- переменная должна увеличиться на единицу
- переменная должна уменьшиться на единицу
Поэтому придумали отдельные операции с переменными, которые называются инкремент и декремент.
- Инкремент - отвечает за увеличение переменной на единицу. Обозначается как ++. Например, если у нас есть переменная i и мы к ней применим инкремент, тогда это будет записано как i++. А это значит, что значение переменной i должно быть увеличено на 1.
- Декремент - отвечает за уменьшение переменной на единицу. Обозначается как --. Например, если у нас есть переменная n и мы к ней применим декремент, тогда это будет записано как n --. А это значит, что значение переменной n должно быть уменьшено на 1.
Пример №4
1 2 3 4 5 6 7 8 |
class Test { public static void main(String[] args) { int n = 2; n++; System.out.print (n); } } |
Если Вы попробуете запустить этот код на своём компьютере, то в консоль у Вас будет выведено вот такое число:
3
Комментарии:
В этой строчке мы объявили переменную n и присвоили ей значение 2
1 |
int n = 2; |
Затем использовали инкремент и поэтому переменная n должна увеличиться на 1. И, соответственно, переменная n у нас уже равна 3.
1 |
n++; |
А с помощью этой строчки вывели в консоль новое значение переменной n
1 |
System.out.print (n); |
Пример №5
1 2 3 4 5 6 7 8 |
class Test { public static void main(String[] args) { int n = 2; n--; System.out.print (n); } } |
Если Вы попробуете запустить этот код на своём компьютере, то в консоль у Вас будет выведено вот такое число:
1
Комментарии:
В этой строчке мы объявили переменную n и присвоили ей значение 2
1 |
int n = 2; |
Затем использовали декремент и поэтому переменная n должна уменьшится на 1. И, соответственно, переменная n у нас уже равна 1.
1 |
n--; |
А с помощью этой строчки вывели в консоль новое значение переменной n
1 |
System.out.print (n); |
Две формы инкремента и декремента
Вы должны знать, что существует 2 формы инкремента:
- постфиксная (n++) Эту форму инкремента мы только что рассмотрели в примере №4
- префиксная (++n)
А также 2 формы декремента:
- постфиксная (n--) Эту форму декремента мы только что рассмотрели в примере №5
- префиксная (--n)
Так а в чём же отличие между постфиксной и префиксной формами?
В постфиксной форме:
- сначала используется старое значение в вычислениях
- далее в последующих вычислениях используется уже новое значение
В префиксной форме:
- сразу используется новое значение в вычислениях
Лучше это продемонстрировать на примере. Тогда всё сразу станет понятно. Итак, смотрим пример №6.
Пример №6
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class Test { public static void main(String[] args) { int n = 2; int k = 2; int a = 2 * n++; //теперь значение a равно 4, а n равно 3 int b = 2 * ++k; //теперь значение b равно 6, а k равно 3 System.out.println(a); System.out.println(n); System.out.println(b); System.out.println(k); } } |
Если Вы попробуете запустить этот код на своём компьютере, то в консоль у Вас будут выведены такие числа:
4
3
6
3
Комментарии:
1 2 |
int n = 2; int k = 2; |
В этих 2 строчкам мы объявили 2 переменные n и k и присвоили им одинаковые значения = 2.
1 |
int a = 2 * n++; //теперь значение a равно 4, а n равно 3 |
В этой строчке у нас n++, то еть постфиксная форма инкремента. Поэтому сначала используется старое значение в вычислениях. А поскольку n = 2, переменная а =4. И только после этого вычисления будет применён инкремент к переменной и n будет равно 3.
1 |
int b = 2 * ++k; //теперь значение b равно 6, а k равно 3 |
В этой строчке у нас ++k, то есть префиксная форма инкремента. Поэтому сразу используется новое значение в вычислениях. И поэтому k у нас сразу будет равно 3. А значит 2*3 = 6 и переменная b = 6.
1 2 3 4 |
System.out.println(a); System.out.println(n); System.out.println(b); System.out.println(k); |
С помощью этих 4 строк мы вывели на экран новые значения a, n, b и k. И получили:
4
3
6
3
Надеемся, что теперь понятно в чём отличие между постфиксной и префиксной формами.
Также запомните: инкремент и декремент применяют только к переменной, к числам нельзя применять. Поэтому, например, выражение 8++ или ++8 считаются недопустимыми.
Также приведём пример на постфиксную и префиксную формы декремента. Они работают по такому же принципу, что и постфиксная и префиксные формы инкремента. Впрочем, Вы сейчас в этом убедитесь сами, рассмотрев пример №7.
Пример №7
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class Test { public static void main(String[] args) { int n = 2; int k = 2; int a = 2 * n--; //теперь значение a равно 4, а n равно 1 int b = 2 * --k; //теперь значение b равно 2, а k равно 1 System.out.println(a); System.out.println(n); System.out.println(b); System.out.println(k); } } |
Если Вы попробуете запустить этот код на своём компьютере, то в консоль у Вас будут выведены такие числа:
4
1
2
1
Комментарии:
1 2 |
int n = 2; int k = 2; |
В этих 2 строчкам мы объявили 2 переменные n и k и присвоили им одинаковые значения = 2
1 |
int a = 2 * n--; //теперь значение a равно 4, а n равно 1 |
В этой строчке у нас n--, то еть постфиксная форма декремента. Поэтому сначала используется старое значение в вычислениях. А поскольку n = 2, то переменная а =4. И только после этого вычисления будет применён декремент к переменной, и n будет равно 1.
1 |
int b = 2 * --k; //теперь значение b равно 2, а k равно 1 |
В этой строчке у нас --k, то есть префиксная форма декремента. Поэтому сразу используется новое значение в вычислениях. И поэтому k у нас сразу будет равно 1. А значит 2*1 = 2, и переменная b = 2.
1 2 3 4 |
System.out.println(a); System.out.println(n); System.out.println(b); System.out.println(k); |
С помощью этих 4 строк мы вывели на экран новые значения a, n, b и k. И получили:
4
1
2
1
Логические операторы
Ниже в таблице приведены все логические операторы, которые есть в Java. Как использовать данные операторы мы с Вами рассмотрим на практике, когда дойдём до темы "Условный оператор if. Оператор switch"
ПОДЫТОЖИМ:
В Java все операторы можно разбить на 3 группы:
- арифметические
- логические
- побитовые
Арифметические и сокращённые арифметические операторы:
m += 7; // это всё равно что m = m+7;
m -= 7 ; // это всё равно что m = m-7;
m*= 7; // это всё равно что m = m*7;
m/= 7; // это всё равно что m = m/7;
m%=7;// это всё равно что m = m%7;
- % - это оператор деления по модулю. Возвращает остаток от деления.
- Инкремент - отвечает за увеличение переменной на единицу. Например, n++
- Декремент - отвечает за уменьшение переменной на единицу. Например, n--
Существует 2 формы инкремента:
- постфиксная (пример: n++) Эту форму инкремента мы рассмотрели в примере №4
- префиксная (пример: ++n) Эту форму инкремента мы рассмотрели в примере №6
А также 2 формы декремента:
- постфиксная (пример: n--) Эту форму декремента мы рассмотрели в примере №5
- префиксная (пример: --n) Эту форму декремента мы рассмотрели в примере №7
В постфиксной форме:
- сначала используется старое значение в вычисления
- далее в последующих вычислениях используется уже новое значение
В префиксной форме:
- сразу используется новое значение в вычислениях
Инкремент и декремент применяются только к переменной. Например, выражения типа 8++ или ++8 считаются недопустимыми.
Побитовые операции будут рассмотрены в отдельной статье.
Примечание: инкремент еще иногда называют операцией инкрементирования, а декремент - операцией декрементирования