JAVA中的String类--字符链接运算符“+”
来源:互联网 发布:linux 局域网 编辑:程序博客网 时间:2024/06/01 17:15
关于“+”运算符,不同的平台实现上可能会有不同:
1、官方JDK1.7的实现:当使用“+”时,会创建一个临时的StringBuilder对象,该对象调用append()方法负责字符串的链接,然后调用toString()方法转化成字符串String对象。
String str=new String("this is str");str=str+"!"//等价下面的//str=new StringBuilder().append(str).append("!").toString();System.out.println(str);
2、Eclipse上的实现
不同的编译器在处理运算符“+”时会略有不同,如果“+”左边的操作数是基本数据类型或者String类型时,处理过程是:
int s1=10;//String str=s1+"!";String str=new StringBuilder(String.valueOf(s1)).append("!").toString();
3、使用运算符“+”链接两个字符串时,若两个都是编译时字符串常量,那么在编译时就会进行连接。
String str1="abc"+"cse";//运行时不创建String str2="cde"+str1;//运行时创建String str3=str1+str2;//运行时创建
4、关于“+”的性能
这里给出一个判断其性能的程序,因为“+”会常见临时对象,所以在使用次数比较多时对性能有很大影响。
public class main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub long start,stop; String str1=""; String str2=""; start=System.nanoTime(); for (int i = 0; i < 10000; i++) { str1=str1+i; } stop=System.nanoTime(); System.out.println("use \"+\""+(stop-start)); start=System.nanoTime(); StringBuilder stringBuilder=new StringBuilder(); for (int i = 0; i < 10000; i++) { stringBuilder.append(i); } str2=stringBuilder.toString(); stop=System.nanoTime(); System.out.println("do not use \"+\""+(stop-start)); }}
0 0
- JAVA中的String类--字符链接运算符“+”
- Java中的转义字符和运算符
- 【C++】String类中的运算符重载
- 黑马程序员-----转义字符、String类、运算符
- String中的字符串链接符
- java如何修改String中的一个字符
- java 练习题 String运算符+
- java String的+运算符
- java String运算符+反编译
- 第八周项目四 String类中的运算符重载
- java中的“%”运算符
- JAVA中的运算符
- java中的运算符
- java中的运算符
- java中的运算符
- Java中的运算符
- Java中的运算符
- JAVA中的运算符
- HDU 4265 Science! 网络流解多重匹配,输出所有比配可能
- redhat使用163的yum源
- iOS新手引导页的实现,源码
- java8新特性
- 重拾编程之路--冒泡排序算法
- JAVA中的String类--字符链接运算符“+”
- Struts+Hibernate常用工具类
- IOS(UI)_AutoLayout(自动布局)01
- org.hibernate.MappingException: duplicate property mapping:
- 搭建树莓派python开发环境
- WPF Popup 窗体弹出瞬间看到桌面背景
- 项目管理3-项目经理需要坚持的原则
- Python 面向对象
- 重拾编程之路--插入排序算法