2014-08-28 36 views

回答

1
String s1 = new String(); 

是完全没有意义的,因为所有你正在做的是创造String一个额外的实例将在稍后丢弃。

String s1 = null; 

很好,但如果在使用正确的值初始化之前未使用该变量,则不是必需的。
简单

String s1; 

通常会做得很好。

+0

'字符串S1时,'='字符串S1 = NULL ;'在方法范围内。 – 2014-08-28 12:09:24

+0

@Peter:不,它肯定不是。我添加了一些更多的信息(希望)澄清。 – Keppil 2014-08-28 12:12:32

0

第二个选项

String s1=new Sting(); 

将创建一个新的空字符串。它可能需要更多的内存和CPU时间,但除非您做相同的操作数万亿次,否则您不会注意到其中的差异。

在另一方面,在第二个选项字符串存在,你可以用它做的东西,例如拼接另一个字符串给它:

s1 = s1 + " bla bla"; 

如果使用第一个选项:

String s1=null; 
s1 = s1 + " bla bla"; 

你会得到一个NullPointerException。

除此之外,我可以看到没有区别。

0

我的理解是,当你使用新的String()创建一个字符串对象时,它会创建一个空字符串。

请参阅Java文档http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

公共字符串()分配一个新的String对象,它 表示空字符序列。请注意,由于字符串是不可变的,所以不需要使用此构造函数。

当您使用String s1 = null;但它会创建一个指向无效的String变量。因此,您不能像s1.length那样调用它(这会导致NullPointerException),直到您实际将值赋给s1。

0

如果你要修改字符串在一个循环或在有条件的情况下,需要在括号外的结果,您可能需要使用字符串S1 = NULL;

例如:

boolean test = true; 
String s1 = null; 
if (test) { 
    s1 = "true"; 
} else { 
    s1 = "false"; 
} 
System.out.println("Results is: " + s1); 

如果没有定义S1的条件之前是零,你将有一个错误的打印