stringbuilder调用中的Java字符串连接 [英] Java string concat in stringbuilder call

查看:30
本文介绍了stringbuilder调用中的Java字符串连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

据我所知,StringBuilder 通过在连接期间不在字符串池中创建临时字符串实例来帮助减少内存使用.但是,如果我这样做会发生什么:

As far as I know, StringBuilder helps to reduce memory usage by not creating temporary string instances in the string pool during concats. But, what happens if I do sth like this:

StringBuilder sb = new StringBuilder("bu");
sb.append("b"+"u");

是否编译成

sb.append("b");
sb.append("u");

?还是取决于优化标志?或者我失去了stringbuilders的全部好处?或者这个问题没有意义?:)

? Or it depends on optimalization flags? Or I loose the whole benefit if stringbuilders? Or this quetion makes no sense? :)

推荐答案

它编译为 sb.append("bu"),因为编译器将多个 String 字面量的串联转换为单个 String字面意思.

It compiles to sb.append("bu"), because the compiler translates the concatenation of multiple String litterals to a single String litteral.

如果你有

String a = "a";
sb.append(a + "b");

它会编译成

String a = "a";
String temp = a + "b"; // useless creation of a string here
sb.append(temp);

所以你应该更喜欢

sb.append(a);
sb.append("b");

在这种情况下.

这篇关于stringbuilder调用中的Java字符串连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