如何解释以下陈述:
Notes bean = null;
bean = new Notes();
小解释会非常有帮助。
答案 0 :(得分:4)
你确定指令的顺序不是相反吗?
Notes bean = null;
bean = new Notes()
这似乎是一个错误: - )
也许可能是:
Notes bean = new Notes();
bean = null;
在这种情况下,它可用于向垃圾收集器发出信号,告知它必须删除Bean引用的对象。
否则我认为这是一个错误。你能发布更多代码吗?
答案 1 :(得分:1)
后退一步:
Notes bean;
这是一个没有显式初始化的字段或局部变量声明。
将使用默认初始值初始化字段:对象为null
,原始数字和字符为0
,布尔值为false
。
局部变量将保持未初始化状态。在为其分配值之前访问此类变量是错误的。
bean = new Notes();
正在为字段或变量赋值。在这种情况下,会创建一个新的Notes
实例,并将 * 分配给bean
。类似于:
bean = null; // kind of assigning 'nothing' or 'empty'
bean = someMethod(); // assigning the value returned by the method
*实际上它是对分配给bean
的实例的引用
Notes bean = null;
是两者的组合:声明一个字段或变量,并为其赋值(初始化它)。在这种情况下,值为null
,这意味着与没有实例相同
这几乎相当于写作
Notes bean;
bean = null;
该变量也可以使用Notes
的新实例初始化:
Notes bean = new Notes();
答案 2 :(得分:0)
new创建对象的新实例,允许您按预期使用它(例如访问其方法)
null本质上意味着它不引用任何内容(因此你不能使用它的任何方法)
答案 3 :(得分:0)
bean = new Notes();
这个陈述假设你已经开始了一个名为bean的类型为Notes的变量(或者它的任何父类。如果你只是单独运行这行,它会爆炸,因为它找不到变量'bean'
Notes bean = null;
这里将初始化一个变量'bean'并让它指向任何东西。变量只是指向对象所在内存中某个点的指针。
您应该切换这两个语句的顺序,或者像下面这样组合:
Notes bean = new Notes();
答案 4 :(得分:0)
第一个语句在bean对象(一个Notes对象)上创建一个初始化字段,
Notes bean = null
,是一个bean引用的声明,它不引用实际的对象(这就是null的意思),引用null意味着你不能使用bean及其方法。
如果状态字符在相同的代码块内(由同一对{}
包围),则程序将无法编译,因为您将两次声明相同的引用。
答案 5 :(得分:0)
bean = new Notes();
这假设您有一个已经声明的名为“bean”的变量。 bean的类型必须是Notes或其父类之一或Notes实现的接口。 “new”关键字和无参数构造函数调用表示创建Notes类型的新对象,变量bean引用该新实例。
Notes bean = null;
这声明了一个名为“bean”的变量,类型为Notes。它还将变量初始化为null。默认情况下,字段变量初始化为null(除非它们是基元),但默认情况下局部变量不会初始化为任何值。因此,这一行显式地将bean初始化为null。