Java 在声明对象为null后为成员变量赋值时出错

Java 在声明对象为null后为成员变量赋值时出错,java,object,nullpointerexception,Java,Object,Nullpointerexception,我是Java新手,遇到以下情况时出错: markerObj = null; markerObj.sections = RowData[1]; 但是,在删除第一行之后,它可以正常工作。 问题是什么?这正是它应该做的。 通过将null赋值给变量,可以明确表示它不再绑定到实例 因此,当您在代码中引用节时,您引用的是一个不存在的实例的节成员。您试图访问空对象的成员。。这就是问题所在 如果您想要一个新实例。。 然后执行以下操作 markerObj = new objectClassName(); 将值

我是Java新手,遇到以下情况时出错:

markerObj = null;
markerObj.sections = RowData[1];
但是,在删除第一行之后,它可以正常工作。
问题是什么?

这正是它应该做的。
通过将
null
赋值给变量,可以明确表示它不再绑定到实例


因此,当您在代码中引用
节时,您引用的是一个不存在的实例的
节成员。

您试图访问空对象的成员。。这就是问题所在

如果您想要一个新实例。。 然后执行以下操作

markerObj = new objectClassName();

将值分配给对象的字段,该字段由
marketObj
引用。但是,由于
markerObj
不引用任何对象(它被设置为
null
),因此无法进行赋值,您将得到一个NullPointerException。如果不希望出现异常,应首先将对象分配给
marketObj

如果将对象标记为null,则无法将值分配给其成员变量。

问题是,一旦您说
markerObj=null
它将内存指向null,即它不会向其启动任何内存对象。因此,您会得到一个空指针错误

顺便说一下,如果您试图将其值实例化为null,那么请尝试将其内部数据属性设置为null,例如
TextView.setText(null)


也许它因您使用的类而异。请访问。

变量名只是引用。它们指向内存中(堆中)包含对象的空间

当您执行
MyObj myObject=new MyObj()时,它做两件事:在内存中创建对象,并将myObject引用指向它。
因此,当您执行
myObject.sections
时,它会跟随引用,并检查内存中对象的sections部分

然后,当您执行
myObject=null
时,基本上会破坏引用和内存中对象之间的链接。因此,当执行
myObject.sections
时,Java不能再遵循引用,因为它没有指向任何东西。因此它抛出一个
NullPointerException


请注意,对象本身未被
myObject=null
破坏,只有引用无效。垃圾收集器随后检测到您的对象不可访问(如果没有其他引用),并回收内存,销毁该对象。

这是Java问题,不是Android特有的。我想把这张海报交给图书馆。