请问StringBuilder的写法问题

1. stringBuilder.append(nextLine).append("\n");
2. stringBuilder.append(nextLine + "\n");

IDE推荐我使用第一种,那这两种写法有什么区别?
一条小咸鱼
浏览 1447回答 1
1回答

瓦力老师

首先,你要知道,你看到的代码和实际编译成的字节码文件语义是会有点出入的,虚拟机也就是JVM是通过执行字节码(.class文件)来运行Java代码的,所以,编译器在将你的代码编译成字节码时,会做一些“优化”操作的。比如你写的字符串之间用+串联,Java编译器会做一些事情,它会先new一个StringBuilder对象,然后把“+”运算符前后的字符串用append方法进行串联,最后返回toString(),返回的结果传入你写的append方法,这样的话,资源消耗就会造成不必要的浪费。你可以使用javap -v 命令,后面跟上你的className,在编译文件目录里执行,它会返回真实的字节码内容(可以看我给出的截图),你会发现,你写的第二行代码所对应的字节码会比第一行多出好几行来。因此,IDE基于这个原因,会推荐你使用更节省资源的写法,也就是直接append下去,而不是用Java的+运算符进行链接字符串操作。(PS:当然,如果你对性能完全不care的话,你可以忽略IDE的推荐写法)
打开App,查看更多内容
随时随地看视频慕课网APP