java 为什么说,不推荐使用+来连接字符串详解编程语言
2023-06-13 09:11:52 时间
在java中,有个说法,不推荐使用+来连接字符串,这是为什么呢?
来段测试代码
这是源代码
String s = "a"+"b"+"c"; for(int i=0; i 10; i++){ s=s+"a"+"b"; s= s+"a"+"b"+s; }
编译为class文件后,再使用jad反编译后,看看编译器对代码干了什么,如下
String s = "abc"; for(int i = 0; i 10; i++) s = (new StringBuilder()).append(s).append("a").append("b").toString(); s = (new StringBuilder()).append(s).append("a").append("b").append(s).toString(); }
得出几个结论
String s = "a"+"b"+"c"; 变成了 String s = "abc"; 如果连接字符串的都是字面量常量,那么编译器会做优化,将它变为连接后的字符串常量。 s=s+"a"+"b"; 变成了 s = (new StringBuilder()).append(s).append("a").append("b").toString(); 如果拼接字符串中有任何一个是变量,那么就会创建StringBuilder,使用StringBuilder来append字符。可以看到如果在一个循环中,循环次数可观的情况下,会创建大量的StringBuilder,循环完毕就会回收,白白浪费内存。
综上所述,在有变量并且循环中不推荐使用+号
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20260.html
cgojavaxml相关文章
- JAVA多线程面试题_java多线程的实现方式
- java数组反转,Java数组反转
- java高级工程师面试情景题_Java高级工程师面试题III
- java定时器实例_Java定时器小实例
- java executeupdate_Java自学-JDBC execute与executeUpdate的区别
- java socket详解_Java Socket 编程原理及教程「建议收藏」
- Java接口是什么意思_JAVA接口
- Java远程连接Linux服务器并执行命令及上传文件详解编程语言
- java 检测 Java 是否运行在64bit 的JVM上详解编程语言
- java Android 检查当前是否已经连接上 Internet详解编程语言
- Java 连接MS Access数据库详解编程语言
- Java学习笔记之六java三种循环(for,while,do……while)的使用方法及区别详解编程语言
- Java连接Redis (key-value存储系统)详解编程语言
- Java操作MySQL数据库:实现看似不可能的梦想(java连接mysql数据库)
- 解决Java程序连接MySQL的准确方案:Java连接MySQL的Jar包(java连接mysql的jar包)
- Java实现MSSQL数据库连接(java连接mssql)
- 解锁Java 与 Oracle 的连接之门(java连接oracle)
- Java连接MySQL:实现数据库操作(java中连接mysql)
- 使用Java连接SQL Server数据库,轻松实现数据交互(java连sqlserver)
- Java和Redis的配合安装方法(java redis安装)
- Java搭配MySQL,实现创新跳跃的可能(java 与mysql)
- 秘籍学习实现纯Java版Redis(纯java版redis)
- Java配置Oracle实现稳定的跨平台数据库连接(java配置oracle)
- 一部分Oracle驱动Java的成功之路(java是oracle的)