gpt4 book ai didi

java - 使用 null 或默认构造函数初始化对象之间的区别

转载 作者:行者123 更新时间:2023-11-29 03:10:19 24 4
gpt4 key购买 nike

假设我们有一个类,它只包含一个实例变量 并且它的类型是引用类型。我们没有实现任何构造函数,所以类有它的默认构造函数。

如果我理解正确的话,默认构造函数会为实例变量提供默认值,而引用类型的默认值为 null。是真的吗?

如果是,我们要创建一个这个类的对象。声明和初始化此类对象的这两种语句有什么区别吗?

Class object = null;

Class object = new Class();

最佳答案

Is there any difference between these two statements for declare and initialize an object of this class???

Class object = null;

and

Class object = new Class();

第一个初始化类的对象,它只是声明一个变量并将null 赋值给它。没有实例,因此没有实例字段。

第二个初始化类的实例,因此初始化它具有的任何实例字段。如果这些字段中的任何一个是引用,并且您尚未实现构造函数,它们将被初始化为 null

让我们用一个具体的例子:

class Foo {
String str;
}

因为 str 是一个引用,如果我们创建 Foo 的实例,str 将被初始化为 null .

您的第一个语句(更改 Class => Fooobject => f 以避免混淆):

Foo f = null;

...在内存中的结果:

+----------------+| f (a variable) |+----------------+| null           |+----------------+

Your second statement:

Foo f = new Foo();

...给了我们一些非常不同的东西:

+----------------+| f (a variable) |+----------------+     +--------------+| (ref #412785)  |---->| Foo instance |+----------------+     +--------------+                       | str: null    |                       +--------------+

关于java - 使用 null 或默认构造函数初始化对象之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29728704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com