Java基础:比较运算符

74 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情

上一篇文章介绍的操作运算符,本文介绍比较运算符。

一、概述

在Java中一般有以下比较运算符:

| 操作符 | 示例 | 解释 |

| :----: | :------: | :----------------------------------------------: |

| > | x > y | 如果 x 大于 y,则返回 true。 |

| >= | x >= y | 如果 x 大于或等于 y,则返回 true。 |

| < | x < y | 如果 x 小于 y,则返回 true。 |

| <= | x <= y | 如果 x 小于或等于 y,则返回 true。 |

| == | x == y | 如果 x 等于 y,则返回 true。 |

| != | x != y | 如果 x 和 y 不相等,则返回 true。 |

| 实例 | y的x实例 | 如果 x 与 y 属于同一类或 y 的子类,则返回 true。 |

代码示例:


package com.test.javaroads.operator;

/**

* @author: javaroads

* @date: 2022/12/1 16:44

* @description:

*/

public class Four {

public static void main(String[] args) {

int a = 100;

double b = 100.001D;

if (b > a) {

System.out.println("b > a 为" + (b > a));

}

if (b >= a) {

System.out.println("b >= a 为" + (b >= a));

}

if (a < b) {

System.out.println("a < b 为" + (a < b));

}

if (a <= b) {

System.out.println("a <= b 为" + (a <= b));

}

}

}

执行结果:

![](img-wljslmz-1259086031.cos.ap-nanjing.myqcloud.com/picgo/20221…

至于大小的比较,相信大家都知道结果,这里就不做解释了。

二、使用 == 和 !=

使用==和!=要注意:Java数据类型大致分为两种类型:基本类型引用类型。在基本类型中使用==和!=是可以的,但在引用类型上使用时要小心。

==!=在引用类型上使用时需要注意:你不是在比较对象持有的值,而是对象引用的referrer是否相同,如果要比较对象持有的值,可以使用equals方法。

值相同、引用也相同:

![](img-wljslmz-1259086031.cos.ap-nanjing.myqcloud.com/picgo/20221…

值相同,但是引用不同:

![](img-wljslmz-1259086031.cos.ap-nanjing.myqcloud.com/picgo/20221…

我们直接上代码:


package com.test.javaroads.operator;

/**

* @author: javaroads

* @date: 2022/12/1 17:14

* @description:

*/

public class Five {

public static void main(String[] args) {

StringBuffer x = new StringBuffer("xyz");

StringBuffer y = x;

System.out.println("x和y比较为" + (x == y));

StringBuffer z = new StringBuffer("xyz");

StringBuffer w = new StringBuffer("xyz");

System.out.println("z和w比较为" + (z == w));

}

}

执行结果:

![](img-wljslmz-1259086031.cos.ap-nanjing.myqcloud.com/picgo/20221…

代码解释:

  • 使用 new 运算符生成对象 x。

  • 使用赋值运算符=将对象 x 复制到对象 y ,在这种情况下,只是将x的引用信息复制到y中,而不是在内存区域中重新分配y的区域。

  • 将 x 和 y 与==运算符进行比较,返回 true 因为引用地址相同。

  • 使用 new 运算符生成对象 z。

  • 使用 new 运算符生成对象 w。

  • 将 z 和 w 与==运算符进行比较,返回 false 因为值 abc 相同但有不同的 引用地址。

三、instanceof使用

instanceof是一个运算符,用于测试左操作数是否与右操作数属于同一类或子类,左操作数可以是任何对象引用表达式(变量等),右操作数可以是类、接口或数组类型。

我们通过代码演示一下:

父类:


package com.test.javaroads.operator;

/**

* @author: javaroads

* @date: 2022/12/1 17:38

* @description:

*/

public class Six {

public static void main(String[] args) {

SixSub sub = new SixSub();

if (sub instanceof Six) {

System.out.println("sub属于Six类");

} else {

System.out.println("sub不属于Six类");

}

}

}

子类:


package com.test.javaroads.operator;

/**

* @author: javaroads

* @date: 2022/12/1 17:38

* @description:

*/

public class SixSub extends Six {

}

执行父类的main方法:

![](img-wljslmz-1259086031.cos.ap-nanjing.myqcloud.com/picgo/20221…

代码解释:

  • 声明并生成一个对象变量 sub,其值为 SixSub 类。

  • 使用运算符检查对象变量 sub 是同一个类还是 Six 类的子类instanceof。返回 true,因为 sub 拥有的数据类型 SixSub 类是 Six 类的子类。