Java字符串的默认值:null vs“”

时间:2015-05-18 03:34:29

标签: java string

Java String的默认值为“null”。但是,当我实例化字符串时,它似乎是一个空字符串。有人可以解释一下吗?

class Stuff
{
    String a;
    String b = new String();
}

class Demo
{
    public static void main( String[] args )
    {
       Stuff s = new Stuff();
       System.out.println( s.a );
       System.out.println( s.b );

       if( s.b.equals( "" ) )
       {
            System.out.println( "true" );
       }
    }
}

3 个答案:

答案 0 :(得分:2)

String()构造函数Javaodc说,

  

初始化新创建的String对象,使其表示空字符序列。请注意,由于字符串是不可变的,因此不需要使用此构造函数。

符合您观察到的行为。

答案 1 :(得分:2)

在java中,默认字符串或设置为null的字符串没有值。通过使用“”或new String()设置字符串,它将创建String类的新实例。用“”或new String()启动的字符串只是准备使用的字符串。我想你可以把它想象成一个杯子。如果某些东西是空的,你没有杯子,但如果这个字符串之类的东西被启动为new String()或“”你现在有一个空杯子。

答案 2 :(得分:0)

嗯,字符串b不再是null,因为您创建了String并将其分配给变量。

如果您使用String的默认构造函数,则会得到一个空的String

  

public String()

     

初始化一个新创建的String对象,使其代表一个   空字符序列。请注意,使用此构造函数是   因为字符串是不可变的,所以不必要。

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#String()