网站首页 > java教程 正文
代码军规:字符串拼接。
大家好,我是一哥。今天大厂规范编码分享的是字符串拼接的问题。现在来看两个例子。
·第一个例子是用了一个是圈对象,在循环里面做了个拼接。
·第二个例子是用的是stringBuilder,在循环里面做了个拼接。
·第一种是会不断的在内存中创建一个新的字符串对象,这样再把将之前字符串的内容跟带拼接的对象内容合并在一起,这样会造成大量的临时对象的生成跟垃圾回收,会对性能造成一些负面的影响。
·第二种字符串Builder从始至终都是用的是一个对象,所以它不会去再生成一个新的临时对象,这样它是不会去存在这个,但造成内存里面的对象会很多的情况。
但是在jdk5的时候,其实开始引入了一些包括拆箱、装箱、拆箱和字符串常量池等等这些概念。对于一些简单的字符串的拼接,比如在循环里面,如果循环量比较少,在这样的拼接,其实编译器会在编译的时候就会生成一个字符串。
到了jdk8的时候,编译器和JVM还会有进一步的优化,就是针对这种使用加号的,加号等于的,如果次数比较少的情况下,它会去自动帮你转成StringBuilder,会有这么一个情况。
如果是比较复杂的一些拼接情况,还是建议使用的是StringBuilder或者StringBuffer,来去确保程序的最佳的性能。
可以假设个例子,编译器是即时编译,Jit既然是即时编译,就是它不会去允许编译时间要花费很久。假设循环的量级很大,量级很大会在循环的过程中不断的去帮你优化,就都会耗时耗在这里。
所以Git,是不会在循环中这种话,去个在大循环中给你做这种去优化,因为它也不符合你T要手动使用truie即时编译即时这么一个要求,这也就是为什么这个是背后的原因。
所以说我们还是尽量用的是stringBufferaoien,或者是stringBuilder来去代替string,在循环中去拼接字符串。
今天的分享我们分享到这里了,我们下期再见。
猜你喜欢
- 2024-10-18 java面试题之三:字符串操作(字符串笔试题java)
- 2024-10-18 Jmeter BeanShell循环:字符串 拼接模式,为变量名 获取数据值
- 2024-10-18 连接字符串除了“+”还有哪些方法,进来看
- 2024-10-18 初识java—(三十四)String、StringBuffer和StringBuilder类
- 2024-10-18 初学者都在坑里!不要在Python中使用“+”来连接字符串
- 2024-10-18 一段简单的关于字符串的Java 代码,竟然考察了这么多东西
- 2024-10-18 Java中字符串连接运算符“+”的困惑
- 2024-10-18 Guava之字符串连接,分割,匹配处理
- 2024-10-18 【老梁聊IT之JAVA篇】StringBuilder的正确使用方法详解
- 2024-10-18 为何Java8中不再需要StringBuilder拼接字符串
你 发表评论:
欢迎- 07-15采用Oracle OSB总线进行服务注册和接入
- 07-15javaEE 新闻管理系统 oracle11+tomcat6
- 07-15从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 07-15如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 07-15【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 07-15【mykit-data】 数据库同步工具(数据库表同步工具)
- 07-15[Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- 07-15Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- 最近发表
-
- 采用Oracle OSB总线进行服务注册和接入
- javaEE 新闻管理系统 oracle11+tomcat6
- 从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 【mykit-data】 数据库同步工具(数据库表同步工具)
- [Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- Oracle数据库云服务系列新增前所未有的企业级功能
- 直播预告丨如何实现Oracle存储过程到java的一键转化
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)