关于null、“”、“null”的一个问题
这个问题在论坛发过一次,这里记录一下吧。
就是一个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=nullif (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对象