IAd*_*ter 8 java string optimization performance memory-management
什么方法的资本化更好?
矿:
char[] charArray = string.toCharArray();
charArray[0] = Character.toUpperCase(charArray[0]);
return new String(charArray);Run Code Online (Sandbox Code Playgroud)
要么
commons lang - StringUtils.capitalize:
return new StringBuffer(strLen)
.append(Character.toTitleCase(str.charAt(0)))
.append(str.substring(1))
.toString();Run Code Online (Sandbox Code Playgroud)
我认为我的更好,但我宁愿问.
我想你的版本会更高效,因为它没有分配尽可能多的临时String对象.
我会这样做(假设字符串不为空):
StringBuilder strBuilder = new StringBuilder(string);
strBuilder.setCharAt(0, Character.toUpperCase(strBuilder.charAt(0))));
return strBuilder.toString();
Run Code Online (Sandbox Code Playgroud)
但是,请注意它们不相同,因为它使用toUpperCase()而另一个使用toTitleCase().
来自论坛帖子:
Titlecase <>大写
Unicode定义了三种案例映射:小写,大写和标题.大写和标注字符或字符序列之间的区别可以在复合字符中看到(即,表示两个字符的组合的单个字符).例如,在Unicode中,字符U + 01F3是LATIN SMALL LETTER DZ.(让我们使用ASCII将此复合字符写为"dz".)此字符
大写为字符U + 01F1,LATIN CAPITAL LETTER DZ.(这
基本上是"DZ".)但它标题为字符U + 01F2,
带有小写字母Z的拉丁文大写字母D(我们可以写"Dz".)Run Code Online (Sandbox Code Playgroud)character uppercase titlecase --------- --------- --------- dz DZ Dz
性能是平等的。
您的代码复制 char[] 调用string.toCharArray()和new String(charArray)。
buffer.append(str.substring(1))和上的 apache 代码buffer.toString()。apache 代码有一个额外的字符串实例,其中包含基本 char[1,length] 内容。但创建实例 String 时不会复制此内容。
| 归档时间: |
|
| 查看次数: |
7264 次 |
| 最近记录: |