Арифметические
public class Arithmetic { public static void main(String[] args) { int a = 17; int b = 5; System.out.println(a + b); System.out.println(a - b); System.out.println(a * b); System.out.println(a / b); System.out.println(a % b); System.out.println(17.0 / 5); }}Вывод: 22, 12, 85, 3, 2, 3.4.
Деление двух целых — целочисленное, остаток отбрасывается. Чтобы получить дробный результат, хотя бы один операнд должен быть дробным.
Инкремент и декремент
public class IncDec { public static void main(String[] args) { int x = 5; int a = x++; int b = ++x; System.out.println(a + " " + b + " " + x); }}Вывод: 5 7 7. Постфиксная форма x++ возвращает старое значение, префиксная ++x — новое.
Составное присваивание
public class Compound { public static void main(String[] args) { int x = 10; x += 5; x -= 3; x *= 2; x /= 4; x %= 4; System.out.println(x); }}Сравнение
==, !=, <, >, <=, >= возвращают boolean.
public class Comparison { public static void main(String[] args) { int a = 5; int b = 10; System.out.println(a < b); System.out.println(a == b); System.out.println(a != b); }}Для объектов, включая строки, == сравнивает ссылки. Содержимое сравнивается методом equals.
Логические операторы
| Оператор | Значение |
|---|---|
&& | И, с ленивым вычислением |
| `\ | \ |
! | НЕ |
^ | исключающее ИЛИ |
public class Logic { public static void main(String[] args) { int age = 20; boolean hasTicket = true; boolean canEnter = age >= 18 && hasTicket; System.out.println(canEnter); System.out.println(!canEnter); String text = null; boolean safe = text != null && text.length() > 0; System.out.println(safe); }}В text != null && text.length() > 0 правая часть не вычисляется, если левая ложна, поэтому NullPointerException не возникает.
Тернарный оператор
public class Ternary { public static void main(String[] args) { int n = 7; String parity = n % 2 == 0 ? "четное" : "нечетное"; System.out.println(parity); }}Форма: условие ? значение_если_истина : значение_если_ложь.
Побитовые операторы
public class Bitwise { public static void main(String[] args) { int a = 0b1100; int b = 0b1010; System.out.println(a & b); System.out.println(a | b); System.out.println(a ^ b); System.out.println(~a); System.out.println(a << 2); System.out.println(a >> 1); System.out.println(-16 >>> 28); }}Вывод: 8, 14, 6, -13, 48, 6, 15.
<<сдвиг влево, умножение на степень двойки;>>арифметический сдвиг вправо, сохраняет знак;>>>логический сдвиг вправо, заполняет нулями.
Конкатенация строк
Оператор + склеивает строки, а число автоматически превращается в строку:
public class Concat { public static void main(String[] args) { System.out.println("Сумма: " + 1 + 2); System.out.println("Сумма: " + (1 + 2)); System.out.println(1 + 2 + " сумма"); }}Вывод:
Сумма: 12Сумма: 33 суммаВыражения вычисляются слева направо.
Приоритет операторов
От высшего к низшему:
- постфиксные:
x++,x-- - унарные:
++x,-x,!,~ *,/,%+,-- сдвиги:
<<,>>,>>> - сравнения:
<,>,<=,>= - равенство:
==,!= &, затем^, затем|&&, затем||- тернарный
?: - присваивание
=,+=и другие
Если сомневаетесь в порядке, ставьте скобки.
