Java 的字符串连接与 StringBuilder
作为一名Java程序员,当看到下面的代码时,第一反应可能是:为什么要用字符串相加?得用 StringBuilder 啊,不然性能有问题。因为在进行字符串连接操作时,可能会创建过多的中间对象。很多网上的资料也会强调这一点。
相对于字符串连接操作来说,使用 StringBuilder 的做法,并不是很直观。要首先创建一个 StringBuilder 对象,再使用 append 方法来添加字符串。直接的字符串连接,不仅写起来简单,可读性也更好。
你可能会觉得,必须要为了性能而牺牲代码的可读性。
事实上,这种想法已经过时了。以JDK 8为例,用javap工具查看一下生成的字节代码就会发现:Java编译器已经自动把字符串连接操作转换成了 StringBuilder 的 append 方法调用,因此完全不需要开发人员来处理。
实际上,JDK 7所生成的字节代码,就已经采用这种做法了。与 JDK 8 生成的字节代码是相同的。
值得一提的是,从JDK 9开始,编译器生成的字节代码改为了使用 invokedynamic 指令。
总而言之,在Java代码中,并不需要对字符串连接操作进行特别的处理。怎么方便就怎么写。不用担心性能,交给编译器去处理即可。