Java面试基础知识
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同。
Java对于eqauls方法和hashCode方法是这样规定的 :
(1)如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;
(2)如果两个对象的hashCode相同,它们并不一定相同。简单记忆:若x=y,则H(x)=H(y). 若H(x)=H(y),则x不一定等于y。(哈希碰撞的存在)
- ==和equals方法
==:比较的是两个对象的地址是否相同(基本数据类型和引用数据类型)
equals:object类中的方法
注意
当equals方法被覆盖时,比较的是两个对象的内容是否相同
当equals方法没有被覆盖时,效果和==一样
- String 是最基本的数据类型吗
不是。Java中的基本数据类型只有8个:
byte、short、int、long、float、double、char、boolean;
除了基本类型(primitive type)和枚举类型(enumeration type)
剩下的都是引用类型(reference type)。
- short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
对于short s1 = 1; s1 = s1 + 1