Java 笔试精华:面向对象、基本概念与核心面试题解析

需积分: 10 6 下载量 15 浏览量 更新于2024-09-08 收藏 235KB TXT 举报
Java 笔试题涵盖了广泛的Java基础知识,包括面向对象编程的核心概念、访问修饰符的使用、基本数据类型和包装类的区别、运算符与控制结构、内存管理、数学函数、类型转换、数组和字符串操作、异常处理、类与对象、多态性、类加载机制、字符编码、抽象类和接口、内部类与静态嵌套类的区别,以及Java中的内存管理和垃圾回收等。以下是针对每个知识点的详细解析: 1. **面向对象特征**:面向对象编程(OOP)以封装、继承、多态为核心,强调通过对象来表达问题域的概念,而非过程。对象具有状态(属性)和行为(方法)。 2. **访问修饰符**:`public` 允许所有类访问,`private` 只允许所在类内部访问,`protected` 对同一包内的类可见,不写(默认)表示只有同一个包内的子类可以访问。 3. **String 类型**:虽然不是基本数据类型,但String 是不可变的,是Java中的引用类型,代表字符序列。 4. **浮点数赋值**:`float f = 3.4;` 是正确的,浮点数可以直接赋值。 5. **短整型运算**:`short s1 = 1; s1 = s1 + 1;` 没有错,`s1 += 1;` 也没有错,但`+=`是自动类型转换的简写形式。 6. **Java与goto语句**:Java不支持`goto`语句,更倾向于控制流的结构化设计。 7. **int与Integer**:`int`是基本类型,`Integer`是其包装类,用于自动装箱和拆箱。 8. **& 和 &&**:`&`是按位与运算符,`&&`是逻辑与运算符,它们在逻辑运算和位操作中有不同的用途。 9. **内存区域**:Java有三个主要的内存区域:栈(存放局部变量和方法调用帧)、堆(存放对象实例和数组)、静态区(存放常量池和类信息)。 10. **Math.round()` 函数**:`Math.round(11.5)` 返回12,`Math.round(-11.5)` 返回-12,四舍五入规则。 11. **switch 语句**:可以作用在byte和char上,但不能作用在long和String上,因为它们不满足switch语句的枚举要求。 12. **高效计算**:计算2乘以8最有效的方法是直接写成`2 * 8`,而不是用复杂算法。 13. **数组与字符串的length()**:数组有`length()`方法,返回元素个数;字符串也有`length()`,返回字符数。 14. **跳出嵌套循环**:在Java中,可以使用`break`或`return`语句从多重循环中退出。 15. **构造器**:构造器是特殊的方法,不能被重写,但可以重载。 16. **哈希码与equals()**:对象相等(`equals(true)`)并不一定意味着哈希码相同,哈希码是根据对象内容计算的唯一标识,但不同对象可能有相同的哈希值。 17. **继承String**:不能直接继承String,因为它是final类,但可以通过实现Comparable接口间接比较。 18. **参数传递**:在Java中,对象作为参数传递时,实际上是引用传递,方法内部修改对象不会影响原对象。 19. **String、StringBuilder和StringBuffer**:String是不可变的,StringBuilder和StringBuffer是可变的,StringBuilder适用于单线程,StringBuffer多线程环境下更安全。 20. **重载与重写**:重载是同名方法在参数列表或返回类型不同,重写是子类提供与父类方法同名、同参数列表和返回类型的版本。 21. **JVM加载class文件**:JVM通过类加载器逐步将.class文件加载到内存中,解析字节码并创建对应的Class对象。 22. **char与中文字符**:char是16位Unicode字符,理论上可以存储一个中文汉字,但在Java中一个char实际存储的是基本ASCII字符。 23. **抽象类与接口**:抽象类可以包含具体方法,接口只定义方法签名,两者都可用于实现多态。抽象类通常用于继承,接口用于实现。 24. **静态嵌套类与内部类**:静态嵌套类在编译时就确定,而内部类根据外部类的对象实例化。静态嵌套类不依赖外部类实例,而内部类可以访问外部类的私有成员。 25. **内存泄漏**:Java中的内存泄漏是指程序动态分配的内存无法正常释放,导致系统内存消耗增大,最终可能导致性能下降或程序崩溃。Java有自己的垃圾回收机制,但开发者仍需注意避免内存泄漏。 以上知识点概述了Java面试中常见的基础问题,掌握这些知识点对于理解和应对Java笔试至关重要。