Арифметическими операциями в Java являются:
- + Сложение (или конкатенация строк);
- - Вычитание
- * Умножение
- / Деление
- % Деление по модулю
- ++ Инкремент
- -- Декремент
В данном уроке мы продемонстрируем работу каждого из операторов. Для этого несколько слов стоит сказать об операторе присвоения =. Прошу не путать с оператором равенства ==. Он будет описан в следующих уроках.
Мы уже ранее использовали оператор = в предыдущих уроках, но не разбирали принцип его работы. А он достаточно прост. Например в выражении a = 1; переменной a присваивается целочисленное значение 1. В выражении a = 'a'; переменной a присваивается значение символа 'a' в юникоде. Переменным можно присваивать значения того типа, которого объявлена переменная. Если попытаться присвоить значение другого типа данных, компилятор выдаст ошибку. Переменным также можно присваивать значения арифметических выражений. Например, a = 2*3; или a = 4 * 5 * 6; Переменным можно присваивать значения других переменных или констант. Например,
b = 3;
a = b; В данном выражении мы присвоили переменной a значение переменной b, равное целому числу 3. Таким образом, переменная a теперь также имеет значение 3. То есть обе переменных теперь равны 3.
Переменным можно присваивать значения операций между значениями переменных и просто числами. Например.
b = 5;
a = b + 2;
В данном случае мы присвоили переменной a значение выражения b + 2, то есть 5 + 2, то есть 7. После выполнения этой команды значение переменной a становится равным 7.
Итак, вернёмся к теме урока - к арифметическим операциям.
Оператор + сложение или конкатенация строк.
Этот оператор применим к числовым типам данным, например, int или float и т.д. А также к строковым String.
С числовыми типами данных, оператор работает очень просто. Например,
int chislo1 = 4;
int chislo2 = 5;
int sum;
sum = chislo1 + chislo2
В данном случае оператор сложения выдаёт сумму двух переменных chislo1 и chislo2. Оператор = присваивает эту сумму переменной sum.
С текстовыми данными также нет ничего сложного.
String text1 = "Привет, ";
String text2 = "Мир!";
String text;
text = text1 + text2;
В данном случае мы объявили 3 текстовые переменные. Переменным text1 и text2 присвоили начальные значения. Переменной text присвоили значение суммы переменных text1 и text2. Полученное значение - "Привет, Мир!". В данном случае объединение значений переменных, а точнее текстовых данных, называется конкатенацией. В операторе System.out.println() объединение данных для вывода, в том числе данных разных типов, называется конкатенацией.
Операторы - и * вычитание и умножение
Работают только с числовыми типами данных. Аналогично оператору сложения. Если объявить, например, целочисленные переменные и задать им значения
int chislo1 = 4;
int chislo2 = 5;
int raznost = chislo2 - chislo1;
int proisvedenie = chislo1 * chislo2;
то соответственно значение переменной raznost будет 1, значением переменной proisvedinie будет 20.
В данном примере мы объявили 2 переменных raznost и proisvedenie и сразу присвоили им не чисто числовые значения, а значения, равные выражениям - разности переменных и произведению переменных. Это в Java также не возбраняется.
Оператор / деление
Здесь всё аналогично сложению, вычитанию и умножению, но стоит особо отметить один момент.
Если объявить переменные
int chislo1 = 2;
int chislo2 = 8;
int chastnoe = chislo2 / chislo1;
то понятно, что вычисленное значение переменной chastnoe будет равно 4.
Но если сделать так
int chislo1 = 2;
int chislo2 = 7;
int chastnoe = chislo2 / chislo1;
То, поскольку тип данных int - целочисленный, то результат округления отбросит всю дробную часть, оставив только целую часть числа. Другими словами, округлит значение переменной chastnoe вниз до целых чисел. Соответственно, в результате такой операции значение переменной chastnoe будет равно 3.
Оператор % Деление по модулю
Возьмём данные из предыдущего примера
int chislo1 = 2;
int chislo2 = 7;
int num = chislo2 % chislo1;
В данном случае значение переменной num будет равно остатку от деления. Число 7 на 2 не делится так, чтобы получилось целое число. Но на 2 делится число 6. Разница 7 - 6 = 1. Соответственно, остаток от деления равен 1.
Если поменять цифры,
int chislo1 = 5;
int chislo2 = 12;
int num = chislo2 % chislo1;
то 12 на 5 не делится, но на 5 делится 10. 12 - 10 = 2. Соответственно, значение переменной num - остаток от деления равно 2.
Инкремент ++ и декремент --
Работают следующим образом
Если, например
int a = 7;
то выражение a++; увеличивает значение переменной a на единицу. Результат будет таким же как после исполнения кода a = a + 1;
Соответственно после исполнения кода
int a = 7;
a++;
значение переменной a будет равно 8.
Декремент работает аналогично, уменьшая значение переменной на единицу. То есть после исполнения кода
int b = 5;
b--;
значение переменной b будет равно 4. Тот же самый результат можно получить исполнением кода b = b - 1;
В основном инкремент и декремент используются в циклах, которые будут описаны в следующих уроках.
Теперь для закрепления материала давайте на практике наглядно посмотрим как работают все арифметические операции.
Создадим новый класс с именем Arifm
class Arifm
{
}
Внутри фигурных скобок класса Arifm объявим главный метод main
public static void main (String[] args)
{
}
Внутри фигурных скобок метода main объявим 3 переменные:
int chislo1 = 12;
int chislo2 = 4;
int result;
Для наглядности выведем значения этих переменных на экран:
System.out.println("Значение переменной chislo1 " + chislo1);
System.out.println("Значение переменной chislo2 " + chislo2);
Далее переменной result будем поочередно присваивать значения, равные результатам арифметических операций с переменными chislo1 и chislo2 и выводить значение переменной result на экран:
result = chislo1 + chislo2;
System.out.println("Результат сложения значений переменных chislo1 и chislo2 равен " + result);
result = chislo1 - chislo2;
System.out.println("Результат вычитания значения переменной chislo2 из значения переменной chislo1 равен " + result);
result = chislo1 * chislo2;
System.out.println("Результат умножения значений переменных chislo1 и chislo2 равен " + result);
result = chislo1 / chislo2;
System.out.println("Результат деления значения переменной chislo1 на значение переменной chislo2 равен " + result);
Теперь для наглядности демонстрации выполнения оператора % - деления по модулю изменим значение переменной chislo2
chislo2 = 7;
result = chislo1 % chislo2;
System.out.println("Остаток от деления по модулю значения переменной chislo1 на значение переменной chislo2 равен значению переменной result " + result);
Теперь применим к переменной result операцию инкремента
result++;
и выведем на экран её новое значение
System.out.println("Значение переменной result после применения операции инкремента равно " + result);
Теперь применим к переменной result операцию декремента
result--;
и выведем на экран её новое значение
System.out.println("Значение переменной result после применения операции декремента равно " + result);
Сохраним файл под именем Arifm.java
Далее компилируем командой javac Arifm.java и запускаем командой java Arifm
Результат выполнения
Теперь вернёмся к конкатенации строк. Продемонстрируем на практике работу нашего ранее описанного примера.
Создадим новый класс с именем Stroki
class Stroki
{
}
Внутри фигурных скобок класса Stroki объявим главный метод main
public static void main (String[] args)
{
}
Внутри фигурных скобок метода main объявим 2 переменные:
String text1 = "Привет, ";
String text2 = "Мир!";
Выведем на экран их начальные значения:
System.out.println("Начальное значение переменной text1 " + text1);
System.out.println("Начальное значение переменной text2 " + text2);
Теперь объявим третью переменную и присвоим ей следующее значение:
String text = text1 + text2;
Выведем на экран её значение:
System.out.println("Значение переменной text " + text);
Выводы:
- Для присвоения значений переменным и константам используется оператор присвоения = Знак равенства == выполняет другую роль в Java.
- Переменным и константам можно присваивать простые значения любых типов данных, значения других переменных, значения сложных выражений.
- Оператор сложения + работает с числовыми и текстовыми типами данных. При работе с числовыми типами данных результатом применения оператора будет сумма значений. При работе с текстовыми типами данных результатом применения оператора будет объединённая строка.
- Операторы вычитания - , умножения * , деления / и деления по модулю % работают только с числовыми типами данных.
- После применения к переменной числового типа данных (в том числе типа float) операции инкремента/декремента значение переменной увеличивается/уменьшается на 1.
Ссылка на предыдущий урок
Ссылка на следующий урок
Ссылка на содержание курса