接触Java到如今总的来讲时间也不算短,发现身边的一些朋友对String字符串链接符或多或少存在误解(可能我理解的也不对,欢迎指正),随便写写本身的一些观点app
Java对比C++少了运算符重载,字符串链接符"+"底层实现是经过StringBuffer和StringBuilder来实现的。在Java中拼接字符串要么用字符串链接符"+",要么用StringBuffer或StringBuilder,许多人纠结这两种方式的效率问题。ui
先说说下面的这种状况:spa
String str = "Hello "+"world "+"!";内存
这种静态字符串连接,编译的时候编译器会自动将之看做:String str = "Hello world !",比之以下代码效率要高不少。字符串
StringBuffer strBuffer = new StringBuffer();编译器
strBuffer.append("Hello ");编译
strBuffer.append("world ");效率
strBuffer.append("!");时间
对于动态字符串StringBuffer的效率比字符串链接符效率要高。字符
strBuffer.append(String.valueOf(new Date()));比str=str+String.valueOf(new Date());执行效率和内存消耗都小不少。
连接静态字符串,建议用字符串链接符,连接动态字符串建议使用StringBuffer或StringBuilder。