2019年Java面试关键知识点解析

需积分: 50 19 下载量 43 浏览量 更新于2024-07-17 收藏 10.74MB PDF 举报
"黑马程序员Java面试宝典2019最新版,包含了丰富的Java基础知识和面试常见问题,旨在帮助Java开发者准备面试,提升技术水平。" 本文档主要涵盖Java语言的基础知识和面试常问问题,包括面向对象特性、Java SE语法、类与对象的概念以及一些特殊操作。以下是对部分内容的详细解释: 1. **面向对象特性**:面向对象编程的四大特性是封装、继承、多态和抽象。封装是将数据和操作数据的方法捆绑在一起,保护数据不被随意访问。继承允许子类继承父类的属性和方法,实现代码复用。多态则是指一个接口可以有多种不同的实现方式。抽象则体现在抽象类和接口中,用于定义通用行为。 2. **访问权限修饰符**:`public`、`private`、`protected`以及默认(包级私有)的区别在于它们控制了类的成员(字段和方法)对外的可见性。`public`对所有类都可见,`private`仅限于同一类内部,`protected`对同一包内的类和所有子类可见,而默认访问级别只对同一包内的类可见。 3. **克隆对象**:在Java中,`clone()`方法用于创建现有对象的一个副本,但默认情况下并不总是创建深度复制,而是浅复制。要实现深复制,通常需要自定义`clone()`方法或使用序列化技术。 4. **Java SE语法**: - `goto`语句:Java中没有`goto`语句,它是一种流控制语句,但在Java中被摒弃。 - `&`和`&&`:`&`是逻辑与运算符,无论两边条件如何都会进行计算;`&&`是短路与运算符,如果左边为假,右边不会执行。 - 跳出多重循环:可以使用`break`配合标签来跳出特定层次的循环。 - `equals()`和`hashCode()`:两个对象值相同但hashCode不同是可能的,因为`equals()`比较的是对象内容,而`hashCode()`通常是基于对象内存地址计算的,不同的对象可能会有相同的哈希码。 - 继承`String`:Java中的`String`类是final的,不能被继承。 - 值传递与引用传递:Java中的参数传递都是值传递,但对象引用是值传递,意味着对象的属性可以在方法内改变。 5. **重载与重写**: - 重载(Overloading)是同一个类中方法名相同但参数列表不同的方法,不能通过返回类型来区分,因为编译期决定调用哪个方法。 - 重写(Overriding)是指子类对父类已有的方法进行重新定义,必须保持方法签名一致。 6. **char类型与中文字符**:Java中的`char`类型是16位的Unicode编码,理论上可以存储中文字符,但一个中文字符可能需要两个`char`来表示。 7. **抽象类与接口**:抽象类可以包含抽象方法和非抽象方法,可以有构造器,而接口只能声明方法,不能有实现。一个类可以继承一个抽象类并实现多个接口。 8. **静态与实例变量**:静态变量属于类,不依赖于类的实例,所有实例共享同一份静态变量。实例变量属于类的每个实例,每个实例都有自己的一份副本。 9. **==与equals()**:`==`用于比较基本类型变量的值或对象的引用,而`equals()`方法用于比较对象的内容,需要重写以满足特定比较需求。 这些内容都是Java面试中常见的问题,深入理解和掌握这些知识点将有助于在面试中表现出色。