Java面试中,基础语法和面向对象概念是必考内容。本文提炼了高频考点,涵盖数据类型、运算符、包装类、缓存机制及面向对象三大特征,助你快速掌握核心知识。
一、Java基础数据类型与运算符
Java的基本数据类型分为四类八种:整型(byte、short、int、long)、浮点型(float、double)、字符型(char)和布尔型(boolean)。其中,int是整型默认类型,long赋值需加 L,float需加 f。 包装类型(如Integer)是引用类型,默认值为null,能区分0和空值。数组对象也是引用类型,赋值给另一数组时仅复制引用,修改会相互影响。
二、自增自减与注释
自增运算符 ++ 无论是否参与运算,都会使变量加1。若参与运算:++在前则先加1后运算,在后则先运算后加1。自减同理。Java注释有三种:单行注释(//)、多行注释(/* */)和文档注释(/** */),后者可用于生成API文档。
三、关键字、运算符与类型转换
Java共53个关键字,包括48个关键字(如public、class)、2个保留字(const、goto)和3个特殊直接量(null、true、false)。⚠️ &是逻辑与,两边都执行;&&是短路与,左边为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范围的数据用 BigInteger 或 BigDecimal 表示。
五、面向对象三大特征:封装、继承、多态
封装:隐藏内部实现,暴露方法(如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() 方法可手动入池。
八、异常处理与泛型
异常分为检查异常(需显式处理)和运行时异常(可忽略)。常用关键字:try、catch、finally、throw、throws。泛型提供类型安全,编译时检查,避免强制转换。类型擦除后,泛型信息在运行时不可用。
九、集合框架核心
集合分为Collection(List、Set、Queue)和Map。常用实现:
- ArrayList:基于数组,查询快,增删慢
- LinkedList:基于链表,增删快,查询慢
- HashMap:基于哈希表,键值对存储,允许null键值
- HashSet:基于HashMap,元素唯一
- TreeMap:红黑树实现,有序
⚠️ HashMap 线程不安全,多线程用 ConcurrentHashMap。迭代时修改集合会抛 ConcurrentModificationException。
十、Java与多语言对比
Java的强类型和JVM生态使其在企业级开发中占据主导。相比之下:
- C++:手动内存管理,性能更高,但复杂度也高
- Python:动态类型,开发快,适合数据科学
- Go:并发原生支持,编译快,适合云原生
- TypeScript:为JavaScript添加类型,适合大型前端项目
掌握Java的核心机制,能帮助你更快理解其他语言的设计哲学。
总结:本文从基础数据类型、运算符、包装类缓存、面向对象特征、Object方法、字符串、异常、集合到多语言对比,全面梳理了Java面试高频考点。理解原理而非死记硬背,才是应对面试的最佳策略。✅
浙公网安备 33010602011771号