为了账号安全,请及时绑定邮箱和手机立即绑定

请问StringBuilder的写法问题

请问StringBuilder的写法问题

一条小咸鱼 2017-08-09 17:58:15
1. stringBuilder.append(nextLine).append("\n"); 2. stringBuilder.append(nextLine + "\n"); IDE推荐我使用第一种,那这两种写法有什么区别?
查看完整描述

1 回答

已采纳
?
瓦力老师

TA贡献10条经验 获得超19个赞

首先,你要知道,你看到的代码和实际编译成的字节码文件语义是会有点出入的,虚拟机也就是JVM是通过执行字节码(.class文件)来运行Java代码的,所以,编译器在将你的代码编译成字节码时,会做一些“优化”操作的。

比如你写的字符串之间用+串联,Java编译器会做一些事情,它会先new一个StringBuilder对象,然后把“+”运算符前后的字符串用append方法进行串联,最后返回toString(),返回的结果传入你写的append方法,这样的话,资源消耗就会造成不必要的浪费。

你可以使用javap -v 命令,后面跟上你的className,在编译文件目录里执行,它会返回真实的字节码内容(可以看我给出的截图),你会发现,你写的第二行代码所对应的字节码会比第一行多出好几行来。因此,IDE基于这个原因,会推荐你使用更节省资源的写法,也就是直接append下去,而不是用Java的+运算符进行链接字符串操作。(PS:当然,如果你对性能完全不care的话,你可以忽略IDE的推荐写法)

//img1.sycdn.imooc.com//598af0d7000148b210010262.jpg


查看完整回答
2 反对 回复 2017-08-09
  • 1 回答
  • 1 关注
  • 1444 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信