"这是一份包含了100道Java面试题的集合,主要涵盖Java基础知识,如面向对象的特征,以及String、int与Integer的区别等核心概念。这份资料根据作者的面试经验整理,对于准备Java面试的人员具有较高参考价值。"
在Java编程中,面向对象的四大特征——抽象、继承、封装和多态性,是理解和应用Java语言的基础。
1. 抽象:抽象是将复杂问题简化的过程,关注主要特性,忽略非关键细节。在Java中,可以通过创建抽象类或接口来实现抽象。抽象类用`abstract`关键字定义,可以包含抽象方法,而接口则完全由抽象方法组成,是实现多继承的一种方式。
2. 继承:继承允许一个类(子类)从另一个类(父类)继承属性和行为。在Java中,类之间的继承关系用`extends`关键字表示。继承提高了代码的复用性,子类可以扩展或覆盖父类的方法,以适应特定需求。
3. 封装:封装是隐藏对象的属性和实现细节,仅对外提供公共访问方式。在Java中,通过访问修饰符(public, private, protected)实现封装,确保数据安全,减少错误。
4. 多态性:多态性意味着一个接口可以有多种不同的实现。Java中的多态性主要体现在方法重载(overloading)和方法重写(overriding)上。方法重载是在同一类中,方法名相同但参数列表不同的方法;方法重写发生在子类中,子类可以重新定义父类的非私有方法,以实现不同的功能。
另外,题目中还涉及到了Java的基本数据类型和封装类的区别:
- 基本数据类型(如int)是Java的内置类型,它们直接存储值,占用固定大小的内存,如int占4个字节。它们不是对象,无法调用方法。
- 封装类(如Integer)是Java为每个基本类型提供的类,它们具有对象的所有特性,可以调用方法。Integer是int的封装类,提供了许多实用方法,如比较、转换等。同时,Integer在内存管理上进行了优化,如在一定范围内会使用对象池。
在面试中,经常会被问到`String`是否是基本数据类型的问题。实际上,`String`是Java的一个类,不是基本数据类型,但它在使用上与基本类型相似。由于字符串在Java中经常被使用,所以Java为它提供了特殊的处理。相比`String`,如果需要频繁修改字符串内容,应使用`StringBuilder`或`StringBuffer`,因为它们支持动态增长,性能优于不可变的`String`。
最后,`int`与`Integer`的区别在于,`int`是原始类型,而`Integer`是其封装类。原始类型直接存储值,而封装类是对象,需要额外的内存开销。在不需要对象特性的场景下,使用原始类型更加高效。当涉及到集合操作或需要调用方法时,就需要使用封装类。
这些面试题的解答涵盖了Java语言的核心概念,对于理解Java程序设计原理至关重要,是准备Java面试不可或缺的知识点。