在java中使用这些字符串有什么不同吗?

时间:2014-08-28 12:05:30

标签: java string

在我的程序中,我使用字符串,如下所示:

  1. String s1=null;
  2. String s1=new Sting();
  3. 稍后我会更改s1="Demo Test"的某些字符串。任何人都可以指导我哪种方式最好使用字符串

4 个答案:

答案 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,则打印时会出错