String字符串拼接符 “+”底层原理
程序员文章站
2022-05-30 09:15:43
...
-
字符串常量的拼接
原因:JVM编译器对字符串做了优化,在编译时str3就已经被优化成“hello Word!”,str3和str4指向字符串常量池同一个字符串常量,所以==比较为true。String str3="hello"+" word!"; String str4="hello word!"; System.out.println(str3==str4); //运行结果:true
-
字符串+字符串变量、字符串变量之间的拼接。
String str1="hello"; String str2=" word!"; String str3="hello word!"; String str4=str1+"word!"; System.out.println(str3==str4); //运行结果为false
原因:字符串拼接时如果有字符串变量参与拼接,底层调用了StringBuffer可变字符串处理。代码如下StringBuffer sb=new StringBuffer(""); sb.append(str1); sb.append("word!"); str4= sb.toString(); //StringBuffer的toString()方法底层new了一个String对象,所以str4在堆内存中重新开辟了空间, //str3指向常量池,所以为false
推荐阅读
-
详解.NET中string与StringBuilder在字符串拼接功能上的比较
-
js最实用string(字符串)类型的使用及截取与拼接详解
-
String字符串相加的原理
-
Java中拼接字符串String的N种方法总结
-
Java中拼接字符串String的N种方法总结
-
C++ string类和字符串的访问和拼接操作
-
Python输出格式化 格式化字符串语法 format f-string 格式化操作符% 数据类型转换 对齐方式 转换标志字符
-
字符串拼接的5种方法 +(底层实现原理)
-
C#:如何把List
转换成以某个分隔符连接的字符串? -
详解.NET中string与StringBuilder在字符串拼接功能上的比较