创建一个String类型的对象和直接给String类型的变量赋值有什么不同?
答:不创建String对象的会涉及到常量池的机制,当用一个值给String类型的变量赋值的时候,会经过常量池,常量池会保留一份数据,当相同的数据再次赋值时,常量池就会起到作用。
String类型和StringBuffer类型之间的区别?
当创建一个String类型对象并赋值的时候,会每次都在堆内存里创建一个对象。而用StringBuffer创建一个对象并赋值时,会给StringBuffer对象分配16块空间,目的是增加追加连接的速度。
StringBuffer类型和StringBuilder类型之间的区别
StringBuffer是单线程,效率低但不会出现并行错误。
StringBuilder是多线程,效率高但有可能会出现并行错误。