以String类型举例
情景1 当声明2个变量 a,b比较值
String a = "test"; String b = "test"; boolean end = false; if(a==b) { end = true; } System.out.println(end?"两个字符串相等":"mmp,不等");
结果 是显示相等 ,因为 ==是判断引用是否指向堆内存的同一块地址。 "test"是一个对象被a,b变量引用,所有啊a,b是相同指向,所有==判断,这个时候equals也相等
情景2 让2个变量 持有不同引用
String c = new String("test1"); String d = new String("test1"); end = false; if(c==d) { end = true; } System.out.println(end?"两个字符串相等":"mmp,不等");
结果 显示不等 ,结论和上一条一致
情景3 解决情景2的问题
String g = new String("test1"); String h = new String("test1"); end = false; if(g.equals(h)) { end = true; } System.out.println(end?"两个字符串相等":"mmp,不等");
结果 显示相等 ,equals 在处理不同引用对象 正确比较堆中内容的方法
结论,关心内容相等应该使用equals为好
时间: 2024-10-22 13:14:54