原文: https://www.programiz.com/java-programming/operators

在本教程中,您将通过示例了解 Java 中不同类型的运算符,它们的语法以及如何使用它们。

运算符是对操作数(变量和值)进行运算的特殊符号(字符)。 例如,+是执行加法的运算符。

在上一教程中,您将了解 Java 变量。 您将学习声明变量并为变量分配值。 现在,您将学习使用运算符来操纵变量。


赋值运算符

赋值运算符在 Java 中用于为变量赋值。 例如,

  1. int age;
  2. age = 5;

赋值运算符将其右侧的值分配给其左侧的变量。 在此,使用=运算符将5分配给变量age

也有其他赋值运算符。 但是,为简单起见,我们将在本文后面学习其他赋值运算符。


示例 1:赋值运算符

  1. class AssignmentOperator {
  2. public static void main(String[] args) {
  3. int number1, number2;
  4. // Assigning 5 to number1
  5. number1 = 5;
  6. System.out.println(number1);
  7. // Assigning value of variable number2 to number1
  8. number2 = number1;
  9. System.out.println(number2);
  10. }
  11. }

输出

  1. 5
  2. 5

算术运算符

算术运算符用于执行数学运算,例如加法,减法,乘法等。

运算符 含义
+ 加法(也用于字符串连接)
- 减法运算符
* 乘法运算符
/ 除法运算符
% 余数运算符

示例 2:算术运算符

  1. class ArithmeticOperator {
  2. public static void main(String[] args) {
  3. double number1 = 12.5, number2 = 3.5, result;
  4. // Using addition operator
  5. result = number1 + number2;
  6. System.out.println("number1 + number2 = " + result);
  7. // Using subtraction operator
  8. result = number1 - number2;
  9. System.out.println("number1 - number2 = " + result);
  10. // Using multiplication operator
  11. result = number1 * number2;
  12. System.out.println("number1 * number2 = " + result);
  13. // Using division operator
  14. result = number1 / number2;
  15. System.out.println("number1 / number2 = " + result);
  16. // Using remainder operator
  17. result = number1 % number2;
  18. System.out.println("number1 % number2 = " + result);
  19. }
  20. }

输出

  1. number1 + number2 = 16.0
  2. number1 - number2 = 9.0
  3. number1 * number2 = 43.75
  4. number1 / number2 = 3.5714285714285716
  5. number1 % number2 = 2.0

在上面的示例中,所有使用的操作数都是变量。 但是,根本没有必要。 算术运算符中使用的操作数也可以是字面值。 例如,

  1. result = number1 + 5.2;
  2. result = 2.3 + 4.5;
  3. number2 = number1 -2.9;

+运算符还可用于连接两个或多个字符串。


示例 3:算术运算符添加字符串

  1. class ArithmeticOperator {
  2. public static void main(String[] args) {
  3. String start, middle, end, result;
  4. start = "Talk is cheap. ";
  5. middle = "Show me the code. ";
  6. end = "- Linus Torvalds";
  7. result = start + middle + end;
  8. System.out.println(result);
  9. }
  10. }

输出

  1. Talk is cheap. Show me the code. - Linus Torvalds

一元运算符

一元运算符仅对一个操作数执行运算。

运算符 含义
+ 一元加(由于数字为正数而不使用它,因此无需使用)
- 一元减:反转表达式的符号
++ 递增运算符:将值加 1
-- 递减运算符:将值减 1
! 逻辑非运算符:反转布尔值

示例 4:一元运算符

  1. class UnaryOperator {
  2. public static void main(String[] args) {
  3. double number = 5.2, resultNumber;
  4. boolean flag = false;
  5. System.out.println("+number = " + +number);
  6. // number is equal to 5.2 here.
  7. System.out.println("-number = " + -number);
  8. // number is equal to 5.2 here.
  9. // ++number is equivalent to number = number + 1
  10. System.out.println("number = " + ++number);
  11. // number is equal to 6.2 here.
  12. // -- number is equivalent to number = number - 1
  13. System.out.println("number = " + --number);
  14. // number is equal to 5.2 here.
  15. System.out.println("!flag = " + !flag);
  16. // flag is still false.
  17. }
  18. }

输出

  1. +number = 5.2
  2. -number = -5.2
  3. number = 6.2
  4. number = 5.2
  5. !flag = true

递增和递减运算符

您还可以在 Java 中同时使用++--运算符作为前缀和后缀。++运算符将值增加 1,--运算符将值减小 1。

  1. int myInt = 5;
  2. ++myInt // myInt becomes 6
  3. myInt++ // myInt becomes 7
  4. --myInt // myInt becomes 6
  5. myInt-- // myInt becomes 5

到目前为止很简单。 但是,在使用递增和递减运算符作为前缀和后缀时,存在一个至关重要的区别。 考虑这个例子,

示例 5:一元运算符

  1. class UnaryOperator {
  2. public static void main(String[] args) {
  3. double number = 5.2;
  4. System.out.println(number++);
  5. System.out.println(number);
  6. System.out.println(++number);
  7. System.out.println(number);
  8. }
  9. }

输出

  1. 5.2
  2. 6.2
  3. 7.2
  4. 7.2

