Java面试关键点:面向对象、String与Integer的区别

需积分: 0 0 下载量 129 浏览量 更新于2024-07-28 收藏 482KB DOC 举报
"Java面试题" 在Java面试中,经常会遇到一些核心概念的考察,以下是一些关键知识点的详细解释: 1. 面向对象的特征: - 抽象:抽象是将复杂的问题简化,关注主要特征,忽略不重要的细节。它分为过程抽象(方法)和数据抽象(类)。例如,设计一个汽车类时,我们关注其驾驶、加速等核心功能,而不必关心引擎的每一个零件。 - 继承:继承允许一个类(子类)从另一个类(父类)获取属性和方法,从而实现代码重用。这有助于构建类的层次结构,子类可以扩展或覆盖父类的方法,以满足特定需求。 - 封装:封装是对象内部状态的保护,防止外部直接访问。通过接口(方法)来控制对数据的访问,提高了代码的安全性和可维护性。例如,一个银行账户类,外界只能通过存取款方法来操作余额,而不能直接修改。 - 多态性:多态性允许不同的对象对相同的消息做出不同的响应。这在处理集合时特别有用,如List中的add()方法,可以接受各种类型的对象。多态性分为编译时多态(参数化多态,如方法重载)和运行时多态(方法重写)。 2. String不是基本数据类型: - Java的基本数据类型包括byte、int、char、long、float、double、boolean和short。String是一个对象,属于引用类型,它不是基本类型。虽然在使用上String常量池的优化使得它看起来像基本类型,但其本质是对象,需要通过new关键字创建或使用字符串字面量。 - 为了性能考虑,如果需要频繁修改字符串,应使用StringBuilder或StringBuffer类,而不是直接操作String,因为String是不可变的。 3. int与Integer的区别: - int是Java的原始数据类型,直接存储数值,占用32位,而Integer是其对应的封装类,提供了额外的方法和功能,如比较、转换等。 - 原始类型存储在栈中,速度快,但没有对象方法。引用类型存储在堆中,可以作为对象进行操作,但访问速度较慢。 - 当作为类的实例变量时,Integer默认值为null,int默认值为0。 - 在某些情况下,Java会自动将int转换为Integer,这个过程叫做自动装箱,反之为拆箱。 4. String与StringBuffer的区别: - String是不可变的,每次修改都会创建新的对象,而StringBuffer或StringBuilder(线程安全与非线程安全)允许在原对象上进行修改,减少了对象创建的开销。 - 在多线程环境中,如果需要拼接字符串,推荐使用StringBuffer,因为它提供了同步机制,避免了并发修改引发的问题。而在单线程环境中,StringBuilder更高效。 5. 枚举(enum): - Java中的枚举是一种特殊的类,用于表示一组固定的常量,如星期天、月份等。枚举提供了类型安全,防止了错误的枚举值被赋值。 6. 接口(interface): - 接口是Java中定义行为规范的一种方式,它包含抽象方法和常量。一个类可以实现多个接口,但只能继承一个类,体现了Java的多继承特性。 7. 内存管理: - Java使用垃圾收集器(Garbage Collector)自动回收不再使用的对象所占用的内存,理解内存分配和垃圾回收策略对于解决内存泄漏问题至关重要。 8. 泛型(Generics): - 泛型是Java SE 5.0引入的新特性,用于在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。 9. 异常处理(Exception Handling): - Java通过try-catch-finally语句块处理异常,异常是程序运行时的错误,可以捕获并妥善处理,防止程序崩溃。 10. 并发编程(Concurrency): - Java提供了丰富的并发工具类,如ExecutorService、Semaphore、CyclicBarrier等,以及synchronized关键字和volatile变量来处理多线程问题。 以上这些知识点在Java面试中经常出现,掌握它们能帮助候选人更好地理解和解答面试问题。