在我的程序中,我使用字符串,如下所示:
String s1=null;
和String s1=new Sting();
稍后我会更改s1="Demo Test"
的某些字符串。任何人都可以指导我哪种方式最好使用字符串?
答案 0 :(得分:1)
String s1 = new String();
完全没有意义,因为你所做的只是创建一个额外的String
实例,以后会被丢弃。
String s1 = null;
很好,但如果你在使用适当的值初始化之前没有使用变量,则没有必要 一个简单的
String s1;
通常会做得很好。
答案 1 :(得分:0)
第二个选项
String s1=new Sting();
会创建一个新的空字符串。它可能需要更多的内存和CPU时间,但除非你做了数万次的相同操作,否则你不会注意到差异。
另一方面,在第二个选项中,字符串存在,您可以使用它来填充它,例如将另一个字符串连接到它:
s1 = s1 + " bla bla";
如果您使用第一个选项:
String s1=null;
s1 = s1 + " bla bla";
你会得到一个NullPointerException。
除此之外,我看不出任何差异。
答案 2 :(得分:0)
我的理解是,当您使用新的String()创建一个字符串对象时,它会创建一个空字符串。
请参阅Java doc http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
public String()初始化一个新创建的String对象,以便它 表示空字符序列。注意使用这个 因为字符串是不可变的,所以构造函数是不必要的。
使用String时s1 = null;但是它会创建一个指向任何内容的String变量。因此,在实际为s1赋值之前,不能像s1.length那样调用它(这会产生NullPointerException)。
答案 3 :(得分:0)
如果要在循环或条件情况下修改String并且需要括号外的结果,则可能需要使用String s1 = null;
例如:
boolean test = true;
String s1 = null;
if (test) {
s1 = "true";
} else {
s1 = "false";
}
System.out.println("Results is: " + s1);
如果在条件之前没有将s1定义为null,则打印时会出错