当前位置: 首页 > 知识库问答 >
问题:

创建一个新的空对象,实例变量是什么?

谈灵均
2023-03-14

假设我有一个名为class的类,并且创建了一个新的空对象:

类对象=空

class中的构造函数是:

private int a;
private String b;

public Class() {
        a = 144;
        b = "Test";
        c = null;
    }

ABC是否等于空?

如果不是,有没有办法让我创建对象,使所有三个实例变量都是null

共有2个答案

黄正浩
2023-03-14

假设我有一个名为class的类

既然java.lang.class已经存在,我们就不要。假设您有一个名为MyClass的类。

并创建了一个新的空对象:

这是一个矛盾修辞法。

null是引用。它不是物体。事实上,它是表示“我指的不是对象”的指代,也是表示“我指的不是对象”的唯一指代。

当你写:

MyClass x = new MyClass();

那么x是一个藏宝图,new MyClass()是‘创建一个新的藏宝箱并把它埋在沙子里’。中间的=写着:更新名为X的藏宝图,这样跟随它就会带你找到我刚刚制作的宝藏(new X()的意思是:制作新的宝藏并掩埋)。

MyClass x = null;

表示您有一个名为x的藏宝图,该藏宝图当前为空。

如果不是,有没有办法让我创建对象,使三个实例变量都为空?

这意味着有一个MyClass珍宝类型的百宝箱,它有一些划痕的空间(int a-一个数字),并且包含一个藏宝图(Stringb变量)。如果您想将它们全部设置为null,那么,您不能-a是一个原语(int),而那些不是藏宝图,它们是实际的数字。您不能没有一个-a不能为空。a充其量可以是0。b可以为空。这意味着有真正的宝藏,但宝藏里还有另一张藏宝图(在Java,大部分都是藏宝图),但那张是空白的。那和根本没有宝藏是不一样的。

更一般地说,“我能为MyClass创建一个新实例,使所有字段都是我想要的值吗?”这个问题可能是个错误的问题:一般的原则是封装:MyClass是一个API:它就像大公司办公室的接待员。接待员决定提供什么服务。即使首席执行官有空,如果接待员选择不回答“我现在能见首席执行官吗?”这个问题,那么你就不能见她了。

你的问题归结为:“如果我冲进这个办公室,要求和首席执行官说话,我会被允许吗?”-唯一可行的答案是:好吧,接待员会决定的,所以你得问他。对于类:API让你做什么,你就能做什么。但这是你所能做的。

如果没有构造函数将这些字段初始化为null,那么,不,您不能。

呼延景同
2023-03-14

不,他们不等于任何东西,因为他们不存在。任何东西都没有创建class的实例,因此没有实例。

打个比方,你基本上是在问,“如果我不建房子,那房子的窗户是开着的还是关着的?”他们两者都不会。

当您执行此操作时:

Class object = null;

您所拥有的是一个变量,它可以(以后)引用class类型的任何实例,但当前没有引用任何实例。

有没有一种html" target="_blank">方法让我创建对象,使所有三个实例变量都为null

有点儿.您可以添加一个不设置这些值的构造函数:

public Class () { }

并且可以通过该构造函数创建该类的实例:

Class object = new Class();

然后您可以在调试器中观察您的实例以查看这些值是什么。在Java,我不是100%确定,但是int不可能是null。这会让这部分问题变得毫无意义。(我知道在C#中不行,但如果在Java中可以,那么就忽略这一部分,继续进行。)

如果尝试使用未赋值的int局部变量,则该变量将是编译器错误。但这是一个类字段,而不是局部变量。在这种情况下,将自动给出它的默认值,对于引用类型,默认值通常为null,而对于基元数值类型,默认值为0

 类似资料:
  • 使用saveOrUpdate创建新的ebject时,hibernate将对象存储在数据库中并正确返回。但在方法的同一调用中创建了一个带有一些空列的附加对象。 数据库中的对象如下所示: 这是数据类: 这是我将对象存储到数据库的方式:public class DataUtils{private Session Session;private static DataUtils DataUtils; 和我

  • 我已经完成了一些Java教程,它们都说在调用类时创建一个新变量。这是为什么?我已经测试了一些代码,但它没有这样做。我已经使用python很长一段时间了,所以我习惯于使用动态语言。 请看下面我一直在玩的一些代码: 谢谢你的时间。

  • 我有两个Java类,Product和ProductReview。ProductReview除了变量long id和String review外,还有一个名为Product的变量,该变量应包含类Product中的一个对象。例子: Products类有私有变量long id、String name和List评论(它也从Product评论类中获取评论)。产品类与Product评论有一对多的关联,反之亦然

  • 问题内容: 我的任务是制作一个带有实例变量的程序,该变量应该由用户输入。但是我什至不知道什么是实例变量。什么是实例变量?如何创建一个?它有什么作用? 问题答案: 实例变量是在类内部但在方法外部声明的变量: 现在可以在其他类中实例化此IronMan类以使用这些变量,例如: 这就是我们使用实例变量的方式。无耻插头:来自实例本免费的电子书拉到这里这里。

  • 问题内容: 什么是Java中的对象引用变量? 参考变量是否保存对象的内存地址? 我很困惑。请说明一下。 问题答案: 我不确定我是否有能力正确回答这个问题,但是… 对象是类的实例,它存储在内存中的某些位置 引用是用来描述指向对象所在的内存位置的指针的。 变量是一种可以访问应用程序中该内存位置的方法(其值为“变量”)。尽管变量只能指向单个内存地址(如果不为空),则在应用程序的整个生命周期中,它可能会更

  • 问题内容: 我读了这个问题不可变对象,并留下了关于不可变对象,并最终场一个问题: 为什么我们需要不可变类中的实例变量为最终变量? 例如,考虑以下不可变的类: 如果在上面的代码中没有set方法,而实例变量仅在构造函数中设置,为什么要求将实例变量声明为final? 问题答案: 有没有 要求 这样做的变量。但是,当您确实明确打算永远不更改变量时,通常这样做是一种好习惯,因为这不仅可以使变量避免错别字或其