专业的JAVA编程教程与资源

网站首页 > java教程 正文

大厂代码军规|字符串拼接问题 #java

temp10 2024-10-18 13:49:51 java教程 11 ℃ 0 评论

代码军规:字符串拼接。

大家好,我是一哥。今天大厂规范编码分享的是字符串拼接的问题。现在来看两个例子。

大厂代码军规|字符串拼接问题 #java

·第一个例子是用了一个是圈对象,在循环里面做了个拼接。

·第二个例子是用的是stringBuilder,在循环里面做了个拼接。

·第一种是会不断的在内存中创建一个新的字符串对象,这样再把将之前字符串的内容跟带拼接的对象内容合并在一起,这样会造成大量的临时对象的生成跟垃圾回收,会对性能造成一些负面的影响。

·第二种字符串Builder从始至终都是用的是一个对象,所以它不会去再生成一个新的临时对象,这样它是不会去存在这个,但造成内存里面的对象会很多的情况。

但是在jdk5的时候,其实开始引入了一些包括拆箱、装箱、拆箱和字符串常量池等等这些概念。对于一些简单的字符串的拼接,比如在循环里面,如果循环量比较少,在这样的拼接,其实编译器会在编译的时候就会生成一个字符串。

到了jdk8的时候,编译器和JVM还会有进一步的优化,就是针对这种使用加号的,加号等于的,如果次数比较少的情况下,它会去自动帮你转成StringBuilder,会有这么一个情况。

如果是比较复杂的一些拼接情况,还是建议使用的是StringBuilder或者StringBuffer,来去确保程序的最佳的性能。

可以假设个例子,编译器是即时编译,Jit既然是即时编译,就是它不会去允许编译时间要花费很久。假设循环的量级很大,量级很大会在循环的过程中不断的去帮你优化,就都会耗时耗在这里。

所以Git,是不会在循环中这种话,去个在大循环中给你做这种去优化,因为它也不符合你T要手动使用truie即时编译即时这么一个要求,这也就是为什么这个是背后的原因。

所以说我们还是尽量用的是stringBufferaoien,或者是stringBuilder来去代替string,在循环中去拼接字符串。

今天的分享我们分享到这里了,我们下期再见。

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

欢迎 发表评论:

最近发表
标签列表