1、比较的方式

==进行的是数值或地址比较。

equals是我们自己在类中定义的方法,自己去构建判断逻辑。

2、代码解释

2.1 ==

在==中,八大基础类型除boolean外,之间都进行的是数值间的比较。

在对象之间,比较的是两个对象指向地址是否一致。

案例代码

        System.out.println("------------------------------八大基础类型-------------------");
        System.out.println("1 == 1为" + ( 1 == 1 ));
        System.out.println("1 == 2为" + ( 1 == 2 ));
        System.out.println("1.0 == 1为" + ( 1.0 == 1 ));
        System.out.println("1.0 == 1.0为" + ( 1.0 == 1.0 ));
        System.out.println("1.0 == 1.1为" + ( 1.0 == 1.1 ));
        System.out.println("1.0f == 1为" + ( 1.0f == 1 ));
        System.out.println("1.0f == 1.0为" + ( 1.0f == 1.0 ));
        System.out.println("97 == a为" + ( 97 == 'a' ));
        System.out.println("false == true为" + ( false == true ));

        System.out.println("--------------------------------对象-----------------------");
        Object object01 = new Object();
        Object object02 = new Object();
        System.out.println("object01 == object02为" + ( object01 == object02 ) );

运行结果

2.2 equals

下方是在Object中的equals方法,Object又是所有java类的父类,所以在未重写equals方法时,equals的作用与==一致。

重写后,根据重写的判断逻辑来。

下方是String类重写的equals方法

案例代码

        String string01 = new String("zjx");
        String string02 = new String("zjx");
        String string03 = "zjx";
        System.out.println("string01.equals(string02)为" + ( string01.equals(string02) ) );
        System.out.println("string01.equals(string03)为" + ( string01.equals(string03)));

        Object object01 = new Object();
        Object object02 = new Object();
        System.out.println("object01.equals(object02)为" + ( object01.equals(object02) ) );

运行结果

3、使用细节

八大基础类型不可以和类对象用==比较,但可以与其包装类比较,因为有自动装箱和自动拆箱机制。

同样,equals也只能在对象间使用。

4、案例代码

public class Example05 {

    public static void main(String[] args) {

//        ==与equals之间的区别
        System.out.println("----------------------------------==-------------------");
        testDengHao();
        System.out.println("-------------------------------equals-------------------");
        testEquals();

    }

    public static void testDengHao(){

        System.out.println("------------------------------八大基础类型-------------------");
        System.out.println("1 == 1为" + ( 1 == 1 ));
        System.out.println("1 == 2为" + ( 1 == 2 ));
        System.out.println("1.0 == 1为" + ( 1.0 == 1 ));
        System.out.println("1.0 == 1.0为" + ( 1.0 == 1.0 ));
        System.out.println("1.0 == 1.1为" + ( 1.0 == 1.1 ));
        System.out.println("1.0f == 1为" + ( 1.0f == 1 ));
        System.out.println("1.0f == 1.0为" + ( 1.0f == 1.0 ));
        System.out.println("97 == a为" + ( 97 == 'a' ));
        System.out.println("false == true为" + ( false == true ));

        System.out.println("--------------------------------对象-----------------------");
        Object object01 = new Object();
        Object object02 = new Object();
        System.out.println("object01 == object02为" + ( object01 == object02 ) );

    }

    public static void testEquals(){

        String string01 = new String("zjx");
        String string02 = new String("zjx");
        String string03 = "zjx";
        System.out.println("string01.equals(string02)为" + ( string01.equals(string02) ) );
        System.out.println("string01.equals(string03)为" + ( string01.equals(string03)));

        Object object01 = new Object();
        Object object02 = new Object();
        System.out.println("object01.equals(object02)为" + ( object01.equals(object02) ) );

    }

}

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