例如:我创建了一个Node类,里面包含三个private属性previous,obj跟next;为什么我用Node node=null;然后node.setObj(obj)就会报nullPointer的错误。而用Node node=new Node(); 然后再node.setObj(obj)就不会报错。
Object obj=null; 只在栈中创建一个变量 无指向的对象 在堆中不分配内存
Object obj=new Object();栈中创建一个变量 在堆中给他创建了一个对象(分配内存) 变量指向这个对象
Object obj=null;
相当于
Object obj;
Object obj=new Object();
相当于
Object obj;
obj = new Object();
楼上说的很对,就是有没有分配内存地址的区别
通俗一点说就是 Object obj=null; 相当于说了一句 我要造一栋名为obj的房子 Object obj=new Object();相当于我已经造好了一栋名为obj的房子
内存分为栈区和堆区,栈区主要是存放引用,堆区主要是存放真实的数据,所以第一个主要是通知编译器有这么个引用,但还没有指向真实的数据,而第二个则是通知了也指向了真实的数据
Object obj=null; 没有创建对象,会报空指针异常
Object obj=new Object();创建了对象,并分配内存
不new就没有对象啊 只是声明了而已