String s =“”和String s = null之间的区别

时间:2015-07-19 11:18:33

标签: java

我写了程序来反转字符串

String original = "hello";
String rev = "";
for (int i = original.length() - 1; i >= 0; i--) {
    rev += original.charAt(i);
}
System.out.println("Reversal:" + rev);

输出为:Reversal:olleh

但是,当我将String rev=""重写为String rev =null

我得到的输出为Reversal:nullolleh

null""字符有什么区别?

3 个答案:

答案 0 :(得分:3)

""是一个空字符串,即具有0个字符的String类的对象。 null表示缺少对象的引用。

当您向字符串追加null引用时,null引用会转换为String,其值为"null"。因此,如果您打算附加两个String,则应确保它们都不是null(假设您不希望输出包含"null"字符串)。< / p>

但是,使用StringBuilder是连接String的首选方法(尽管编译器在遇到String连接运算符+时仍可执行此优化):

String original = "hello";
StringBuilder rev = new StringBuilder();
for (int i = original.length() - 1; i >= 0; i--) {
    rev.append (original.charAt(i));
}
System.out.println("Reversal:" + rev.toString());

答案 1 :(得分:2)

String s = null; // no refrences to it at all
String s1 = "";
s.trim()// NullPointerException
s1.trim()// will give ""

基本上我们使用""如果任何字符串为空,那么对它进行任何操作,即调用它上面的方法不会给NPE。 虽然null是一个关键字,但如果对它执行了任何操作,则会给NPE。根本没有提及它。

答案 2 :(得分:2)

null表示您的变量根本没有指向任何对象。 ""表示包含零个字符的String对象。