Одним из основных применений компьютеров является выполнение математических операций. Являясь компьютерным языком, Java также предоставляет богатый набор операторов для управления переменными. Мы можем разделить операторов на следующие группы:
Арифметические операторы используются в математических выражениях и работают так же, как и в математике. В следующей таблице перечислены все арифметические операторы.
В примере в таблице предполагается, что целочисленная переменная A имеет значение 10, а переменная B — 20:
Оператор | описывать | пример |
---|---|---|
+ | Сложение — значения по обе стороны от оператора сложения. | А + В равно 30 |
- | Вычитание – левый операнд минус правый операнд | А – Б равно -10 |
* | Умножение — умножает значения по обе стороны от оператора. | А * В равно 200 |
/ | Деление – делит левый операнд на правый операнд | Б/А равно 2 |
% | По модулю — остаток левого операнда, разделенный на правый операнд. | Б%А равно 0 |
++ | Приращение – увеличивает значение операнда на 1. | B++ или ++B равно 21 |
-- | Декремент – уменьшает значение операнда на 1. | B-- или --B равно 19 |
Хотя оба являются самовозрастающими (результаты их операций равны B+1), различия между B++ и ++B все же существуют. ++B — это l-значение, и с ним можно работать непосредственно на месте (можно понимать как + непосредственно на). переменная B) 1), B++ является значением r. При работе в компиляторе сначала создается временная переменная, а затем временная переменная используется для вычисления +1 и затем присваивается B.
Таким образом, в приведенном ниже примере кода при печати d++ обнаруживается, что результат равен не +1 (в этот момент печатается переменная d и используется временная переменная d), а результат, отображаемый в следующем напечатанный оператор снова равен +1. Конечный результат (значение временной переменной присваивается переменной d). Результат вывода ++d равен +1.
Следующий простой пример программы демонстрирует арифметические операторы. Скопируйте и вставьте следующую программу 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("a-- = " + (a--) ); // 查看d++ 与++d 的不同System.out.println("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 a-- = 11 d++ = 25 d =26 ++d = 27
В следующей таблице показаны реляционные операторы, поддерживаемые Java.
Пример целочисленной переменной A в таблице имеет значение 10, а переменная B — 20:
оператор | описывать | пример |
---|---|---|
== | Проверяет, равны ли значения двух операндов, если да, то условие истинно. | (A == B) неверно (не верно). |
!= | Проверяет, равны ли значения двух операндов, если значения не равны, то условие истинно. | (A != B) верно. |
> | Проверяет, больше ли значение левого операнда, чем значение правого операнда, если да, то условие становится истинным. | (А>В) неверно. |
< | Проверяет, меньше ли значение левого операнда, чем значение правого операнда, если да, то условие становится истинным. | (А < В) верно. |
>= | Проверяет, больше ли значение левого операнда или равно значению правого операнда, если да, то условие становится истинным. | (A>=B) неверно. |
<= | Проверяет, меньше ли значение левого операнда или равно значению правого операнда, если да, то условие становится истинным. | (A <= B) верно. |
Следующий простой пример программы демонстрирует реляционные операторы. Скопируйте и вставьте следующую программу 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).
Побитовые операторы оперируют всеми битами и работают побитно. Предположим, 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:
Оператор | описывать | пример |
---|---|---|
& | Побитовый оператор И, результат равен 1 тогда и только тогда, когда определенный бит обоих операндов отличен от 0. | (A&B), получите 12, это 0000 1100. |
| | Побитовый оператор ИЛИ, пока определенный бит двух операндов не равен 0, результат будет 1. | (A | B) получает 61, что равно 0011 1101. |
^ | Побитовый оператор XOR: если определенный бит двух операндов различен, бит результата равен 1. | (A^B) дает нам 49, то есть 0011 0001. |
~ | Оператор побитового дополнения инвертирует каждый бит операнда. | (~A) получает -61, что составляет 1100 0011. |
<< | Побитовый оператор сдвига влево. Левый операнд сдвигается влево на количество бит, заданное правым операндом. | << 2 дает нам 240, что составляет 1111 0000. |
>> | Побитовый оператор сдвига вправо. Левый операнд побитово сдвигается вправо на количество бит, указанное правым операндом. | А>>2 дает 15, что равно 1111. |
>>> | Побитовый сдвиг вправо, оператор заполнения нулями. Значение левого операнда сдвигается вправо на количество бит, заданное правым операндом, и образовавшиеся вакансии заполняются нулями. | A>>>2 получает 15, что равно 0000 1111. |
Следующий простой пример программы демонстрирует побитовые операторы. Скопируйте и вставьте следующую программу 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 >> 2 = 15 a >>> 2 = 15
В следующей таблице перечислены основные операции логических операторов в предположении, что логическая переменная A имеет значение true, а переменная B — false.
Оператор | описывать | пример |
---|---|---|
&& | Вызывается логическим оператором И. Условие истинно тогда и только тогда, когда оба операнда истинны. | (A && B) неверно. |
| | Вызывается логическим оператором ИЛИ. Условие истинно, если любой из двух операндов истинен. | (А | | Б) верно. |
! | Вызывается логическим оператором НЕ. Используется для инвертирования логического состояния операнда. Если условие истинно, логический оператор НЕ принимает значение «ложь». | ! (A && B) верно. |
Следующий простой пример программы демонстрирует логические операторы. Скопируйте и вставьте следующую программу 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 |
&= | Побитовый оператор присваивания И | C&=2 эквивалентно C=C&2 |
^ = | Побитовый оператор присваивания XOR | C^=2 эквивалентно C=C^2 |
| = | Побитовый оператор присваивания ИЛИ | C|=2 эквивалентно C=C|2 |
Следующий простой пример программы демонстрирует оператор присваивания. Скопируйте и вставьте следующую программу 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 &= a= " + 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
Условные операторы также известны как тернарные операторы. Этот оператор имеет три операнда и должен оценивать значение логического выражения. Основная цель этого оператора — решить, какое значение следует присвоить переменной.
variable x = (expression) ? value if true : value if false
public class Test { public static void main(String args[]){ int a , b; a = 10; b = (a == 1) ? 20: 30; System.out.println( "Value of b is : " + b ); b = (a == 10) ? 20: 30; System.out.println( "Value of b is : " + b ); } }
Результаты компиляции и запуска приведенного выше примера следующие:
Value of b is : 30 Value of b is : 20
Этот оператор используется для работы с экземплярами объектов и проверки того, принадлежит ли объект к определенному типу (типу класса или типу интерфейса).
Оператор экземпляра используется в следующем формате:
( Object reference variable ) instanceof (class/interface type)
Если объект, на который указывает переменная в левой части оператора, является объектом класса или интерфейса (класс/интерфейс) в правой части оператора, результат будет истинным.
Вот пример:
String name = 'James'; boolean result = name instanceof String; // 由于name是String类型,所以返回真
Этот оператор по-прежнему возвращает 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
Если в выражении присутствует несколько операторов, какой из них идет первым? Это включает в себя проблему приоритета операторов. В выражении с несколькими операторами разные приоритеты операторов приведут к совершенно разным конечным результатам.
Например, (1+3)+(3+2)*2, если это выражение вычисляется по знаку плюс как высший приоритет, то ответ будет 18, а если знак умножения имеет высший приоритет, то ответ будет 14.
Другой пример: x = 7 + 3 * 2; здесь x получает 13, а не 20, поскольку оператор умножения имеет более высокий приоритет, чем оператор сложения, поэтому сначала вычисляется 3 * 2, чтобы получить 6, а затем добавляется 7.
Операторы с самым высоким приоритетом в следующей таблице находятся в верхней части таблицы, а операторы с самым низким приоритетом — в нижней части таблицы.
категория | Оператор | актуальность |
---|---|---|
суффикс | () [] . (оператор точки) | слева направо |
один юань | + + -! ~ | справа налево |
мультипликативный | */% | слева направо |
Аддитивность | + - | слева направо |
сдвиг | >> >>> << | слева направо |
связь | >> = << = | слева направо |
равный | == != | слева направо |
Побитовое И | & | слева направо |
Побитовое исключающее ИЛИ | ^ | слева направо |
Побитовое ИЛИ | | | слева направо |
логическое И | && | слева направо |
логичный или | | | слева направо |
состояние | ? : | справа налево |
Назначение | = + = - = * = / =%= >> = << =&= ^ = = | | справа налево |
запятая | , | слева направо |