Java基础:比较运算符

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

一、概述

在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));
        }
    }
}

执行结果:

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

二、使用 == 和 !=

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

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

值相同、引用也相同:

值相同,但是引用不同:

我们直接上代码:

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));
    }
}

执行结果:

代码解释:

  • 使用 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方法:

代码解释:

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

猜你喜欢

转载自blog.csdn.net/weixin_43025343/article/details/132215457