本篇文章只汇总了我个人做Java笔试题时易错的题目,包括题目描述和相关知识点。
1.关于equals和hashCode描述正确的是 (ABC)
A.两个obj,如果equals()相等,hashCode()一定相等(符合代码规范的情况下)
B.两个obj,如果hashCode()相等,equals()不一定相等
C.两个不同的obj, hashCode()可能相等
D.其他都不对
解析:java中判断变量相等的方法有两个,“==”和equals(),其中,如果比较的是对象,则“==”判断的是两个对象的地址是否相等,如果比较的是基本类型的变量,则“==”判断变量的值是否相等; 而对于equals(),如果对象的类没有覆盖equals()方法,相当于“==”比较,如果类覆盖了equals()方法,则通过equals()方法判断对象是否相等。
// equals源码
public boolean equals(Object obj) {
return (this == obj);
}
hashcode()的作用是获取对象的哈希值,也就是散列码,hashcode()只有在散列表中才有用。
在散列表中,如果两个对象相等,那他们的hashcode()一定相等,如果两个对象的hashcode()相等,这两个对象不一定相等。
2.以下哪个不是Collection的子接口? (D)
A.List
B.Set
C.SortedSet
D.Map
解析:Collection的子接口主要有List、Set、SortedSet、Queue,Map没有继承Collection的接口