黑马程序员技术交流社区
标题:
equals 小问题
[打印本页]
作者:
王秋霞0812
时间:
2014-1-22 12:01
标题:
equals 小问题
equals 与 ==有何不同
作者:
透过生活
时间:
2014-1-22 12:22
==只针对变量的值;equals只针对对象的内容。
引用类型的变量值是所指对象的内存地址
作者:
kira
时间:
2014-1-22 12:24
== 比较地址值 equals方法 比较内容{:soso_e100:}
作者:
姜胜凯
时间:
2014-1-22 12:30
==是比较变量的引用内存地址。
equals是比较对象。忽略了内存地址的因素~~
作者:
dapeng111
时间:
2014-1-22 12:45
本帖最后由 dapeng111 于 2014-1-22 12:48 编辑
来段代码:
public class CompareEquals {
public static void main(String[] args) {
int x = 3; //值类型
int y = 3;
int[] arr1 = new int[3]; //创建引用类型的数组
int[] arr2 = arr1;
System.out.println(x == y); //比较两个值是否相等。结果true
/*
* System.out.println(x.equals(y));
* equals是Object类中的方法,内部用的也是==来比较两个对象的引用地址是否相等。不能用来比较两个值类型是否相等,会报语法错误。
*/
System.out.println(arr1 == arr1);//比较两个引用类型是否指向同一对象。结果true
System.out.println(arr1.equals(arr2));
/*
* 和arr1 == arr2实际一样。比较两个引用类型是否指向同一对象。结果true。如果进行一些特殊的比较,可以重写equsls方法
*/
}
}
复制代码
作者:
廉伟杰
时间:
2014-1-22 13:15
boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”。 equlas默认的比较的是 堆里地址,和 == 一样,都是比较地址
一般情况下子类根据自身情况重新覆写该方法,如String 覆写了 Object的equals方法:只比较字符的序列是否相同(这类需要看源代码)
作者:
jiangyutc
时间:
2014-1-22 13:17
equals其实是和==一样的
之所以出现是equals是因为有些内需要比较的是对象的内容如:String
这些内都覆写了equals方法
equals是继承于Object类
作者:
↑↓ME→←
时间:
2014-1-22 13:41
对象之间==比较的是地址,equals如果重写了Object的equals方法比较的是他们的值,没有重写比较的是他们的地址!
Integer i5 = new Integer(12);
Integer i6 = new Integer(12);
System.out.println(i5 == i6);//false即使这样也不一样
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2