Java:对象初始化

时间:2010-10-22 16:18:02

标签: java

如何解释以下陈述:

Notes bean = null;
bean = new Notes();

小解释会非常有帮助。

6 个答案:

答案 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。