== 使用场景
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 }