java append concat_最佳实践/性能:将StringBuilder.append与String.concat混合使用
问题
我试图了解最佳实践是什么以及为什么连接不同情况下的字符串文字和变量。例如,如果我有这样的代码
StringBuilder sb = new StringBuilder("AAAAAAAAAAAAA")
.append(B_String).append("CCCCCCCCCCC").append(D_String)
.append("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE")
.append("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
这是这样做的吗?从this post,我注意到Strings上的+操作符创建了一个StringBuilder的新实例,连接操作数,并返回一个String转换,这似乎比调用.append()要多得多;所以,如果这是真的,那就不可能了。但是怎么样String.concat()?每次连接使用.append()是否合适?或者只是变量,文字可以附加到.concat()?
StringBuilder sb = new StringBuilder("AAAAAAAAAAAAA")
.append(B_String.concat("CCCCCCCCCCC")).append(D_String
.concat("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE")
.concat("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"));
针对这些情况的最佳实践和表现的一般规则是什么?我的假设是否正确+并且它应该真的不被使用?
#1 热门回答(162 赞)
#操作员
String s = s1 + s2
在幕后,这被翻译为:
String s = new StringBuilder(s1).append(s2).toString();
想象一下,如果你有s1 + s2,它会增加多少额外工作:
stringBuilder.append(s1 + s2)
代替:
stringBuilder.append(s1).append(s2)
##多个字符串
值得注意的是:
String s = s1 + s2 + s3 + ... +sN
被翻译成:
String s = new StringBuilder(s1).append(s2).append(s3)...apend(sN).toString();
#concat()
String s = s1.concat(s2);
Stringcreateschar[]array,可以适合s1和s2。将s1和s2复制到此新阵列。实际上需要较少的工作然后+操作员。
#StringBuilder.append()
保持内部char[]阵列,在需要时增长。如果内部足够大,则不会创建额外的char[]。
stringBuilder.append(s1.concat(s2))
也表现不佳因为s1.concat(s2)创建了额外的char[]阵列,并且复制了s1和s2,只是为了将新的数组内容复制到internalStringBuilder``char[]。
话虽这么说你应该使用append()所有的时间并附加原始字符串(你的第一个代码片段是正确的)。
#2 热门回答(14 赞)
编译器优化连接。
所以
int a = 1;
String s = "Hello " + a;
变成了
new StringBuilder().append("Hello ").append(1).toString();
有一个很好的主题here解释了为什么你应该使用运算符。
#3 热门回答(3 赞)
优化由编译器自动完成。
Java2编译器将自动转换以下内容:
String s = s1 + s2;
至
String s = (new StringBuffer()).append(s1).append(s2).toString();
直接来自Oracles网站上的53008345。
java append concat_最佳实践/性能:将StringBuilder.append与String.concat混合使用相关推荐
- 编写高性能Java代码的最佳实践
编写高性能Java代码的最佳实践 摘要:本文首先介绍了负载测试.基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践.最后研究了JVM特定的调优技巧.数据库端的优化和架 ...
- java replaceall正则表达式_编写高性能Java代码的最佳实践
作者:Eugen Paraschiv 翻译:雁惊寒https://dzone.com 摘要:本文首先介绍了负载测试.基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践 ...
- 高性能Java代码的最佳实践
高性能Java代码的最佳实践 前言 在这篇文章中,我们将讨论几个有助于提升Java应用程序性能的方法.我们首先将介绍如何定义可度量的性能指标,然后看看有哪些工具可以用来度量和监控应用程序性能,以及确定 ...
- 编写高性能 Java 代码的最佳实践
摘要:本文首先介绍了负载测试.基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践.最后研究了JVM特定的调优技巧.数据库端的优化和架构方面的调整.以下是译文. 介绍 ...
- java查询枚举_查找Java枚举的最佳实践
查找Java枚举的最佳实践 我们有一个REST API,客户端可以在其中提供表示Java Enums中服务器上定义的值的参数. 因此,我们可以提供一个描述性错误,我们将此valueOf(..)方法添加 ...
- Java Bean Validation 最佳实践
<h1 class="postTitle"><a id="cb_post_title_url" class="postTitle2& ...
- DB2 最佳实践: 性能调优和问题诊断最佳实践
最佳实践的相关文章可见:http://www.ibm.com/developerworks/cn/data/bestpractices/ DB2 最佳实践: 性能调优和问题诊断最佳实践,第 1 部分 ...
- EduSoho 开发中的最佳实践---性能和安全(一)
EduSoho 开发中的最佳实践-性能和安全(一) EduSoho 汇集了很多开发者的心血,系统在不断发展中越来越完善.一个具有良好性能的系统取决于代码的设计和质量,在此和大家分享几个 EduSoho ...
- Java日志记录最佳实践
作者:GeekerLou www.jianshu.com/p/546e9aace657 一.日志简介 1.1 日志是什么(WHAT) 日志:记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题 ...
- Java日志管理最佳实践
原文出处:http://www.ibm.com/developerworks/cn/java/j-lo-practicelog/. 感谢原作者,感谢ibm网站,里面有好多的精华帖. 日志记录是应用程序 ...
最新文章
- 让我来教你 PHP 函数调用
- 网络协议命令行处理c语言程序解析,网络协议工程SPIN实验报告剖析.doc
- 抖音上测试年龄星座的软件,抖音年龄计算器
- 飞鸽传书2012绿色版
- Windows下检测文件的MD5值
- 除了敲代码,程序员还能有什么副业?
- 任正非为什么向两千多年前的李冰父子学习?
- python扫描端口hack_一款集http端口扫描和目录批量扫描为一体的自动化工具
- QQ游戏连连看的脚本
- 【Turbo】基于MATLAB的turbo编译码算法的仿真
- IC设计职位详解之“数字前端设计工程师”就业必学课程
- android 调色盘颜色选取
- 量子物理与计算机,量子物理学的重要应用,与普通计算机结构完全不同,还需继续探索...
- python转义字符:‘\‘
- mac 外接显示器 发热严重 解决方案
- word 文本差异比较
- 自问自答(JavaScript篇)
- 巴特沃斯(Butterworth)滤波器 (2) - 双线性变换
- ISCSI的target和initiator的部署
- 【转】Guide to Elliptic Curve Cryptography(ECC椭圆曲线算法1)
热门文章
- 360,手机助手的功能,既然有如此二面性?
- 【“免费”Windows优秀软件推荐】:Fences——自动整理桌面图标
- JAVA简单聊天室的实现
- stm32f030 硬件I2C配置
- arcgis字段计算器python_ArcGIS字段计算器(Python篇)——字段查重等问题汇总
- win10自定义使用Mac的鼠标样式
- html注册手机号验证,js正则表达式验证手机号码,用户名和邮箱
- SQLServer数据库压缩与数据库日志压缩
- m3u8格式转换器android,m3u8文件视频转换器(安卓版)
- 组策略设置计算机计划任务,windows 2008 server 域环境通过组策略下发计划任务