- 1
- 0
- 约5.68千字
- 约 8页
- 2026-09-01 发布于河北
- 举报
后端开发经典面试题(含详细真实面试答案)
一、Java基础高频题
1、==和equals的区别?
参考答案:
首先,==是运算符,equals是方法。
对于基本数据类型,==比较的是数值是否相等;基本类型没有equals方法。
对于引用数据类型,==比较的是两个对象的内存地址,判断是不是同一个对象;而equals默认也是比较地址,但像String、Integer这些类都重写了equals方法,重写后是比较对象内部的实际内容是否一致。
日常开发中,判断字符串、包装类内容是否一致,一律用equals,避免空指针的话可以把常量放前面。
2、String、StringBuilder、StringBuffer的区别?
参考答案:
String是不可变字符串,每次拼接、修改都会生成新的字符串对象,频繁操作会产生大量无用对象,占用内存、效率低。
StringBuilder和StringBuffer是可变字符串,底层是字符数组,修改不会新建对象。
核心区别在线程安全:StringBuffer所有方法都加了同步锁,线程安全但效率低;StringBuilder无锁,线程不安全,效率最高。
实际开发中,单线程场景统一用StringBuilder,多线程共享变量场景才用StringBuffer。
3、final、finally、finalize的区别
原创力文档

文档评论(0)