关于String的初始化和实例化
实例化一般是由类创建的对象,在构造一个实例的时候需要在内存中开辟空间。 例如以下代码:
String a;
String b = new String();
这两种已经创建一个String对象,并完成了实例化。但是他们两者有什么不同呢?下面便进项测试
public class Pianweny {
public static void main(String[] args) {
//第一种在运行前报错
//错误提示是:局部变量 a 可能尚未初始化
String a;
a.length();
//第二种在运行时报错
//错误为:NullPointerException
String b = null;
b.length();
//第三种正常运行,值为0
String c = "";
c.length();
//第四种正常运行,值为0
String d = new String();
d.length();
}
}
这四种都将对象实例化了,实例化用通俗的话说就是将一个虚无的东西起个名字,但是并没有实体。
初始化是实例化的基础上,并且对 对象中的值进行赋一下初始值。很显然一个对象没有被实例化必不可能被初始化。
然后我们分析一下上面代码的四种情况。
第一种情况便是未初始化,所以在其他地方使用它的时候便是报出可能尚未初始化的错误(就像一个没有实体的东西自然无法使用)。
第二种情况的b已经被初始化了,不过初始化的值为null,也就是空值。但是该引用没有指向任何对象.但可以把它作为参数传递或其它使用,但是不能调用它作为对象的方法。
第三种和第四种都完成初始化,并且初始化的值都为“”,也就是空字符串。二者也有一定的区别,区别是什么就不在这里提及,在其它博客中会有更详细的说明。