2014-02-19 53 views
3

当我执行下面的代码时,输​​出是“nullHelloWorld”。 Java如何处理null?为什么空值出现在字符串输出中?

import java.util.*; 
import java.lang.*; 
import java.io.*; 

/* Name of the class has to be "Main" only if the class is public. */ 
class Ideone 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     String str=null; 
     str+="Hello World"; 
     System.out.println(str); 
    } 
} 
+0

运行代码;-) –

+0

+1:滥用字符串连接规则:)我不知道。 –

回答

12

您正试图将值连接到null。这是由“字符串转换”,当一个操作数是String发生,支配和被覆盖the JLS, Section 5.1.11

现在仅为参考值需要考虑:

  • 如果引用null,它将转换为字符串“null”(四个ASCII字符n,u,l,l)。
+0

对于那些在这里寻找一种方法来在开始时摆脱这个'null',简单的方法是用空字符串'''''而不是'null'来初始化你的变量。 – Pshemo

6

当你试图通过+运营商Concat的null,它有效地包含"null"一个String取代。

这个一个很好的事情是,这样一来可以避开NullPointerException,你会得到,否则,如果你明确要求在null变量.toString()方法。

0

Java将null视为无,它是String的默认值。它出现在您的字符串输出中,因为您使用+=将“Hello World”添加到str

String str=null; 
str+="Hello World"; 
System.out.println(str); 

你基本上是告诉Java的:给我str变量String类型和分配值null;现在向变量str添加并分配(+=String“Hello World”;现在打印出str

相关问题