【问题标题】:What is the difference between- Employee e = new Employee(); and Employee e; [duplicate]有什么区别 - Employee e = new Employee();和雇员 e; [复制]
【发布时间】:2019-03-22 20:16:02
【问题描述】:

有什么区别-

Employee e = new Employee();Employee e;

如果 Employee 是一个类。我们会在程序的什么地方使用它来满足我们的代码?

谢谢。

【问题讨论】:

  • 你尝试过基本的 Java 教程吗?
  • @ElliottFrisch 不是真的。局部变量没有初始化为null,可以声明后初始化。
  • Employee e 声明了一个变量e,类型为Employee。如果是字段,则将变量初始化为 null。如果它是一个局部变量,它不会被初始化。 Employee e = new Employee() 声明了一个 Employee 类型的变量 e,并使用新创建的 Employee 对象对其进行初始化。每本 Java 书籍或教程都解释了这一点。请做一些基础研究。你不能在 StackOverflow 上学习编程。

标签: java class object reference instance


【解决方案1】:

第一个例子是初始化。您创建一个新对象并将其分配给变量e

Employee e = new Employee();

第二个例子是声明。您只需将变量名称与对象类型相关联:

Employee e;

正如@JBNizet 所提到的,e 是否已初始化取决于您声明此变量的位置。

如果它是类成员,那么它将null 作为默认值。如果它是一个局部变量,那么它不会得到任何默认值(未定义)。

查看更多Creating Objects
还有Java: define terms initialization, declaration and assignment

【讨论】:

  • 第一个创建了一个Employee 对象并将其初始化为一个新的Employee 对象。第二个创建一个Employee 对象,但没有初始化它。因此,第二个示例将其定义为 null。
  • @FailingCoder "makes an Employee object" 具有误导性——“make”似乎类似于“instantiate”。第二个示例仅声明了一个Employee 类型的变量,如果它是一个字段,它将被初始化为null,但不会“生成”Employee 对象。
  • 也许我的word choice 不正确。不过我很确定我的想法是对的?
  • 第一个例子是声明加初始化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 2013-06-12
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多