English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массив

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Список (List)

Java Очередь (Queue)

Java Карта

Java Множество

Java Вход/Вывод (I/O)

Java Reader/Writer

Другие темы Java

Операторы Java

Одним из основных用途 компьютера является выполнение математических вычислений, как компьютерный язык, Java также предоставляет набор богатых операторов для манипуляции переменными. Мы можем разделить операторы на следующие группы:

  • Арифметические операторы

  • 关系运算符

  • Битовые операторы

  • Логические операторы

  • Операторы присваивания

  • Другие операторы

Арифметические операторы

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

Примеры в таблице предполагают, что значение переменной A равно 10, а значение переменной B равно 20:

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

Пример

Ниже приведен пример простого программного обеспечения, демонстрирующего арифметические операторы. Скопируйте и вставьте следующий Java-код в файл ArithmeticOperator.java, сохраните его, затем скомпилируйте и запустите эту программу:

class ArithmeticOperator {
    public static void main(String[] args) {
        
        double number1 = 12.5, number2 = 3.5, result;
        
        // использование оператора сложения
        result = number1 + number2;
        System.out.println("number1 + number2 = " + result);
        
        // использование оператора вычитания
        result = number1 - number2;
        System.out.println("number1 - number2 = " + result);
        
        // использование оператора умножения
        result = number1 * number2;
        System.out.println("number1 * number2 = " + result);
        // использование оператора деления
        result = number1 / number2;
        System.out.println("number1 / number2 = " + result);
        
        // использование оператора модуля
        result = number1 % number2;
        System.out.println("number1 % number2 = " + result);
    }
}

Результат компиляции и выполнения примеров выше такой:

number1 + number2 = 16.0
number1 - number2 = 9.0
number1 * number2 = 43.75
number1 / number2 = 3.5714285714285716
number1 % number2 = 2.0

自增自减运算符

1、自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,而自增自减运算符是一个操作数。

public class selfAddMinus{
    public static void main(String[] args){
        int a = 3;//定义一个变量;
        int b = ++a;//自增运算
        int c = 3;
        int d = --c;//自减运算
        System.out.println("进行自增运算后的值等于"+b);
        System.out.println("进行自减运算后的值等于"+d);
    }
}

Результат выполнения:

进行自增运算后的值等于4
进行自减运算后的值等于2

Интерпретация:

  • int b = ++a; 拆分运算过程为: a=a+1=4; b=a=4, 最后结果为b=4,a=4

  • int d = --c; 拆分运算过程为: c=c-1=2; d=c=2, 最后结果为d=2,c=2

2、前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。

3、后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算 示例:

public class selfAddMinus{
    public static void main(String[] args){
        int a = 5;//Определение переменной;
        int b = 5;
        int x = 2*++a;
        int y = 2*b++;
        System.out.println("自增运算符前缀运算后a="+a+",x="+x);
        System.out.println("自增运算符后缀运算后b="+b+",y="+y);
    }
}

Результат выполнения:

自增运算符前缀运算后a=6,x=12自增运算符后缀运算后b=6,y=10

关系运算符

下表为Java支持的关系运算符

表格中的示例整数变量A的值为10,变量B的值为20:

运算符    Описание    Пример
    ==检查如果两个操作数的值是否相等,如果相等则条件为真。(A == B)为假。
    !=检查如果两个操作数的值是否相等,如果值不相等则条件为真。 (A != B) 为真。
    > 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。(A > B) ложно.
    <  Проверьте, является ли значение левого операнда меньше значения правого операнда, если да, то условие истины.(A < B) истина.
    >=Проверьте, является ли значение левого операнда больше или равно значению правого операнда, если да, то условие истины.(A >= B) ложно.
    <=Проверьте, является ли значение левого операнда меньше или равно значению правого операнда, если да, то условие истины.(A <= B) истина.

Пример

