JAVA的“引用”or“指针”?

发布于 2021-08-31  331 次阅读


JAVA语言明确说取消了指针,如果当你定义指针时不进行初始化,他会出现乱指的情况,也就是野指针,但是在java里默认指向的是null,既然JAVA里都已经叫做引用了,为什么我还有这样的疑问呢?

当我今天随意编写了一个类,进行测试时,不小心删除了一行代码,然后当我运行就发现了一种错误“NullPointerException”,空指针异常,我突然想起曾经有人和我说过的一句话,JAVA里是没有指针的,既然没有指针,为什么会报出空指针异常的错误?这是我的源码,Animal是我测试用的一个类,可以在讲java类的那篇文章看到。

public class Test {
public static void main(String[] args) {
int n=5;
Animal[] a=new Animal[n];
for (Animal animal:a
) {
System.out.println(animal.move());
}
}
}

上述的错误就在于我没有给每一个对象引用实例,直接输出,出现了空指针异常的错误,所以我产生了一种疑问,有没有可能JAVA中的引用只是一种封装好的,更安全的指针,在JAVA里一切皆对象,我们直接用的类都是JAVA写好的,那有没有可能这里的引用也是JAVA封装好的一种指针,从地址传递变成了值传递,切初始化后不可修改,这样会使操作指针的程序要少了很多担心,毕竟C中的指针是可以随便乱指的,这样一个封装好的指针是更具有安全性,更加便于使用的,所以在我的理解看来,JAVA中不是没有指针,而是给了我们一种封装好的指针,更安全,更实用,降低了灵活性,提高了安全性和实用性。

以上仅代表个人观点,我只是谈谈我个人的理解,也可能是因为我刚刚入门学的太少,了解得不够深入,所以说错什么。如有错误,欢迎指正~

就酱~


星星温柔泛滥,人间至善