标签:不同 dha code 编码方式 基于 实现 常量 对象类型 基本
001、“a==b”和”a.equals(b)”有什么区别?a.hashCode() 有什么用?与a.equals(b) 有什么关系?
object的默认equals实现: a.equals(b)和a==b有一样的结果,即默认实现中认为只有a和b指向同一个对象时才返回true。其中,String重写了equals,认为只要String的字符系列相同就可以返回true。
如果 a 和 b 都是对象,则 a==b 是比较两个对象的引用,只有当 a 和 b 指向的是堆中的同一个对象才会返回 true,而 a.equals(b) 是进行逻辑比较,所以通常需要重写该方法来提供逻辑一致性的比较。例如,String 类重写 equals() 方法,所以可以用于两个不同对象,但是包含的字母相同的比较。
hashCode() 方法是相应对象整型的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。根据 Java规范,两个使用 equal() 方法来 判断相等的对象,必须具有相同的 hash code。
注:
① hash code是一种编码方式,在Java中,每个对象都会有一个hashcode,Java可以通过这个hashcode来识别一个对象。
② equlas大多用来做字符串比较,要判断基本数据类型或者对象类型,需要使用==
002、String s=new String(“xyz”);创建了几个字符串对象?
第一次运行:两个:在String常量池中,如果不存在"xyz"对象,则会创建"xyz"对象和new String("xyz")对象。
Strng a = "xyz";
String s = new String("xyz");
第二次运行: 一个:在String常量池中,如果已经存在"xyz"对象,则不会再创建"xyz"对象,仅创建new String("xyz")对象;
标签:不同 dha code 编码方式 基于 实现 常量 对象类型 基本
原文地址:http://www.cnblogs.com/hyou/p/7725379.html