android "=="、equals()、hashcode()

来源:互联网 发布:pscc2018破解软件 编辑:程序博客网 时间:2024/06/10 21:09

1.==(引用类型我的理解比较的是一个对象存储的地址)
如果比较对象是基本类型变量,只要变量值相同,返回true;
如果比较对象是引用类型变量,只有指向同一个对象才返回true,不可比较没有父子关系的俩个对象,用“==”比较俩个 String 对象永远为false,因为指向的是俩个地址

String a = new String(“abc”);
String b = new String(“abc”);
String c = “abc”;
String d = “abc”;
System.out.println(“1——>” + (a == b));
System.out.println(“2——>” + (a.equals(b)));
System.out.println(“3——>” + (c == d));
System.out.println(“4——>” + (c.equals(d)));
System.out.println(“a.hashCode()——>” + a.hashCode());
System.out.println(“b.hashCode()——>” + b.hashCode());
System.out.println(“c.hashCode()——>” + c.hashCode());
System.out.println(“d.hashCode()——>” + d.hashCode());

这里写图片描述
2.equals()(比较的是引用类型变量的内容—-value)
系统定义:
public boolean equals(Object obj) {
return (this == obj);
}
但是对于String类源码中重写的equals()
(1)String类中的equals首先比较地址,如果是同一个对象的引用,可知对象相等,返回true。

(2)若果不是同一个对象,equals方法挨个比较两个字符串对象内的字符,只有完全相等才返回true,否则返回false。

3.hashcode()(引用类型变量内容的存储地址—-key)
hashCode是根类Obeject中的方法。
  默认情况下,Object中的hashCode() 返回对象的32位jvm内存地址。也就是说如果对象不重写该方法,则返回相应对象的32为JVM内存地址。

参考博文
http://www.cnblogs.com/xudong-bupt/p/3960177.html