当我看到这段代码时,我对java字符串的理解出错了。我不知道这是怎么回事。有人能解释一下为什么吗?
public class NewClass {
public static void main(String[] args) {
String str=null;
System.out.println(str+"Added");
}
}output:nullAdded
发布于 2009-11-11 14:38:07
字符串连接将空引用视为Java中的“空”引用。来自文档 for StringBuilder.Append(String)
字符串参数的字符按顺序添加,以参数的长度来增加序列的长度。如果str为null,则追加四个字符"null“。
基本上,您的代码类似于:
public class NewClass {
public static void main(String[] args) {
String str=null;
System.out.println(new StringBuilder().append(str)
.append("Added")
.toString());
}
}这能让事情更清楚吗?
发布于 2009-11-11 14:38:20
当您使用+运算符时,两个操作数都通过String.valueOf方法转换为字符串(如果需要)。这将返回空引用的四个字符字符串" null“,而不是实际的空引用。
因此,null + "Added"等于"null" + "Added",因此也等于"nullAdded"。
发布于 2009-11-11 14:39:32
您可能要做的是用空字符串初始化字符串:
String str = "";https://stackoverflow.com/questions/1715533
复制相似问题