Основные операторы языка


Java предоставляет богатый набор операторов для управления переменными. Все операторы Java можно разделить на следующие группы:

арифметические операторы;
операторы сравнения;
побитовые операторы;
логические операторы;
операторы присваивания;
прочие операторы.


Арифметические операторы
Арифметические операторы — используются в математических выражениях таким же образом, как они используются в алгебре. Предположим, целая переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены арифметические операторы в Java:

Оператор Описание Пример
+ Складывает значения по обе стороны от оператора A + B даст 30
- Вычитает правый операнд из левого операнда A - B даст -10
* Умножает значения по обе стороны от оператора A * B даст 200
/ Оператор деления делит левый операнд на правый операнд B / A даст 2
% Делит левый операнд на правый операнд и возвращает остаток B % A даст 0
++ Инкремент - увеличивает значение операнда на 1 B++ даст 21
-- Декремент - уменьшает значение операнда на 1 B-- даст 19
Пример
Следующий простой пример показывает программно арифметические операторы. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

public class Test {

public static void main(String args[]) {
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println("a + b = " + (a + b));
System.out.println("a - b = " + (a - b));
System.out.println("a * b = " + (a * b));
System.out.println("b / a = " + (b / a));
System.out.println("b % a = " + (b % a));
System.out.println("c % a = " + (c % a));
System.out.println("a++ = " + (a++));
System.out.println("b-- = " + (a--));
// Проверьте разницу в d++ и ++d
System.out.println("d++ = " + (d++));
System.out.println("++d = " + (++d));
}
}
Это произведет следующий результат:

a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5
a++ = 10
b-- = 11
d++ = 25
++d = 27
Операторы сравнения
Есть следующие операторы сравнения, поддерживаемые на языке Java. Предположим, переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены реляционные операторы или операторы сравнения в Java:

Оператор Описание Пример
== Проверяет, равны или нет значения двух операндов, если да, то условие становится истинным (A == B) — не верны
!= Проверяет, равны или нет значения двух операндов, если значения не равны, то условие становится истинным (A != B) — значение истинна
> Проверяет, является ли значение левого операнда больше, чем значение правого операнда, если да, то условие становится истинным (A > B) — не верны
< Проверяет, является ли значение левого операнда меньше, чем значение правого операнда, если да, то условие становится истинным (A < B) — значение истинна
>= Проверяет, является ли значение левого операнда больше или равно значению правого операнда, если да, то условие становится истинным (A >= B) — значение не верны
<= Проверяет, если значение левого операнда меньше или равно значению правого операнда, если да, то условие становится истинным (A <= B) — значение истинна
Пример
Следующий простой пример показывает, программно операторы сравнения в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

public class Test {

public static void main(String args[]) {
int a = 10;
int b = 20;
System.out.println("a == b = " + (a == b) );
System.out.println("a != b = " + (a != b) );
System.out.println("a > b = " + (a > b) );
System.out.println("a < b = " + (a < b) );
System.out.println("b >= a = " + (b >= a) );
System.out.println("b <= a = " + (b <= a) );
}
}
Будет получен следующий результат:

a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false
Побитовые операторы
Java определяет несколько побитовых операторов, которые могут быть применены для целочисленных типов: int, long, short, char и byte. В Java побитовый оператор работает над битами и выполняет операцию бит за битом. Предположим, если a = 60; и b = 13; то в двоичном формате они будут следующие:

a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011

Предположим целочисленные переменная A равна 60, а переменная B равна 13. В следующей таблице перечислены побитовые операторы в Java:

