java ==和equals 的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java ==和equals 的区别相关的知识,希望对你有一定的参考价值。
以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为好
以上是关于java ==和equals 的区别的主要内容,如果未能解决你的问题,请参考以下文章