今天,我们来了解JAVA中的关系操作符和逻辑运算符。
一、关系操作符
操作符 | 含义 |
---|---|
< | 小于 |
> | 大于 |
<= | 小于或等于 |
>= | 大于或等于 |
== | 等于 |
!= | 不等于 |
小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)、不等于(!=)适用于 int 、double 、float 、long、char 基本类型的运算。
int a = 3;
int b = 2;
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a >= b);
System.out.println(a <= b);
System.out.println(a == b);
System.out.println(a != b);
等于(==)和不等于(!=)可以适用于 boolean 类型的运算。
boolean a = true;
boolean b = false;
System.out.println(a == b);
System.out.println(a != b);
等于(==)和不等于(!=)同样也适用于所有对象的比较,下面我们来看个例子:
Integer n1 = new Integer(24);
Integer n2 = new Integer(24);
System.out.println(n1 == n2);
System.out.println(n1 != n2);
输出的结果是不是和你想象中的不一样呢?明明 n1 和 n2 的值都是24,为何用等于(==)比较结果却为 false 。
因为 == 和 != 比较的是对象的引用,两个不同的对象在栈中的地址肯定是不一样的,故比较结果为 false。
倘若我们就是想比较两个 Integer 对象的值,该怎么办呢?可以使用 equals() 方法进行比较。
Integer n1 = new Integer(24);
Integer n2 = new Integer(24);
System.out.println(n1.equals(n2));
但这里还有一个坑需要注意,equals()默认比较的还是对象的引用,我们可以查看 object 对象的源码:
public boolean equals(Object obj) {
return (this == obj);
}
Integer 对象之所以可以比较值的大小,是因为其重写了自身的 equals() 方法,Integer 对象的源码如下:
private final int value;
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
二、逻辑操作符
操作符 | 含义 |
---|---|
&& | 与(每个条件都必须满足) |
|| | 或 (满足任意一个条件即可) |
! | 非 (将 true 和 false 互相转换) |
逻辑操作符不能用于 String 类型的运算,其他基本类型都可使用。
代码示例:
int a = 5;
int b = 2;
boolean r1 = true;
boolean r2 = false;
System.out.println(a > b && b < a);
System.out.println(a < b || b < a);
System.out.println(!r1);
System.out.println(!r2);
这里提一个“短路”的概念,比如下面这段代码的 && 运算由多个条件组成,当第一个条件不成立时,就不会继续执行后续的逻辑运算表达式(后续的运算毫无意义,会造成资源浪费),从而获得性能的提升。
int a = 5;
int b = 2;
System.out.println(a < b && b < a && a > 0 && b > 0);
本次分享至此结束,希望本文对你有所帮助,若能点亮下方的点赞按钮,在下感激不尽,谢谢您的【精神支持】。
若有任何疑问,也欢迎与我交流,若存在不足之处,也欢迎各位指正!