Оператор Описание Пример
& (побитовое и) Бинарный оператор AND копирует бит в результат, если он существует в обоих операндах. (A & B) даст 12, который является 0000 1100
| (побитовое или) Бинарный оператор OR копирует бит, если он существует в любом из операндов. (A | B) даст 61 который равен 0011 1101
^ (побитовое логическое или) Бинарный оператор XOR копирует бит, если он установлен в одном операнде, но не в обоих. (A ^ B) даст 49, которая является 0011 0001
~ (побитовое дополнение) Бинарный оператор дополнения и имеет эффект «отражения» бит. (~ A) даст -61, которая является формой дополнением 1100 0011 в двоичной записи
<< (сдвиг влево) Бинарный оператор сдвига влево. Значение левых операндов перемещается влево на количество бит, заданных правым операндом. A << 2 даст 240, который 1111 0000
>> (сдвиг вправо) Бинарный оператор сдвига вправо. Значение правых операндов перемещается вправо на количество бит, заданных левых операндом. A >> 2 даст 15, который является 1111
>>> (нулевой сдвиг вправо) Нулевой оператор сдвига вправо. Значение левых операндов перемещается вправо на количество бит, заданных правым операндом, а сдвинутые значения заполняются нулями. A >>> 2 даст 15, который является 0000 1111
Пример
Следующий простой пример показывает, программно побитовые операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

public class Test {

public static void main(String args[]) {
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;

c = a & b; /* 12 = 0000 1100 */
System.out.println("a & b = " + c );

c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );

c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );

c = ~a; /*-61 = 1100 0011 */
System.out.println("~a = " + c );

c = a << 2; /* 240 = 1111 0000 */
System.out.println("a << 2 = " + c );

c = a >> 2; /* 215 = 1111 */
System.out.println("a >> 2 = " + c );

c = a >>> 2; /* 215 = 0000 1111 */
System.out.println("a >>> 2 = " + c );
}
}
Будет получен следующий результат:

a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 15
a >>> 15
Логические операторы
Предположим, логическая переменная A имеет значение true, а переменная B хранит false. В следующей таблице перечислены логические операторы в Java:

Оператор Описание Пример
&& Называется логический оператор «И». Если оба операнда являются не равны нулю, то условие становится истинным (A && B) — значение false
|| Называется логический оператор «ИЛИ». Если любой из двух операндов не равен нулю, то условие становится истинным (A || B) — значение true
! Называется логический оператор «НЕ». Использование меняет логическое состояние своего операнда. Если условие имеет значение true, то оператор логического «НЕ» будет делать false !(A && B) — значение true
Пример
Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

public class Test {

public static void main(String args[]) {
boolean a = true;
boolean b = false;

System.out.println("a && b = " + (a&&b));

System.out.println("a || b = " + (a||b) );

System.out.println("!(a && b) = " + !(a && b));
}
}
Это произведет следующий результат:

a && b = false
a || b = true
!(a && b) = true
Операторы присваивания
Существуют следующие операторы присваивания, поддерживаемые языком Java:

Оператор Описание Пример
= Простой оператор присваивания, присваивает значения из правой стороны операндов к левому операнду C = A + B, присвоит значение A + B в C
+= Оператор присваивания «Добавления», он присваивает левому операнду значения правого C += A, эквивалентно C = C + A
-= Оператор присваивания «Вычитания», он вычитает из правого операнда левый операнд C -= A, эквивалентно C = C - A
*= Оператор присваивания «Умножение», он умножает правый операнд на левый операнд C * = A эквивалентно C = C * A
/= Оператор присваивания «Деление», он делит левый операнд на правый операнд C /= A эквивалентно C = C / A
%= Оператор присваивания «Модуль», он принимает модуль, с помощью двух операндов и присваивает его результат левому операнду C %= A, эквивалентно C = C % A
<<= Оператор присваивания «Сдвиг влево» C << = 2, это как C = C << 2
>>= Оператор присваивания «Сдвиг вправо» C >>= 2, это как C = C >> 2
&= Оператор присваивания побитового «И» («AND») C &= 2, это как C = C & 2
^= Оператор присваивания побитового исключающего «ИЛИ» («XOR») C ^= 2, это как C = C ^ 2
|= Оператор присваивания побитового «ИЛИ» («OR») C |= 2, это как C = C | 2
Пример
Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

public class Test {

public static void main(String args[]) {
int a = 10;
int b = 20;
int c = 0;

c = a + b;
System.out.println("c = a + b = " + c );

c += a ;
System.out.println("c += a = " + c );

c -= a ;
System.out.println("c -= a = " + c );

c *= a ;
System.out.println("c *= a = " + c );

a = 10;
c = 15;
c /= a ;
System.out.println("c /= a = " + c );

a = 10;
c = 15;
c %= a ;
System.out.println("c %= a = " + c );

c <<= 2 ;
System.out.println("c <<= 2 = " + c );

c >>= 2 ;
System.out.println("c >>= 2 = " + c );

c >>= 2 ;
System.out.println("c >>= a = " + c );

c &= a ;
System.out.println("c &= 2 = " + c );

c ^= a ;
System.out.println("c ^= a = " + c );

c |= a ;
System.out.println("c |= a = " + c );
}
}
Будет получен следующий результат:

