(1) 问题分析
考官主要想对final修饰符的作用,同步锁,以及数据类型的考察。在工作中为什么业务层频繁的拼接sql不用string而用StringBuilder,为什么Stringbuilder比StringBuffer效率高
(2) 核心答案讲解
String是引用类型,底层是被final修饰的字符数组,所以String相当于一个常量,是不可改变的,每拼接一次就会产生一个新的对象,而由于垃圾回收机制的原理,原有的对象不会立马被回收,这是对内存极大的消耗;而StringBuilder和StringBuffer 是可变长度的,可以利用append方法向原有对象拼接,然后用toString方法将其转化为String类型;这两个相比起来StringBuilder的效率更高,因为他是非线程安全的,不需要花费资源去维护同步锁。
(3) 问题扩展
Final修饰符的作用是什么?
在工作中你们如果在业务层去拼接sql,使用String类型去接收的吗?
(4) 结合项目中使用
在项目中如果频繁的拼接字符串需要用什么类型对象去接收