一个引用变量没有通过new分配内存空间,这个对象就是空对象,Java使用关键字null表示空对象。
示例代码如下:
String name = null;
name = "Hello World";
引用变量默认值是null。当试图调用一个空对象的实例变量或实例方法时,会抛出空指针异常 NullPointerException,如下代码所示:
String name = null;
//输出null字符串
System.out.println(name);
//调用length()方法
int len = name.length();
但是代码运行到调用length()方法时,系统会抛出异常。这是因为调用length()方法时,name是空对象。应避免调用空对象的成员变量和方法,代码如下:
//判断对象是否为null
if (name != null) {
int len = name.length();
}
重点来了
但是Java中空对象调用函数一定会崩溃吗?答案是否定的
直接看例子:
public class TestDemo {
public static void func() {
System.out.println("This is func()...");
}
public static void main(String[]args) {
TestDemo tDemo = null;
tDemo.func();//放心吧,这行代码不会崩溃的,其实等价于TestDemo.func();
}
}
func()是类TestDemo的静态方法,也属于类的成员方法。通常使用类名作为调用者来调用类的静态方法,其实也可以使用类对象来调用类的静态方法,其效果是完全一样的。当使用实例对象调用类的静态方法时,实际上是委托给类来访问调用的,此时即使这个实例对象是空的,它也可以访问到这个静态成员方法,而不发生空指针异常崩溃。但是一般不推荐这样使用,还是用类名称来直接调用类的静态方法吧。
以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!