1. 概述

操作符是任何编程语言的基础构建块。我们使用操作符对值和变量执行运算。

Java提供了多种操作符,按功能可分为不同类别。本文将系统介绍所有Java操作符,助你掌握其用法和特性。

2. 算术操作符

算术操作符用于基础数学运算。注意:仅适用于基本数字类型及其包装类(如intInteger)。

2.1. 加法操作符

加法操作符(+)执行数值相加或字符串拼接:

int ten = 5 + 5; // 十等于5加5
String youAndMe = "You " + "and" + " Me"; // 字符串拼接

2.2. 减法操作符

减法操作符(-)执行数值相减:

int five = 10 - 5; // 五等于10减5
int negative80 = 20 - 100; // 负80等于20减100

2.3. 乘法操作符

乘法操作符(*)执行数值相乘:

int hundred = 20 * 5; // 百等于20乘5
int fifteen = -5 * -3; // 负负得正

2.4. 除法操作符

除法操作符(/)执行数值相除:

int four = 20 / 5; // 四等于20除5
int seven = 15 / 2; // 整数除法结果为7(舍去余数)

踩坑提示:整数类型(byte/short/int/long)相除时,结果只保留商,余数直接丢弃。如15/2商为7余1,结果就是7。

2.5. 取模操作符

取模操作符(%)获取除法余数:

int one = 15 % 2; // 余数为1
int zero = 10 % 5; // 余数为0

3. 一元操作符

一元操作符只需单个操作数,常用于变量自增、自减或取反。

3.1. 一元加操作符

一元加操作符(+)表示正数,通常可省略:

int five = +5; // 等价于 int five = 5

3.2. 一元减操作符

一元减操作符(-)对数值或表达式取反:

int negativeFive = -5; // 负五
int eighty = -(20 - 100); // 表达式取反

3.3. 逻辑非操作符

逻辑非操作符(!)反转布尔值:

boolean aTrue = true;
boolean bFalse = !aTrue; // 变为false

3.4. 自增操作符

自增操作符(++)将变量值加1:

int number = 5;
number++; // number变为6

3.5. 自减操作符

自减操作符(--)将变量值减1:

int number = 5;
number--; // number变为4

注意:自增/自减操作符只能用于变量a++合法,但5++会编译失败。

4. 关系操作符

关系操作符(也称比较操作符)用于比较两个值或变量。

4.1. 等于操作符

等于操作符(==)比较两侧值是否相等:

int number1 = 5;
int number2 = 5;
boolean theyAreEqual = number1 == number2; // true

关键区别:比较对象时,需谨慎选择==equals()方法(如比较LongString时)。

4.2. 不等于操作符

不等于操作符(!=)判断两侧值是否不等:

int number1 = 5;
int number2 = 7;
boolean notEqual = number1 != number2; // true

4.3. 大于操作符

大于操作符(>)判断左侧值是否大于右侧:

int number1 = 7;
int number2 = 5;
boolean greater = number1 > number2; // true

4.4. 大于等于操作符

大于等于操作符(>=)判断左侧值是否大于或等于右侧:

int number1 = 7;
int number2 = 5;
boolean greaterThanOrEqualTo = number1 >= number2; // true
number1 = 5;
greaterThanOrEqualTo = number1 >= number2; // 仍为true

4.5. 小于操作符

小于操作符(<)判断左侧值是否小于右侧:

int number1 = 4;
int number2 = 5;
boolean lessThan = number1 < number2; // true

4.6. 小于等于操作符

小于等于操作符(<=)判断左侧值是否小于或等于右侧:

int number1 = 4;
int number2 = 5;
boolean lessThanOrEqualTo = number1 <= number2; // true
number1 = 5;
lessThanOrEqualTo = number1 <= number2; // 仍为true

5. 逻辑操作符

Java提供两种逻辑操作符:**逻辑与(&&)和逻辑或(||)**,功能类似数字电路中的与门/或门。

5.1. 逻辑与操作符

逻辑与(&&)仅在两侧操作数均为true时返回true

int number1 = 7;
int number2 = 5;
boolean resultTrue = (number1 > 0) && (number1 > number2); // true

5.2. 逻辑或操作符

逻辑或(||)在任一操作数为true时返回true

int number1 = 7;
int number2 = 5;
boolean resultTrue = (number1 > 100) || (number1 > number2); // true

短路特性:逻辑或操作符具有短路效应——一旦某个操作数为true,立即返回结果,不再评估后续操作数。

6. 三元操作符

三元操作符是if-then-else的紧凑形式,因有三个操作数得名。

标准if-else语法:

if ( condition ) {
    expression1
} else {
    expression2
}

三元操作符语法:

condition ? expression1 : expression2

示例:

int number = 100;
String greaterThan50 = number > 50 ? "The number is greater than 50" : "The number is NOT greater than 50";

7. 位操作符和位移操作符

位操作符和位移操作符的详细内容可参考Java位操作符详解,此处简要概述。

7.1. 按位与操作符

按位与(&)对输入值逐位执行与运算:

int number1 = 12;
int number2 = 14;
int twelve = number1 & number2; // 00001100 & 00001110 = 00001100 = 12

7.2. 按位或操作符

按位或(|)对输入值逐位执行或运算:

int number1 = 12;
int number2 = 14;
int fourteen = number1 | number2; // 00001100 | 00001110 = 00001110 = 14

7.3. 按位异或操作符

按位异或(^)对输入值逐位执行异或运算:

int number1 = 12;
int number2 = 14;
int two = number1 ^ number2; // 00001100 ^ 00001110 = 00000010 = 2

7.4. 按位取反操作符

按位取反(~)是单目操作符,反转所有位:

int number = 12;
int negative13 = ~number; // ~00001100 = 11110011 = -13

7.5. 左移操作符

左移操作符(<<)将位向左移动指定次数,右侧补0:

int fourtyeight = 12 << 2; // 00001100 << 2 = 00110000 = 48

等效计算n << x 等价于 n * 2^x

7.6. 带符号右移操作符

带符号右移操作符(>>)将位向右移动指定次数,左侧按符号位填充:

int three = 12 >> 2; // 00001100 >> 2 = 00000011 = 3
int negativeThree = -12 >> 2; // 11110100 >> 2 = 11111101 = -3

等效计算n >> x 等价于 n / 2^x

7.7. 无符号右移操作符

无符号右移操作符(>>>)与>>类似,但左侧始终补0

int three = 12 >>> 2; // 00001100 >> 2 = 00000011 = 3
int result = -12 >>> 2; // 结果为1073741821 (11111111111111111111111111110100 >>> 2 = 00111111111111111111111111111101)

关键区别:无论正负数,>>>左侧都补0。

8. instanceof操作符

instanceof操作符用于检查对象是否为特定类型:

boolean resultTrue = Long.valueOf(20) instanceof Number; // true

9. 赋值操作符

赋值操作符用于为变量赋值。

9.1. 简单赋值操作符

简单赋值操作符(=)将右侧值赋给左侧变量:

int seven = 7;

9.2. 复合赋值操作符

算术操作符可与赋值操作符组合,形成复合赋值:

// 假设所有变量初始值为10
a += 4; // a = 14,等价于 a = a + 4
b -= 4; // b = 6,等价于 b = b - 4
c *= 4; // c = 40,等价于 c = c * 4
d /= 4; // d = 2,等价于 d = d / 4
e %= 4; // e = 2,等价于 e = e % 4

10. 总结

Java提供了丰富的操作符体系,涵盖算术、关系、逻辑、位运算等多种功能。掌握这些操作符是编写高效Java代码的基础。


原始标题:Java Operators