在这里,请注意这行,

  1. System.out.println(number++);

执行此语句时,将首先求值原始值。 然后,number增加。 这就是获得5.2作为输出的原因。

现在,当线,

  1. System.out.println(number);

将打印增加的值。 那就是6.2

但是,

  1. System.out.println(++number);

首先将number增加1,然后执行该语句。 因此,输出为7.2

递减--运算符的情况与此类似。


相等和关系运算符

等式和关系运算符确定两个操作数之间的关系。 它检查操作数是否大于,小于,等于,不等于等。 根据关系,将其求值为truefalse

运算符 描述 示例
== 等于 5 == 3求值为false
!= 不等于 5 != 3求值为true
> 大于 5 > 3求值为true
< 小于 5 < 3求值为false
>= 大于或等于 5 >= 5求值为true
<= 小于或等于 5 <= 5求值为true

相等和关系运算符用于决策和循环(稍后将进行讨论)。 现在,检查这个简单的例子。


示例 6:相等和关系运算符

  1. class RelationalOperator {
  2. public static void main(String[] args) {
  3. int number1 = 5, number2 = 6;
  4. if (number1 > number2) {
  5. System.out.println("number1 is greater than number2.");
  6. }
  7. else {
  8. System.out.println("number2 is greater than number1.");
  9. }
  10. }
  11. }

输出

  1. number2 is greater than number1.

在这里,我们使用>运算符检查number1是否大于number2

由于number2大于number1,因此将表达式number1 > number2求值为false

因此,将执行else内部的代码块,并跳过if内部的代码块。

如果您不理解上面的代码,请不要担心。 您将在 Java 中详细学习它

现在,请记住,相等和关系运算符会比较两个操作数,并被求值为truefalse


运算符实例

除了关系运算符外,还有一个类型比较运算符instanceof,用于将对象与指定的类型进行比较。 例如,

示例 7:instanceof运算符

这是instanceof运算符的示例。

  1. class instanceofOperator {
  2. public static void main(String[] args) {
  3. String test = "asdf";
  4. boolean result;
  5. result = test instanceof String;
  6. System.out.println("Is test an object of String? " + result);
  7. }
  8. }

输出

  1. Is test an object of String? true

这里,由于变量testString类型的。 因此,instanceof运算符返回true。 要了解更多信息,请访问 Java 实例


逻辑运算符

逻辑运算符||(条件或)和&&(条件与)对布尔表达式进行运算。 它们是这样工作的。

运算符 描述 示例
&#124;&#124; 条件或:如果布尔表达式中的任何一个为true,则为true false &#124;&#124; true求值为true
&& 条件与:如果所有布尔表达式均为true,则为true false && true求值为false

示例 8:逻辑运算符

  1. class LogicalOperator {
  2. public static void main(String[] args) {
  3. int number1 = 1, number2 = 2, number3 = 9;
  4. boolean result;
  5. // At least one expression needs to be true for the result to be true
  6. result = (number1 > number2) || (number3 > number1);
  7. // result will be true because (number1 > number2) is true
  8. System.out.println(result);
  9. // All expression must be true from result to be true
  10. result = (number1 > number2) && (number3 > number1);
  11. // result will be false because (number3 > number1) is false
  12. System.out.println(result);
  13. }
  14. }

输出

  1. true
  2. false

:逻辑运算符用于决策和循环。


三元运算符

条件运算符或三元运算符?:if-else语句的简写。 条件运算符的语法为:

  1. variable = Expression ? expression1 : expression2

运作方式如下。

  • 如果Expressiontrue,则将expression1分配给variable
  • 如果Expressionfalse,则将expression2分配给variable

示例 9:三元运算符

  1. class ConditionalOperator {
  2. public static void main(String[] args) {
  3. int februaryDays = 29;
  4. String result;
  5. result = (februaryDays == 28) ? "Not a leap year" : "Leap year";
  6. System.out.println(result);
  7. }
  8. }

输出

  1. Leap year

在这里,我们使用三元运算符检查年份是否为是闰年。 要了解更多信息,请访问 Java 三元运算符


按位和移位运算符

为了在 Java 中执行按位和移位运算符,将使用这些运算符。

运算符 描述
~ 按位补码
<< 左移
>> 右移
>>> 无符号右移
& 按位与
^ 按位异或
&#124; 按位或

这些运算符不常用。 要了解更多信息,请访问 Java 按位运算符和位移位运算符


更多赋值运算符

在本文开头,我们仅讨论了一个赋值运算符=。 除了该运算符外,还有很多赋值运算符使我们编写更简洁的代码。

运算符 示例 相当于
+= x += 5 x = x + 5
-= x -= 5 x = x - 5
*= x *= 5 x = x * 5
/= x /= 5 x = x / 5
%= x %= 5 x = x % 5
<<= x <<= 5 x = x << 5
>>= x >>= 5 x = x >> 5
&= x &= 5 x = x & 5
^= x ^= 5 x = x ^ 5
&#124;= x &#124;= 5 x = x &#124; 5

现在您已经了解了 Java 运算符,是时候了解两个运算符共享一个公共操作数时表达式中的运算符的求值顺序了。 要了解这一点,请访问 Java 运算符优先级