Ниже приведен пример программы, демонстрирующий отношения операторы. Скопируйте и вставьте следующую программу Java и сохраните ее как файл Test.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, то результат равен 1, в противном случае 0(A & B), получаем 12, то есть 0000 1100
|Если соответствующие позиции оба 0, то результат равен 0, в противном случае 1(A | B) получают 61, что равно 0011 1101
^Если значения соответствующих битовых позиций одинаковы, то результат равен 0, в противном случае 1(A ^ B) получают 49, что равно 0011 0001
~Оператор инверсии бит. Вращает每一位 операнда, то есть 0 становится 1, а 1 становится 0.(~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;     /* 15 = 1111 */
     System.out.println("a >> 2  = " + c );
  
     c = a >>> 2;     /* 15 = 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

ОператорыОписаниеПример
&&Это логический оператор и. Условие true только в том случае, если оба операнда true.(A && B) ложно.
| |Это логический оператор или. Если любой из операндов true, условие true.(A || B) истина.
!Это логический оператор не. Используется для инверсии логического состояния операнда. Если условие true, то логический оператор не возвращает false.!(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

Короткие логические операторы

Когда используется логический оператор "и", результат будет true только в том случае, если оба операнда true, но если первый операнд false, результат будет определенно false, и в этом случае не будет выполняться вторая операция.

public class LuoJi{
    public static void main(String[] args){
        int a = 5;//Определение переменной;
        boolean b = (a<4)&&(a++<10);
        System.out.println("Результат использования коротких логических операторов равен"+b);
        System.out.println("Результат a равен"+a);
    }
}

Результат выполнения:

Результат использования коротких логических операторов равен false
Результат a равен 5

Интерпретация:Эта программа использует короткие логические операторы (&&), сначала проверяется, что результат a<4 равен false, тогда результат b также будет false, поэтому第二个 операция a++<10 не выполняется, поэтому значение a равно 5.

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

Ниже приведены операторы присваивания, поддерживаемые языком Java:

ОператорыОписаниеПример
=Простые операторы присваивания, присваивающие значение правого операнда левой операндеC = A + B присвоит значению C результат выражения A + B
+ =Оператор присваивания сложения, который сложит левые и правые операнды и присваивает результат левого операндуC += A эквивалентно C = C + A
- =Оператор присваивания вычитания, который вычитает левые и правые операнды и присваивает результат левого операндуC -= A эквивалентно C = C - A
* =Оператор присваивания умножения, который умножает левые и правые операнды и присваивает результат левого операндуC *= A эквивалентно C = C * A
/ =Оператор присваивания деления, который делит левые и правые операнды и присваивает результат левого операнду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
^ =Оператор присваивания логического ИЛИC ^= 2 эквивалентно C = C ^ 2
| =Оператор присваивания логического ИC |= 2 эквивалентно C = C | 2

Пример

Простая примерная программа демонстрирует оператор присваивания. Скопируйте и вставьте следующий Java-код в файл AssignmentOperator.java, сохраните его, затем скомпилируйте и запустите программу:

class AssignmentOperator {
    public static void main(String[] args) {
        
        int number1, number2;
        
        //Присвоение значения 5 переменной number1
        number1 = 5;
        System.out.println(number1);
                
        //Присвоение значения переменной number2 переменной number1
        number2 = number1;
        System.out.println(number2);
    }
}

Результат компиляции и выполнения примеров выше такой:

5
5

Оператор условия(?:)

Оператор условия также известен как三元 оператор. У оператора есть три операнда и он должен�断 значение логического выражения. Основная функция оператора - определить, какое значение должно быть присвоено переменной.

Переменная x = (выражение) ? значение если истина : значение если ложно

Пример

public class Test {
   public static void main(String[] args){
      int a, b;
      a = 10;
      // Если a равно 1, то установить b в 20, в противном случае 30
      b = (a == 1) ? 20 : 30;
      System.out.println("Значение b: " + b);
 
      // Если a равно 10, то установить b в 20, в противном случае 30
      b = (a == 10) ? 20 : 30;
      System.out.println("Значение b: " + b);
   }
}

Результат компиляции и выполнения примеров выше такой:

Значение b: 30
Значение b: 20

Оператор instanceof

Этот оператор используется для работы с объектами, чтобы проверить, является ли объект конкретным типом (тип класса или интерфейса).

Формат использования оператора instanceof такой:

(Object reference variable) instanceof (class/interface type)

Если объект, на который указывает переменная слева от оператора, является объектом класса или интерфейса (class/interface) справа от оператора, то результат будет true.

Вот один из примеров:

String name = "James";
boolean result = name instanceof String; // так как name является типом String, поэтому возвращает 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

Когда несколько операторов出现在 одном выражении, кто будет выполняться первым? Это касается вопроса приоритета операторов. В выражениях с несколькими операторами различный приоритет может привести к значительным различиям в конечных результатах.

Например, (1+3) + (3+2) * 2, если выражение вычисляется по приоритету сложения, ответ будет 18, а если по приоритету умножения, ответ будет 14.

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

В таблице, расположенной ниже, операторы с наивысшим приоритетом расположены в верхней части таблицы, а с наименьшим приоритетом - в нижней части.

КатегорияОператорыСвязанность
Префикс() [] . (оператор точечной арифметики)Слева направо
Унарныеexpr++  expr--Слева направо
Унарные++expr --expr + - ~ !Справа налево
Множество * /%Слева направо
Добавление + -Слева направо
Сдвиг >>> >>>  << Слева направо
Отношение >  >=  <  <= Слева направо
Равенство ==  !=Слева направо
Битовое ИСлева направо
Битовое ИЛИ без повторения^Слева направо
Битовое ИЛИ|Слева направо
Логическое И&&Слева направо
Логическое ИЛИ| |Слева направо
Условие?:Справа налево
Ассигнование= + = - = * = / =%= >> = << =&= ^ = | =Справа налево
ЗапятаяСлева направо