String数据类型比较:== 和 equals(Object anObject)的区别

== 使用场景

1、可以应用于基本数据类型的比较

基本数据类型包括:byte、short、int、long、float、double、boolean、char

https://www.runoob.com/java/java-basic-datatypes.html

2、应用于引用数据类型,判断是否指向堆内存的同一地址

引用数据类型:除基本数据类型外的数据类型,eg:String、集合、对象等

equals方法

在Object类中,equals方法的实现,判断是否是同一个对象在堆内存的引用,返回布尔类型

public boolean equals(Object obj) {
        return (this == obj);
    }

使用方式

boolean b = obj1.equals(obj2);

 

String对象示例

/**
     * @description: String 对象相等判断
     * @date: 2020/6/8 10:46
     */
    public static void testEquals() {
        // 对象不同,字符串内容相同
        String str1 = new String("wukong");
        String str2 = new String("wukong");

        System.out.println("str1==str2 :" + (str1 == str2));       // str1==str2 :false
        System.out.println("str1.equals(str2) :" + (str1.equals(str2)));    // str1.equals(str2) :true

        // 对象相同,字符串内容相同
        String str3 = new String("bajie");
        String str4 = str3;

        System.out.println("str3==str4 :" + (str3 == str4));       // str3==str4 :true
        System.out.println("str3.equals(str4) :" + (str3.equals(str4)));    // str3.equals(str4) :true

        // 对象不同,字符串内容不同
        String str5 = new String("doudou");
        String str6 = new String("huanhuan");
        System.out.println("str5==str6 :" + (str5 == str6));       // str5==str6 :false
        System.out.println("str5.equals(str6) :" + (str5.equals(str6)));    // str5.equals(str6) :false

        // 如果String缓冲池内不存在与其指定值相同的String对象,那么此时虚拟机将为此创建新的String对象,并存放在String缓冲池内。
        // 如果String缓冲池内存在与其指定值相同的String对象,那么此时虚拟机将不为此创建新的String对象,而直接返回已存在的String对象的引用。
        String str7 = "dandan";
        String str8 = "dandan";
        System.out.println("str7==str8 :" + (str7 == str8));       // str7==str8 :true
        System.out.println("str7.equals(str8) :" + (str7.equals(str8)));    // str7.equals(str8) :true
    }

 

上一篇:c++语言入门教程--16c++ 中的 String 类


下一篇:C# string 加号与StringBuilder速度测试