Узнайте о доступных операторах Java, порядке приоритета и поймите их использование с примерами. Мы также попытаемся понять, когда использовать какой оператор и чего ожидать в результате.
1. Операторы Java
Оператор — это символ, который выполняет определенную операцию над одним, двумя или тремя операндами, производя результат. Тип оператора и его операндов определяет вид операции, выполняемой над операндами, и тип производимого результата.
Операторы в Java можно классифицировать по двум критериям:
- Количество операндов – существует три типа операторов в зависимости от количества операндов. Оператор называется унарным, бинарным или тернарным в зависимости от количества операндов. Если оператор принимает один операнд, он называется унарным оператором; если он принимает два операнда, он называется бинарным оператором; если он принимает три операнда, он называется тернарным оператором.
- Тип выполняемой операции. Оператор называется арифметическим оператором, оператором отношения, логическим оператором или побитовым оператором в зависимости от вида операции, которую он выполняет над своими операндами.
Оператор | Описание |
---|---|
+ – * / | Арифметические унарные или бинарные операторы |
++ — | Инкремент и декремент унарных операторов |
== != | Операторы равенства |
< > <= => | Реляционные операторы |
! & | | Логические операторы |
&& || ?: | Условные операторы |
= += -= *= /= %= | Операторы присваивания |
&= |= ^= <<= >>= >>>= | Операторы присваивания |
& | ~ ^ << >> >> | Побитовые операторы |
-> :: | Операторы стрелок и ссылок на методы |
новый | Итератор создания экземпляра |
instanceOf | Оператор сравнения типов |
+ | Оператор конкатенации строк |
Давайте рассмотрим несколько наиболее используемых операторов на примерах.
2. Оператор присваивания
- Оператор присваивания(=) используется для присвоения значения переменной.
- Это бинарный оператор. Он принимает два операнда.
- Значение правого операнда присваивается левому операнду.
- Левый операнд должен быть переменной.
//26 is the right-hand operand.//counter is the left-hand operand, which is a variable of type int.int counter = 26;
Java гарантирует, что значение правого операнда оператора присваивания совместимо по присваиванию с типом данных левого операнда. В противном случае возникает ошибка времени компиляции.
В случае ссылочных переменных вы можете скомпилировать исходный код и получить ошибку ClassCastException во время выполнения, если объект, представленный правым операндом, несовместим по назначению со ссылочной переменной в качестве левого операнда.
3. Арифметические операторы
- Такие операторы, как(+(плюс), –(минус), *(умножение), /(деление)) называются арифметическими операторами в Java.
- Его можно использовать только с операндами числового типа. Это означает, что оба операнда для арифметических операторов должны быть одного из типов byte, short, char, int, long, float и double.
- Эти операторы не могут иметь операнды примитивного логического типа и ссылочного типа.
int sum = 10 + 20;int difference = 50 - 20;long area = 20l * 30l;int percentage = 20 / 100;
3.1 Унарные арифметические операторы
Оператор | Описание |
---|---|
'+' | Унарный оператор плюс; указывает положительное значение(однако числа положительны и без этого) |
'-' | Унарный оператор минус; отрицает значение выражения |
'++' | Оператор увеличения; увеличивает значение на 1 |
'—' | Оператор декремента; уменьшает значение на 1 |
'!' | Оператор логического дополнения; инвертирует значение логического значения |
3.2. Бинарные арифметические операторы
Оператор | Описание |
---|---|
'+' | Сложение – добавляет значения по обе стороны от оператора. |
'-' | Вычитание – вычитает правый операнд из левого операнда. |
'*' | Умножение – умножает значения по обе стороны от оператора. |
'/' | Деление – делит левый операнд на правый операнд. |
'%' | Модуль — делит левый операнд на правый операнд и возвращает остаток. |
4. Оператор конкатенации строк
Оператор '+' перегружен в Java. Оператор считается перегруженным, если он используется для выполнения более чем одной функции.
4.1 Объединение двух строк
До сих пор вы видели его использование в качестве арифметического оператора сложения для сложения двух чисел. Его также можно использовать для конкатенации двух строк.
String str1 = "Hello";String str2 = " World";String str3 = str1 + str2; // Assigns "Hello World" to str3
4.2 Объединение примитивных типов в строку
Оператор конкатенации строк также используется для объединения примитивного значения и значения ссылочного типа данных в строку.
int num = 26;String str1 = "Alphabets";String str2 = num + str1; // Assigns "26Alphabets" to str2
4.3. Объединить null
Если ссылочная переменная содержит ссылку «null», оператор конкатенации использует строку «null».
String str1 = "I am ";String str2 = null;String str3 = str1 + str2; // Assigns "I am null" to str3
5. Реляционные операторы
- Все операторы отношения являются бинарными операторами.
- Они принимают два операнда.
- Результатом, полученным с помощью реляционного оператора, всегда является логическое значение true или false.
- Они в основном используются в управляющих операторах Java, таких как операторы if, while и т. д.
Давайте рассмотрим ниже все доступные реляционные операторы в Java.
Оператор | Описание |
---|---|
'==' | Равно – проверяет, равны ли значения двух операндов, если да, то условие становится истинным. |
'!=' | Не равно – проверяет, равны ли значения двух операндов. Если значения не равны, то условие становится истинным. |
'>' | Больше чем – проверяет, больше ли значение левого операнда, чем значение правого операнда, если да, то условие становится истинным. |
'<' | Меньше чем – проверяет, меньше ли значение левого операнда, чем значение правого операнда, если да, то условие становится истинным. |
'>=' | Больше или равно — проверяет, больше ли значение левого операнда или равно ему, если да, то условие становится истинным. |
'<=' | Меньше или равно — проверяет, меньше ли значение левого операнда или равно ему, если да, то условие становится истинным. |
int result = 20;if( result > 10) { //true//some operation}boolean isEqual =( 10 == 20 ); //false
6. Булевы логические операторы
- Все логические операторы булевы могут использоваться только с булевыми операндами.
- Они в основном используются в контрольных операторах для сравнения двух(или более) условий.
Оператор | Описание |
---|---|
'!' | возвращает true, если операнд равен false, и false, если операнд равен true. |
'&&' | возвращает true, если оба операнда истинны. Если хотя бы один из операндов ложен, возвращается false. |
'&' | возвращает true, если оба операнда истинны. Если хотя бы один из операндов ложен, возвращается false. |
'||' | возвращает true, если хотя бы один из операндов истинен. Если оба операнда ложны, возвращается false. |
'|' | возвращает true, если хотя бы один из операндов истинен. Если оба операнда ложны, возвращается false. |
'^' | возвращает true, если один из операндов истинен, но не оба. Если оба операнда одинаковы, возвращает false. |
'&=;' | если оба операнда оцениваются как истина, &= возвращает истину. В противном случае возвращается ложь. |
'|=' | если любой из операндов оценивается как истина, != возвращает истину. В противном случае он возвращает ложь. |
'^=' | если оба операнда оцениваются как разные значения, то есть один из операндов истинен, но не оба, ^= возвращает истину. В противном случае он возвращает ложь. |
int result = 20;if( result > 10 && result < 30) {//some operation}if( result > 10 || result < 30) {//some operation}
- Логический оператор И(&) работает так же, как и логический короткозамкнутый оператор И(&&), за исключением одного отличия. Логический оператор И(&) оценивает свой правый операнд, даже если его левый операнд оценивается как ложный.
- Логический оператор ИЛИ работает так же, как и логический оператор короткого замыкания ИЛИ, за исключением одного отличия. Логический оператор ИЛИ оценивает свой правый операнд, даже если его левый операнд оценивается как истина.
7. Побитовые операторы
Побитовый оператор манипулирует отдельными битами своих операндов. Java определяет несколько побитовых операторов, которые могут применяться к целочисленным типам long, int, short, char и byte.
Оператор | Описание |
---|---|
'&' | Двоичный оператор И копирует бит в результат, если он существует в обоих операндах. |
'|' | Двоичный оператор ИЛИ копирует бит, если он существует в любом из операндов. |
'^' | Двоичный оператор XOR копирует бит, если он установлен в одном операнде, но не в обоих. |
'~' | Оператор двоичного дополнения является унарным и имеет эффект «переворачивания» битов. |
<< | Двоичный оператор сдвига влево. Значение левого операнда сдвигается влево на количество бит, указанное правым операндом. |
>> | Двоичный оператор сдвига вправо. Значение левого операнда сдвигается вправо на количество бит, указанное правым операндом. |
>>> | Оператор заполнения нулями сдвига вправо. Значение левого операнда сдвигается вправо на количество бит, указанное правым операндом, а сдвинутые значения заполняются нулями. |
8. Тернарный оператор
- В Java есть один условный оператор. Он называется тернарным оператором, поскольку принимает три операнда.
- Два символа «?» и «:» образуют тернарный оператор.
- Если логическое выражение имеет значение true, оно вычисляет истинное выражение; в противном случае оно вычисляет ложное выражение.
boolean-expression ? true-expression : false-expression
целое число1 = 40;целое число2 = 20;int biggerNumber =(число1 > число2) ? число1 : число2;//Сравнивает оба числа и возвращает, какое из них больше
9. Таблица приоритетов операторов
В Java есть четко определенные правила для указания порядка, в котором оцениваются операторы в выражении, когда выражение содержит несколько операторов. Например, умножение и деление имеют более высокий приоритет, чем сложение и вычитание.
Правила приоритета могут быть переопределены явными скобками.
Когда два оператора разделяют операнд, первым идет оператор с более высоким приоритетом. Например, 1 + 2 * 3 рассматривается как 1 +(2 * 3), потому что приоритет умножения выше, чем сложения.
В приведенном выше выражении, если вы хотите сначала сложить значения, то используйте явные скобки, например:(1 + 2) * 3.
Приоритет | Оператор | Тип | Ассоциативность |
---|---|---|---|
15 | () [] · | Скобки Индекс массива Выбор участников | Слева направо |
14 | ++ — | Унарный пост-инкремент Унарный постдекремент | Справа налево |
13 | ++ — + – ! ~ ( тип ) | Унарный преинкремент Унарный преддекремент Унарный плюс Унарный минус Унарное логическое отрицание Унарное побитовое дополнение Унарное приведение типа | Справа налево |
12 | * / % | Умножение Разделение Модуль | Слева направо |
11 | + – | Добавление Вычитание | Слева направо |
10 | << >> >>> | Побитовый сдвиг влево Побитовый сдвиг вправо с расширением знака Побитовый сдвиг вправо с нулевым расширением | Слева направо |
9 | < <= > >= экземпляр | Относительно меньше, чем Относительное меньше или равно Относительное больше чем Относительное больше или равно Сравнение типов(только объекты) | Слева направо |
8 | == != | Относительно равно Относительное не равно | Слева направо |
7 | & | Побитовое И | Слева направо |
6 | ^ | Побитовое исключающее ИЛИ | Слева направо |
5 | | | Побитовое включающее ИЛИ | Слева направо |
4 | && | Логическое И | Слева направо |
3 | || | Логическое ИЛИ | Слева направо |
2 | ? : | Тернарное условное предложение | Справа налево |
1 | = += -= *= /= %= | Назначение Дополнительное задание Задание на вычитание Задание по умножению Назначение дивизии Назначение модуля | Справа налево |
Вот и все об операторах в Java.