目录
Java中的运算符用于执行各种操作,包括算术运算、逻辑运算、赋值操作等。
以下是Java中一些主要的运算符分类:
一、算术运算符
(Arithmetic Operators)
算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法和取模(取余)等。
-
加法(+) :用于加法运算。
-
减法(-) :用于减法运算。
-
乘法(*):用于乘法运算。
-
除法(/) :用于除法运算。当两边都是整型时,进行整型运算,结果会向下取整。
-
取模(%) :返回除法的余数。两个数必须是整数。
-
自增(++) :将变量值增加1。前缀形式(如
++a
)先自增再使用,后缀形式(如a++
)先使用再自增。 -
自减(--) :将变量值减少1。前缀形式(如
--a
)先自减再使用,后缀形式(如a--
)先使用再自减。
二、赋值运算符
(Assignment Operators)
赋值运算符用于给变量或常量赋值。
-
简单赋值(=) :将右侧的值赋给左侧的变量。
-
扩展赋值运算符:如 +=、-=、*=、/=、%= 等,先进行相应的算术运算,然后将结果赋值给左侧的变量。如 a+=1 等同于 a=a+1。
三、关系运算符
(Relational Operators)
关系运算符,也叫比较运算符(Comparison Operators)用于比较两个值的关系,如等于、大于、小于等,返回布尔值(true或false),用于条件判断。
-
等于(==) :如果左右两侧操作数相等,则返回true,否则返回false。
-
不等于(!=) :如果左右两侧操作数不相等,则返回true,否则返回false。
-
大于(>) :如果左侧操作数大于右侧操作数,则返回true,否则返回false。
-
小于(<) :如果左侧操作数小于右侧操作数,则返回true,否则返回false。
-
大于等于(>=) :如果左侧操作数大于或等于右侧操作数,则返回true,否则返回false。
-
小于等于(<=) :如果左侧操作数小于或等于右侧操作数,则返回true,否则返回false。
四、逻辑运算符
(Logical Operators)
Java中的逻辑运算符包括&
(逻辑与)、|
(逻辑或)、!(逻辑非) 以及短路逻辑运算符&&
(短路与)和||
(短路或)。这些运算符用于连接布尔类型的表达式,并根据操作数的值返回布尔结果。其中,短路逻辑运算符具有“短路”特性,即当表达式的值已经可以确定时,不会继续计算后续部分,从而提高效率并避免不必要的计算。
-
逻辑与(&) :同时评估两个操作数,无论其结果如何都会执行完整计算。例如,在表达式
a & b
中,即使a
为false
,仍然会计算b
的值。 -
逻辑或(|) :同时评估两个操作数,无论其结果如何都会执行完整计算。例如,在表达式
a | b
中,即使a
为true
,仍然会计算b
的值。 -
逻辑非(!) :对布尔表达式取反。
-
短路与(&&) :如果第一个操作数为
false
,则整个表达式的结果必定为false
,因此不会计算第二个操作数。例如,在表达式a && b
中,如果a
为false
,则直接返回false
,而不会评估b
。 -
短路或(||) :如果第一个操作数为
true
,则整个表达式的结果必定为true
,因此不会计算第二个操作数。例如,在表达式a || b
中,如果a
为true
,则直接返回true
,而不会评估b
。
五、位运算符
(Bitwise Operators)
位运算符按二进制位进行运算。
-
按位与(&) :两个对应位都为1时结果为1。
-
按位或(|) :两个对应位有1时结果为1。
-
按位异或(^) :两个对应位不同时结果为1。
-
按位取反(~) :二进制的0变为1,1变为0。
-
左移(<<) :最左侧位丢弃,最右侧补0。
-
右移(>>) :最左侧位补符号位,最右侧补0。
-
无符号右移(>>>) :不管符号位,左边统一补0。
六、条件运算符
(Conditional Operator)
也称为三元运算符,条件运算符根据条件选择执行表达式1或2。
语法:条件 ? 表达式1 : 表达式2 (条件成立执行表达式1,否则执行表达式2)
public class Demo {
public static void main(String[] args) {
int a = 10;
int b = 20;
int max = (a > b) ? a : b; // 条件不成立,执行表达式2
System.out.println(max); // 输出:20
}
}
七、其他运算符
-
字符串连接符(+) :用于连接字符串。
-
instanceof:用于判断对象是否为某个类的实例。
public class Demo {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "World";
String result = str1 + " " + str2;
System.out.println(result); // 输出:Hello World
if (result instanceof String) { // result是一个字符串
System.out.println("result is a String"); // 输出:result is a String
}
}
}