String和StringBuffer的对象都表示一个字符串,他们之间最重要的区别是String对象一旦被创建之后,其内容是不可以改变的。而StringBuffer对象的值则可以任意的修改。因为String类采用了“不变模式”,无论是使用字符串连接符还是使用substring等函数对String对象的修改,其实都会返回一个新的String对象。这样做的好处主要在于字符串对象一旦创建,其状态就不再发生改变,所以是线程安全的,可以在线程之间共享,而不需要同步。但是由于每次修改都要产生新对象,所以在进行连接操作时,就会创建临时对象来保存结果,从而降低了性能。而StringBuffer则不存在这样的问题,因为它是一个mutable class,对象的值可以任意修改。所以在进行字符串的连接操作时应该先使用该类的append方法进行连接,再用toString方法将其转换成String对象。这样做不需要生成临时对象,所以效率比较高。这两者另一个区别就是String对象可以直接用字面量赋值,而不需要调用构造函数。如果把同一个字面量赋值给多个String类型的引用,那么这些引用实际上是指向对内存当中的同一地址。
常见面试题十一--请简述String和StringBuffer之间的区别
最新推荐文章于 2022-08-28 09:26:05 发布