==的主要特点
- 当基本类型对象用==进行比较时,比较的是对象的值是否一致。
- 当引用类型对象用==进行比较时,比较的是对象的地址是否一致。
int a=1; int b=1; String str="abc"; String str1="abc"; String str2= new String("abc"); System.out.println(a==b); System.out.println(str==str1); System.out.println(str==str2);结果:
true
true
false
由于a和b都是int类型的变量所以==比较的是数值的大小;而String是引用类型==比较的是地址,str与str1的地址为同一个,str与str2所指向的对象地址不同。
equals的主要特点
- 比较的是两个字符串里面的内容是否相同
String str="abc"; String str1="abc"; String str2= new String("abc"); System.out.println(str.equals(str1)); System.out.println(str.equals(str2)); int a=123; String b="123"; System.out.println(b.equals(a));结果:
true
true
false
首先我们看一看equals方法的定义public boolean equals(Object anObject) {//anObject为上转型对象 if (this == anObject) {//首先比较地址是否相同,若相同则内容必定相同 return true; } if (anObject instanceof String) {//判断anObject是否是String类型,若不是则必定不同 String aString = (String)anObject;//转为下转型 if (!COMPACT_STRINGS || this.coder == aString.coder) { return StringLatin1.equals(value, aString.value);//对两个字符串中的每一个字符进行比较 } } return false; }所以由于str与str1的地址一致,所以返回ture;str与str2虽然地址不同但是内容一致所以也返回ture;而由于a为int类型,b为字符串所以不符合第二类
本文详细解析了Java中==与equals方法的使用区别。==用于比较基本类型时,比较的是值;用于引用类型时,比较的是内存地址。equals方法主要用于比较引用类型对象的内容是否相同,如String类型的对象。文章通过实例演示了两者在不同情况下的应用。

316

被折叠的 条评论
为什么被折叠?



