关于null、“”、“null”的一个有关问题
关于null、“”、“null”的一个问题
这个问题在论坛发过一次,这里记录一下吧。
就是一个a=null那打印a会是什么呢?
结果是"null"字符串。
有人说原因是
对String的+操作实际上是通过StringBuilder实现的,也就是append方法
该方法会将将null转换为“null”字符串,所以得到的结果是c="null"
在我的印象中:String的“+”操作会重新创建一个String对象,所以做大量字符串拼接的时候,为了优化性能得改用StringBuffer。
但我也没看过JVM源码,也看不懂。我说的也不一定对,或许你说的是对的。
在我的印象中:String的“+”操作会重新创建一个String对象,所以做大量字符串拼接的时候,为了优化性能得改用StringBuffer。
但我也没看过JVM源码,也看不懂。我说的也不一定对,或许你说的是对的。
<去这看一下,你应该有收获,我也是当时问了一下才大概明白的,你说那个情况应该也没什么问题,原来我也是这样理解的>http://www.iteye.com/problems/65463
在我的印象中:String的“+”操作会重新创建一个String对象,所以做大量字符串拼接的时候,为了优化性能得改用StringBuffer。
但我也没看过JVM源码,也看不懂。我说的也不一定对,或许你说的是对的。
<去这看一下,你应该有收获,我也是当时问了一下才大概明白的,你说那个情况应该也没什么问题,原来我也是这样理解的>http://www.iteye.com/problems/65463
String的“+”操作是通过StringBuffer将两字符串拼接在一起,然后再调用toString方法构造一个新的String对象
这个问题在论坛发过一次,这里记录一下吧。
就是一个a=null那打印a会是什么呢?
结果是"null"字符串。
有人说原因是
对String的+操作实际上是通过StringBuilder实现的,也就是append方法
该方法会将将null转换为“null”字符串,所以得到的结果是c="null"
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; public class testNull { /** * @param grossofans */ public static void main(String[] args) { String a = null; String b = ""; String c = b + a; // null+""=null ""+null=null if (c == null) { System.out.println("null 空"); } if ("null".equalsIgnoreCase(c)) { System.out.println("null 字符串"); } if ("".equalsIgnoreCase(c)) { System.out.println("空字符串"); } System.out.println(c == null); System.out.println(a == null); String bb = "|"; String aa = null; Integer i = null; Object o = null; boolean s1 = true; boolean s2 = false; String cc = aa + bb + i + bb + o + bb + null + bb + s1 + bb + s2; System.out.println(cc); } }
1 楼
JeffLan
2011-10-12
引用
对String的+操作实际上是通过StringBuffer实现的,也就是append方法
在我的印象中:String的“+”操作会重新创建一个String对象,所以做大量字符串拼接的时候,为了优化性能得改用StringBuffer。
但我也没看过JVM源码,也看不懂。我说的也不一定对,或许你说的是对的。
2 楼
grossofans
2011-10-13
JeffLan 写道
引用
对String的+操作实际上是通过StringBuffer实现的,也就是append方法
在我的印象中:String的“+”操作会重新创建一个String对象,所以做大量字符串拼接的时候,为了优化性能得改用StringBuffer。
但我也没看过JVM源码,也看不懂。我说的也不一定对,或许你说的是对的。
<去这看一下,你应该有收获,我也是当时问了一下才大概明白的,你说那个情况应该也没什么问题,原来我也是这样理解的>http://www.iteye.com/problems/65463
3 楼
JeffLan
2011-10-13
grossofans 写道
JeffLan 写道
引用
对String的+操作实际上是通过StringBuffer实现的,也就是append方法
在我的印象中:String的“+”操作会重新创建一个String对象,所以做大量字符串拼接的时候,为了优化性能得改用StringBuffer。
但我也没看过JVM源码,也看不懂。我说的也不一定对,或许你说的是对的。
<去这看一下,你应该有收获,我也是当时问了一下才大概明白的,你说那个情况应该也没什么问题,原来我也是这样理解的>http://www.iteye.com/problems/65463
String的“+”操作是通过StringBuffer将两字符串拼接在一起,然后再调用toString方法构造一个新的String对象