Java面试中,基础语法和面向对象概念是必考内容。本文提炼了高频考点,涵盖数据类型、运算符、包装类、缓存机制及面向对象三大特征,助你快速掌握核心知识。

一、Java基础数据类型与运算符

Java的基本数据类型分为四类八种:整型(byte、short、int、long)、浮点型(float、double)、字符型(char)和布尔型(boolean)。其中,int是整型默认类型,long赋值需加 Lfloat需加 f。 包装类型(如Integer)是引用类型,默认值为null,能区分0和空值。数组对象也是引用类型,赋值给另一数组时仅复制引用,修改会相互影响。

二、自增自减与注释

自增运算符 ++ 无论是否参与运算,都会使变量加1。若参与运算:++在前则先加1后运算,在后则先运算后加1。自减同理。Java注释有三种:单行注释//)、多行注释/* */)和文档注释/** */),后者可用于生成API文档。

三、关键字、运算符与类型转换

Java共53个关键字,包括48个关键字(如publicclass)、2个保留字(constgoto)和3个特殊直接量(nulltruefalse)。⚠️ &是逻辑与,两边都执行;&&是短路与,左边为false则右边不执行。移位运算符 << 左移相当于乘以2,>> 右移相当于除以2。

类型转换要点:short s1 = 1; s1 = s1 + 1; 会编译错误(需强转),而 s1 += 1; 正确(隐含强转)。数组有 length 属性,String有 length() 方法。计算2乘以8最有效方式:2 << 3

四、包装类与缓存机制

自动装箱通过 valueOf() 实现,自动拆箱通过 xxxValue() 实现。缓存机制:Integer、Long、Short、Byte、Character 默认缓存 -128~127 范围内的对象,Boolean缓存 true/false。浮点型(Float、Double)无缓存。

以下代码输出结果不同:

public class Test{
    public static void main(String[] args) {
       Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;
              System.out.println(f1 == f2);
       System.out.println(f3 == f4);
    }
}

原因:f1==f2 值在缓存范围内,引用同一对象;f3==f4 超出范围,创建新对象。超过long范围的数据用 BigIntegerBigDecimal 表示。

五、面向对象三大特征:封装、继承、多态

封装:隐藏内部实现,暴露方法(如private属性+getter/setter),提高可维护性。继承:子类通过 extends 复用父类功能,Java单继承。多态:父类引用指向子类对象(如 Animal a = new Dog()),通过重写实现动态绑定。重载是方法名相同、参数不同。

六、Object类核心方法

Object是所有类的根,常用方法包括:

  • getClass():返回运行时类信息
  • equals():默认比较引用,可重写为比较内容
  • hashCode():与equals一致,用于哈希集合
  • toString():返回字符串表示
  • clone():创建对象副本
  • finalize():垃圾回收前调用
  • wait()/notify()/notifyAll():线程间通信
[AFFILIATE_SLOT_1]

七、String、StringBuilder与StringBuffer

String 不可变,每次修改创建新对象,适合少量字符串操作。StringBuilder 可变、线程不安全,性能高,推荐单线程使用。StringBuffer 可变、线程安全(方法加synchronized),适合多线程。字符串常量池存储字面量,intern() 方法可手动入池。

八、异常处理与泛型

异常分为检查异常(需显式处理)和运行时异常(可忽略)。常用关键字:trycatchfinallythrowthrows。泛型提供类型安全,编译时检查,避免强制转换。类型擦除后,泛型信息在运行时不可用。

九、集合框架核心

集合分为Collection(List、Set、Queue)和Map。常用实现:

  • ArrayList:基于数组,查询快,增删慢
  • LinkedList:基于链表,增删快,查询慢
  • HashMap:基于哈希表,键值对存储,允许null键值
  • HashSet:基于HashMap,元素唯一
  • TreeMap:红黑树实现,有序

⚠️ HashMap 线程不安全,多线程用 ConcurrentHashMap。迭代时修改集合会抛 ConcurrentModificationException

[AFFILIATE_SLOT_2]

十、Java与多语言对比

Java的强类型和JVM生态使其在企业级开发中占据主导。相比之下:

  • C++:手动内存管理,性能更高,但复杂度也高
  • Python:动态类型,开发快,适合数据科学
  • Go:并发原生支持,编译快,适合云原生
  • TypeScript:为JavaScript添加类型,适合大型前端项目

掌握Java的核心机制,能帮助你更快理解其他语言的设计哲学。

总结:本文从基础数据类型、运算符、包装类缓存、面向对象特征、Object方法、字符串、异常、集合到多语言对比,全面梳理了Java面试高频考点。理解原理而非死记硬背,才是应对面试的最佳策略。✅