- 2
- 0
- 约5.38千字
- 约 8页
- 2026-07-27 发布于河北
- 举报
Java外包面试真题(含详细接地气答案)
一、Java基础高频题
1.==和equals的区别?项目中什么时候踩过坑?
答案:
先说核心区别:==是比较内存地址,基本类型比数值,引用类型比对象地址;equals是方法,默认也是比地址,重写后比内容。
日常开发最常用的就是String,String重写了equals,所以只比对字符串内容。
实际踩坑(外包常问):
之前做需求时,直接用==判断两个newString的字符串,结果明明内容一样却返回false。因为new出来的对象地址不同,后面统一改成equals判断字符串、包装类内容对比,同时养成习惯把常量放前面,比如xxx.equals(str),避免空指针。
2.String、StringBuilder、StringBuffer区别?业务怎么选?
答案:
1、String:不可变,每次拼接都会生成新对象,频繁拼接会产生大量垃圾对象,效率很低。
2、StringBuilder:可变、线程不安全,没有锁,拼接效率最高。
3、StringBuffer:可变、线程安全,加了synchronized锁,多线程下不会并发问题,但性能差一点。
业务选型:
绝大多数业务场景(接口、单线程数据处理)直接用StringBuilder;只有老项目多线程拼接字符串的场景才用StringBuffer,新项
原创力文档

文档评论(0)