c = a + b = 30
c += a = 40
c -= a = 30
c *= a = 300
c /= a = 1
c %= a = 5
c <<= 2 = 20
c >>= 2 = 5
c >>= 2 = 1
c &= a = 0
c ^= a = 10
c |= a = 10
Прочие операторы
Есть несколько других операторов, поддерживаемых языком Java.

Тернарный оператор или условный оператор (?:)
Тернарный оператор — оператор, который состоит из трех операндов и используется для оценки выражений типа boolean. Тернарный оператор в Java также известен как условный оператор. Этот. Цель тернарного оператора или условного оператора заключается в том, чтобы решить, какое значение должно быть присвоено переменной. Оператор записывается в виде:

переменная x = (выражение) ? значение if true : значение if false
Пример
Ниже приведен пример:

public class Test {

public static void main(String args[]){
int a , b;
a = 10;
b = (a == 1) ? 20 : 30;
System.out.println( "Значение b: " + b );

b = (a == 10) ? 20 : 30;
System.out.println( "Значение b: " + b );
}
}
Будет получен следующий результат:

Значение b: 30
Значение b: 20
Оператор instanceof
Оператор instanceof — проверяет, является ли объект определенного типа (типа класса или типа интерфейса) и используется только для переменных ссылочного объекта. Оператор instanceof записывается в виде:

(Переменная ссылочного объекта) instanceof (класс/тип интерфейса)
Примеры
Если переменная ссылочного объекта в левой части оператора проходит проверку для класса/типа интерфейса на правой стороне, результатом будет значение true. Ниже приведен пример и описание оператора instanceof:

public class Test {

public static void main(String args[]){
String name = "Олег";
// Следующее вернётся верно, поскольку тип String
boolean result = name instanceof String;
System.out.println( result );
}
}
Будет получен следующий результат:

true
Этот оператор по-прежнему будет возвращать значение true, если сравниваемый объект является совместимым с типом на право назначения. Ниже приводится еще один пример:

class Vehicle {}

public class Car extends Vehicle {
public static void main(String args[]){
Vehicle a = new Car();
boolean result = a instanceof Car;
System.out.println( result );
}
}
Будет получен следующий результат:

true
Приоритет операторов в Java
Приоритет операторов определяет группирование терминов в выражении. Это влияет как вычисляется выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например оператор умножения имеет более высокий приоритет, чем оператор сложения:

Например, x = 7 + 3 * 2. Здесь x присваивается значение 13, не 20, потому что оператор «*» имеет более высокий приоритет, чем «+», так что сначала перемножается «3 * 2», а затем добавляется «7».

В таблице операторы с наивысшим приоритетом размещаются в верхней части, и уровень приоритета снижается к нижней части таблицы. В выражении высокий приоритет операторов в Java будет оцениваться слева направо.

Категория Оператор Ассоциативность
Постфикс () [] . (точка) Слева направо
Унарный ++ - - ! ~ Справа налево
Мультипликативный * / % Слева направо
Аддитивный + - Слева направо
Сдвиг >> >>> << Слева направо
Реляционный > >= < <= Слева направо
Равенство == != Слева направо
Побитовое «И» («AND») & Слева направо
Побитовое исключающее «ИЛИ» («XOR») ^ Слева направо
Побитовое «ИЛИ» («OR») | Слева направо
Логическое «И» («AND») && Слева направо
Логическое «ИЛИ» («OR») || Слева направо
Условный ?: Справа налево
Присваивание = += -= *= /= %= >>= <<= &= ^= |= Справа налево
Запятая , Слева направо
В следующем уроке поговорим об управлении циклом в программировании на Java. В этом уроке будут описаны различные типы циклов, как циклы могут быть использованы в разработке программ, и для каких целей они используются.