繁体   English   中英

Java:对象初始化

[英]Java : Object Initialization

如何解释以下陈述:

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

小小的解释将非常有帮助。

您确定指令的顺序不是相反的吗?

Notes bean = null;
bean = new Notes()

似乎是一个错误:-)

可能是:

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

在这种情况下,它可以用于向垃圾收集器发出信号,表明它必须对Bean引用的对象进行垃圾处理。

否则我猜错了。 您可以发布更多代码吗?

退后一步:

    Notes bean;

这是没有显式初始化的字段或局部变量声明。

字段将使用默认初始值初始化:对象为null ,原始数字和char为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();

new创建对象的新实例,使您可以按预期使用它(例如访问其方法)

null本质上意味着它不引用任何内容(因此您不能使用其任何方法)

bean = new Notes();

该语句假定您已经将名为Notes类型的bean(或其任何父类)的变量传递给了其他用户。如果仅运行此行,它将因找不到变量'bean'而崩溃。

Notes bean = null;

这里将初始化变量“ bean”,并使其指向无。 变量只是指向内存中对象将要驻留的位置的指针。

您应该切换这2条语句的顺序,或将它们组合在一起,例如:

Notes bean = new Notes();

第一条语句在Bean对象(一个Notes对象)上创建一个初始化字段,

Notes bean = null ,是不引用实际对象的bean引用的声明(这是null的含义),引用null意味着您不能使用bean及其方法。

如果语句在同一代码块(由同一对{}包围)内,则该程序将无法编译,因为您两次声明了相同的引用。

bean = new Notes();

假设您有一个已经声明的名为“ bean”的变量。 bean的类型必须是Notes或其父类之一,或者是Notes实现的接口。 “ new”关键字与无参数构造函数调用一起表示创建了Notes类型的新对象,并且变量Bean引用了该新实例。

Notes bean = null;

这将声明一个名为Notes的名为“ bean”的变量。 它还将变量初始化为null。 作为字段的变量默认情况下初始化为null(除非它们是基元),但是默认情况下局部变量不初始化为任何东西。 因此,此行将bean显式初始化为null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM