Java:对象初始化

Java:对象初始化,java,Java,如何解释以下陈述: Notes bean = null; bean = new Notes(); 小小的解释会很有帮助 new创建对象的新实例,允许您按预期使用它,例如访问它的方法 bean = new Notes(); null本质上意味着它不引用任何内容,因此您不能使用它的任何方法 bean = new Notes(); 此语句假定您已经删除了Notes类型的名为bean的变量或其任何父类。如果您只运行这一行,它将崩溃,因为它找不到变量“bean” Notes bean = null;

如何解释以下陈述:

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

小小的解释会很有帮助

new创建对象的新实例,允许您按预期使用它,例如访问它的方法

bean = new Notes();
null本质上意味着它不引用任何内容,因此您不能使用它的任何方法

bean = new Notes();

此语句假定您已经删除了Notes类型的名为bean的变量或其任何父类。如果您只运行这一行,它将崩溃,因为它找不到变量“bean”

Notes bean = null;
这里将初始化一个变量“bean”,并使其指向零。变量只是指向内存中对象所在位置的指针

您应该切换这两条语句的顺序,或将它们组合起来,如:

Notes bean = new Notes();

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

Notes bean = null;
bean = new Notes()
这似乎是一个错误:-

可能是:

Notes bean = new Notes();
bean = null;
在这种情况下,它可以用来向垃圾收集器发出信号,表示它必须垃圾处理Bean引用的对象


否则我猜这是个错误。你能发布更多的代码吗?

第一条语句在bean对象上创建一个初始化字段一个Notes对象

notesbean=null,是一个bean引用的声明,它不引用实际的对象,这就是null的含义,引用null意味着不能使用bean及其方法

如果语句位于同一对{}所包围的同一代码块中,程序将无法编译,因为您要声明同一引用两次

bean = new Notes();
这假设您已经声明了一个名为bean的变量。bean的类型必须是Notes或其父类之一,或者是由Notes实现的接口。new关键字和无参数构造函数调用表示创建Notes类型的新对象,变量bean引用该新实例

Notes bean = null;
这声明了一个名为Notes类型bean的变量。它还将变量初始化为null。作为字段的变量在默认情况下初始化为null,除非它们是原语,但本地变量在默认情况下不会初始化为任何内容。因此,这一行显式地将bean初始化为null。

退一步:

    Notes bean;
这是一个没有显式初始化的字段或局部变量声明

字段将使用默认初始值初始化:对象为null,原始数字和字符为0,布尔值为false。 局部变量将保持未初始化状态。在为该变量赋值之前,访问该变量是错误的

正在为字段或变量赋值。在这种情况下,将创建一个新的Notes实例并将*分配给bean。类似于:

    bean = null;          // kind of assigning 'nothing' or 'empty'
    bean = someMethod();  // assigning the value returned by the method
*实际上,它是对分配给bean的实例的引用

是两者的组合:声明字段或变量,并为其赋值初始化它。在本例中,该值为null,这意味着与无实例相同。 这些几乎等同于写作

    Notes bean;
    bean = null;
还可以使用Notes的新实例初始化变量:


如果你能给出上下文,并解释你已经理解了哪些位,哪些位让你感到困惑,这会有所帮助。@Jon:我试图理解创建对象的不同方式,比如第二个语句,如果我没有将其初始化为Null,那么我能使这两个语句等价吗?如果是,那么如何?如果你只是做了Notes bean;'bean'将自动设置为null。我不明白这两种说法怎么能被理解为等同的。你能解释一下吗?你的初始化顺序错了,你可能想把它改写成@robobsugested@shoebox639:局部变量不会自动初始化。在读取之前,您必须明确地指定一个值。那么,如何使第二条语句与第一条语句等效呢;或者只是切换语句的顺序。我不太明白你的意思。新注释永远不能等同于nullyes,但如果我没有将其指向null,那么我可以使这两个语句等效吗?我试图理解对象创建,可能这里给出的示例不好;没有一个等价物。小豆;相当于Notes bean=null;此语句假设您已经初始化[…]->应该声明而不是初始化。@Bruno:您能详细解释一下吗?@shoebox639:我正在创建一个bean作为Notes类的新实例。如果它假设名为bean的变量已经初始化,您能提供更多的解释吗?@Rachel。因为您必须首先声明变量bean。如果没有声明,java将经历编译错误,因为它找不到变量bean。我也把你的两个陈述作为单独的陈述。如果它们不是分开的,那么它们的顺序就错了。@Rachel,声明一个变量就是在对它做任何事情之前给它一个名称,告诉编译器它将被使用, 例如notesbean;。然后就有了设置其值的赋值,例如bean=newnotes;。您可以在一行Notes bean=newnotes;中组合这两个选项;。初始化变量是在与声明相同的语句中或之后对变量进行的第一次赋值。
    Notes bean;
    bean = null;
    Notes bean = new Notes();