我写了程序来反转字符串
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
和""
字符有什么区别?
答案 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
对象。