区别是:String s ;该语句表示只是声明了一个引用变量,但是并没有初始化引用,所以对变量s的任何操作(除了初始化赋值外) 都将引发异常。String s=null; 表示未申请任何内存资源,即些语句表示声明了一个引用变量并初始化引用,但是该引用没有指向任何对象。
String s ;该语句表示只是声明了一个引用变量,但是并没有初始化引用,所以对变量s的任何操作(除了初始化赋值外) 都将引发异常。
String s=null; 表示未申请任何内存资源,即些语句表示声明了一个引用变量并初始化引用,但是该引用没有指向任何对象.但可以把它作为参数传递或其它使用,但是不能调用它作为对象的方法。
“”是一个空字符串,即String类的对象具有0个字符。 null表示缺少对对象的引用。
当将null引用附加到字符串时,null引用将转换为值为”null”的String。因此,如果打算附加两个String,则应确保它们都不是null(假设您不希望输出包含”null”字符串)。
但是,使用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());
null表示变量根本没有指向任何对象。 “”是包含零个字符的String对象的表示。
String s = null; // no refrences to it at all
String s1 =””;
s.trim()// NullPointerException
s1.trim()// will give””
基本上,如果任何字符串为空,我们都使用””,因此对其进行任何操作,即对其调用方法将不会产生NPE。
虽然null是关键字,但如果对其执行任何操作,则将赋予NPE。完全没有引用。
延伸阅读:
什么是String?
string是C++、java、VB等编程语言中的字符串,字符串是一个特殊的对象,属于引用类型。 在java、C#中,String类对象创建后,字符串一旦初始化就不能更改,因为string类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。对String类的任何改变,都是返回一个新的String类对象。 C++标准库中string类以类型的形式对字符串进行封装,且包含了字符序列的处理操作。
String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象。这样的话把String类的引用传递给一个方法,该方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似。
文章标题:String s;和String s=null;区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37856