请问Object obj=null;跟Object obj=new Object();有什么区别

例如:我创建了一个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就没有对象啊 只是声明了而已