Java面试必备:面向对象与字符串深究

需积分: 10 1 下载量 24 浏览量 更新于2024-07-09 收藏 7.44MB PDF 举报
"Java面试基础题秘籍.pdf" 这是一本针对Java面试准备的资料,涵盖了Java编程语言的基础知识和常见面试题。以下是其中涉及的一些核心知识点: **第一章 面向对象** 1. 面向对象的三大特性包括封装、继承和多态。封装是将数据和操作数据的方法绑定在一起,形成一个独立的对象。继承允许子类继承父类的属性和方法,减少代码重复。多态则是指同一种行为在不同对象上有不同的表现形式。 2. `this` 关键字代表当前对象的引用,而 `super` 用于访问父类的成员,包括字段和方法。 3. 权限修饰符有 public、protected、default(包级私有) 和 private,它们决定了类的成员对外的可见性和可访问性。 4. Java中的多态是指一个类型的引用可以指向其子类型实例,从而调用子类特有的方法或属性。实现多态的关键是方法的重写(override)和向上转型(upcasting)。 5. 静态属性和静态方法可以被继承,但静态方法不能被重写,因为它们是属于类的,而不是对象的。 **第二章 字符串String、数组及数据类型** 1. Java的8大基本类型包括 byte、short、int、long、float、double、char 和 boolean,它们各自占用不同的内存空间,如 int 占4个字节,char 占2个字节。 2. 浮点数在计算机中通常以二进制浮点数表示,可能会导致精度损失,这是由于二进制无法精确表示所有十进制小数。 3. 基本数据类型与封装类型的主要区别在于,基本类型是原始数据,而封装类型是Java为每个基本类型提供的类包装,提供了额外的功能,如自动装箱和拆箱。 4. 拆箱是将封装类型转换为基本类型,装箱是将基本类型转换为封装类型。例如,Integer num = 10; 这里发生了自动装箱,而 int i = num; 发生了拆箱。 5. 多维数组在内存中是连续存储的,每个一维数组的地址构成二维数组的元素。 6. 数组的二次封装可能包括创建一个类,该类包含一个数组作为成员,并提供对数组的操作方法,如添加、删除、查找等。 7. String 类的不可变性意味着一旦创建,其内容就不能更改。String 对象在字符串常量池中存储,可以通过字符串连接等方式创建,但每次修改都会生成新的对象。 8. String、StringBuilder 和 StringBuffer 都用于处理字符串,但 String 是不可变的,而 StringBuilder 和 StringBuffer 可变,线程安全级别不同(StringBuilder 不线程安全,StringBuffer 线程安全)。 9. 字符串拼接有多种方式,如使用 "+" 运算符、StringBuilder.append() 或 String.format(),性能和线程安全性需根据具体场景选择。 10. "Stringa="a"+"b"+"c";" 在内存中至少创建了3个对象,因为每次加号操作都会生成一个新的字符串对象。 **第三章 Object、序列化、内部类、异常和final** 1. Object 类是所有Java类的父类,提供了 equals()、hashCode()、toString() 和 clone() 等通用方法。 2. 序列化是将对象转换为字节流的过程,方便存储和网络传输。Serializable 接口是标记接口,实现它的类可以被序列化。transient 关键字用于标记字段不参与序列化。Parcelable 是 Android 平台上的序列化接口。 3. 内部类分为成员内部类、局部内部类、匿名内部类和静态内部类,它们各有特点和使用场景。 4. Java 异常处理是通过 try-catch-finally 语句块来实现的,异常类位于异常体系中,可以自定义异常类。 5. `final` 关键字可以修饰变量、方法和类,表示不可改变、不可重写或不可继承。 6. `finally` 语句块确保代码在任何情况下都会被执行,即使在 try 或 catch 中有 return 语句。 7. `finalize()` 方法在对象被垃圾回收之前调用,用于清理资源,但不保证一定会执行。 **第四章 反射、注解和依赖注入** 1. 反射是Java的一种强大的动态类型特性,允许程序在运行时检查类、接口、字段和方法的信息,并能动态地创建和调用对象。 2. 注解是一种元数据,可以提供编译时和运行时的信息,用于代码的解释和处理。注解可以通过反射解析,也可以由编译器或构建工具处理。 3. 注解的工作机制包括编译时处理(APT)、运行时处理(反射)以及IDE支持。 4. 自定义注解可以通过 @Retention 和 @Target 定义注解的保留策略和可应用的目标。 5. 反射效率较低,因为它涉及到类加载、方法调用等,但在某些场景下是必要的,如框架、插件系统等。优化方法包括缓存反射对象、避免频繁反射操作等。 6. 控制反转(IoC)是一种设计模式,它将对象的创建和管理交给容器,降低了对象间的耦合度。依赖注入(DI)是IoC的一种实现方式,通过容器将依赖关系传递给对象。 这些知识点涵盖了Java编程的基础到进阶,对于准备Java面试和深入理解Java技术体系非常有帮助。