Java面试必备:equals()与==的区别与陷阱

需积分: 9 1 下载量 28 浏览量 更新于2024-07-30 收藏 452KB PDF 举报
“这是一份关于Java面试的资料,包含了50个常见的面试问题,主要涉及易混淆的概念和易出错的题目,旨在帮助面试者顺利通过面试。” 在Java面试中,经常会遇到关于基础概念和语言特性的考题,以下是两道典型的问题及其解析: 面试题1 关于equals()和==的选择题 此题考察了Java中`equals()`方法和`==`操作符的区别。`equals()`是Object类的方法,用于判断两个对象的内容是否相等。如果子类没有重写`equals()`,默认行为与`==`相同,即比较对象的引用。然而,推荐的做法是重写`equals()`以比较对象的属性内容。`==`则主要用于比较基本类型的值或者引用类型的地址。在给定的题目中,选项A和B比较的是对象的引用,而a和b是两个不同的对象实例,因此它们的引用不相等;选项B中,s是基本类型long的引用,不能与对象a直接比较;选项C中,c和b指向同一个对象实例,所以`c==b`返回true;选项D中,a和s的类型不同,不能直接调用`equals()`。因此,正确答案是C。 面试题2 int和Integer的区别 在Java中,`int`是原始数据类型(也称为内置类型),它直接存储数值。而`Integer`是`int`的封装类,属于引用类型。原始类型在内存中直接存储值,而封装类的对象则存储在堆中,并且可以具有额外的方法和特性,如自动装箱和拆箱。例如,当你将一个`int`值赋给`Integer`变量时,会自动进行装箱操作;反之,从`Integer`到`int`的转换则是拆箱。封装类的存在使得可以利用面向对象的特性,如方法调用,而原始类型则不具备这些功能。此外,对于集合框架,只能包含对象,所以使用封装类可以方便地将原始类型放入集合中。 这两个面试题揭示了Java基础知识的重要性,包括对象和基本类型的比较、`equals()`和`==`的使用以及封装类的作用。在准备Java面试时,深入理解这些基本概念是非常关键的。面试者应熟练掌握这些知识点,以确保在面试中能够准确、自信地回答类似的问题。