专业的JAVA编程教程与资源

网站首页 > java教程 正文

面试官:为啥不提倡字符串拼接?看阿里java开发手册怎么说

temp10 2024-10-18 13:50:17 java教程 10 ℃ 0 评论

阿里规约

先来看阿里java开发手册的第22条,循环体内,字符串的连接方式,使用 StringBuilder 的 append 方法进行扩展。

说明:下例中,反编译出的字节码文件显示每次循环都会 new 出一个 StringBuilder 对象,然后进行 append操作,最后通过 toString 方法返回 String 对象,造成内存资源浪费。

面试官:为啥不提倡字符串拼接?看阿里java开发手册怎么说

反例:

String str = "start";
for (int i = 0; i < 100; i++) {
   str = str + "hello"; 
}

反编译

我么先写一个类测试一下是否是这样的呢?眼见为实,耳听为虚,Let`s go。

反编译 javap -c Test.class ,接下来看结果,从反编译的结果看循环体内每拼接一次就会去new一个StringBuilder。

那么,m2方法的字节码呢?我们可以看到是直接调用的append方法,而没有每循环一次new一个StringBuilder对象了。

总结

1、字符串拼接,+号和StringBuilder是相等的,但是在循环体内使用 StringBuilder 的 append 方法效率更优,尤其是数据量很大的情况下。

2、使用字节码的方式可以很好查看代码底层的执行,从而可以看出哪些实现效率高,哪些实现效率低;可以更好的对我们的代码做优化。让程序执行效率更高。

关注并私信我获取最新【阿里java开发手册泰山版】

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表