运算符
运算符
运算符类型
- 算术运算符:用于基本的数学运算。
- 加(
+) - 减(
-) - 乘(
*) - 除(
/) - 模(
%):求余数 - 自增(
++):变量值加一 - 自减(
--):变量值减一
- 加(
- 关系运算符:用于比较两个值,并根据比较结果返回布尔值
true或false。- 大于(
>) - 小于(
<) - 大于等于(
>=) - 小于等于(
<=) - 等于(
==) - 不等于(
!=)
- 大于(
- 逻辑运算符:用于布尔逻辑运算。
- 逻辑与(
&&):两个条件都为true时结果才为true - 逻辑或(
||):两个条件中至少有一个为true结果就为true - 逻辑非(
!):反转布尔值,true变false,false变true
- 逻辑与(
- 位运算符:直接对操作数的位执行操作。
- 位与(
&) - 位或(
|) - 位异或(
^) - 位非(
~):反转所有位 - 位左移(
<<):向左移动位 - 位右移(
>>):向右移动位,有符号 - 位无符号右移(
>>>):向右移动位,无符号
- 位与(
- 赋值运算符:用于给变量赋值。
- 简单赋值(
=) - 加等于(
+=):加法和赋值的组合 - 减等于(
-=):减法和赋值的组合 - 乘等于(
*=):乘法和赋值的组合 - 除等于(
/=):除法和赋值的组合 - 模等于(
%=):求余数和赋值的组合 - 位与等于(
&=) - 位或等于(
|=) - 位异或等于(
^=) - 位左移等于(
<<=) - 位右移等于(
>>=) - 位无符号右移等于(
>>>=)
- 简单赋值(
- 条件运算符(三元运算符):基于条件执行操作,是
?:的形式。- 格式:
condition ? value_if_true : value_if_false
- 格式:
- 成员访问运算符:用于访问对象的成员(方法和字段)。
.:访问类或对象的成员
- 数组长度运算符:用于获取数组的长度。
.length
- 类型转换运算符:用于显式类型转换。
- (类型):将括号内的表达式转换为指定的类型
- 实例检查运算符:用于检查对象是否是特定类的实例。
instanceof
- 字符串连接运算符:用于连接字符串。
+:当用于字符串和非字符串类型时,会将非字符串类型转换为字符串,然后进行连接。
i++与++i的区别
i++(后缀递增运算符):
- 行为:
i++首先返回变量i的原始值,然后将i的值增加 1。 - 使用场景:当你需要在表达式中使用变量的原始值,并且之后可以增加变量的值时。
++i(前缀递增运算符):
- 行为:
++i首先将变量i的值增加 1,然后返回新的值。 - 使用场景:当你需要在表达式中使用变量的新值时。
代码示例:
int i = 5;
int a = i++; // a = 5, i = 6
int b = ++i; // i = 7, b = 7
System.out.println("a = " + a + ", i = " + i); // 输出 a = 5, i = 7
System.out.println("b = " + b + ", i = " + i); // 输出 b = 7, i = 7
区别总结:
- 返回值:
i++返回递增前的值,而++i返回递增后的值。 - 表达式求值:在表达式中,
i++先使用原始值,再进行递增;++i先进行递增,再使用新值。
&与&&的区别
- 逻辑与运算符
&:&是一个二元运算符,用于按位与(bitwise AND)操作。当它用于整数或字符等基本数据类型时,它会对两个数值的二进制位进行逐位与操作。- 它也可以用于布尔逻辑运算,但通常不推荐,因为
&在布尔上下文中可能会产生副作用,并且容易与位运算混淆。
- 逻辑与运算符
&&:&&是一个短路与运算符,用于布尔逻辑运算。它用于连接两个布尔表达式,只有当两个操作数都为true时,结果才为true。&&具有短路特性,即如果第一个操作数为false,那么整个表达式的结果已经确定为false,因此第二个操作数不会被求值。这可以防止不必要的计算和潜在的异常。
区别总结:
- 短路与非短路:
&&具有短路特性,而&不具有。 - 使用场景:
&通常用于位运算,&&用于布尔逻辑。 - 副作用:使用
&进行布尔逻辑运算时,如果第一个操作数为false,第二个操作数总是被求值,可能会产生副作用或异常。
|与||的区别
- 逻辑或运算符
||:||是一个二元运算符,用于布尔逻辑运算。- 它用于连接两个布尔表达式,如果至少有一个操作数为
true,则整个表达式的结果为true。 ||具有短路特性,即如果第一个操作数为true,那么整个表达式的结果已经确定为true,因此第二个操作数不会被求值。这可以防止不必要的计算和潜在的异常。
- 按位或运算符
|:|是一个二元运算符,用于按位或(bitwise OR)操作。- 当它用于整数或字符等基本数据类型时,它会对两个数值的二进制位进行逐位或操作。
- 它也可以用于布尔逻辑运算,但通常不推荐,因为
|在布尔上下文中可能会产生副作用,并且容易与位运算混淆。
区别总结:
- 短路与非短路:
||具有短路特性,而|不具有。 - 使用场景:
||用于布尔逻辑运算,|通常用于位运算。 - 副作用:使用
|进行布尔逻辑运算时,如果第一个操作数为true,第二个操作数总是被求值,可能会产生副作用或异常。
>与>>的区别
- 大于运算符
>:>是一个关系运算符,用于比较两个数值或对象。- 它返回一个布尔值(
true或false),表示左侧的值是否大于右侧的值。 - 这个运算符可以用于整数、浮点数、字符以及实现了
Comparable接口的对象。
- 右移位运算符
>>:>>是一个按位运算符,用于将操作数的各个位向右移动指定的位数。- 它是二元运算符,需要两个操作数:一个是要被移位的数值,另一个是指定移动位数的数值。
- 右移位运算符有两种变体:带符号右移(
>>)和无符号右移(>>>)。
区别总结:
- 操作类型:
>用于比较操作,返回布尔值;>>用于按位操作,返回数值。 - 用途:
>用于比较两个值的大小;>>用于按位移动数值的位。 - 结果:
>的结果是一个布尔值;>>的结果是一个数值。

浙公网安备 33010602011771号