什么时候精确初始化对象?

时间:2019-12-05 16:56:14

标签: java object initialization instance

我想问你对象初始化的确切时间是什么时候

例如,我有以下简单的Java代码:

public class Test {
   public static void main(String args[]) {
      Student student = new Student();
      student.setName("John");
      student.setId(123);
   }
}

那么什么时候才初始化学生对象?执行new Student()时是否将其初始化?还是执行Student student = new Student()时?还是在执行了二传手之后?任何反馈将不胜感激!

7 个答案:

答案 0 :(得分:4)

在调用new +构造函数时初始化。

如州the docs

  

每个语句包含三个部分(下面将详细讨论):

     

声明:以粗体显示的代码是所有变量声明,它们     将变量名与对象类型相关联。

     

实例:       new关键字是创建对象的Java操作符。

     

初始化:新操作符后会调用       构造函数,用于初始化新对象。

答案 1 :(得分:2)

  

执行new Student()时是否初始化了?

是的。返回结果对象后,它已被初始化(通过构造函数代码)。

  

还是在执行setter之后?

在构造函数返回时初始化对象的字段。可以将它们设置为null""0或类似名称,但是它们会使用 some 值进行初始化。

如果Student对象具有null或这些字段的任何内容无效,则构造函数应接受它们的值作为参数,否则类应公开一个生成器样式的接口用于构建实例,以便在拥有Student实例时,您知道这些字段已填充了有意义的值。是否必要是特定于域的。

答案 2 :(得分:0)

这取决于您的构造函数类。可能在第三行,但是如果您的mutator方法创建了新对象,则在第四行和第五行。

答案 3 :(得分:0)

当执行 new Student()时,它将初始化。

  • 新的Student()-这将调用Student Class的构造函数。

然后,将结果对象分配给数据类型为学生的“ 学生”变量。

答案 4 :(得分:0)

每当调用' new '关键字时,都会实例化对象并调用构造函数,从而导致对象初始化。

首先,请参阅setter和构造函数之间的区别以及它们的优缺点。

构造函数:

1)创建对象时调用构造函数。

2)每个对象只能调用一次。

3)您可以使用构造函数在实例化点设置值。

4)不允许任何返回类型。

5)隐式调用构造函数。

设置者:

1)初始化后,将调用setter更改对象的值。

2)设置器可以被调用任意次。

3)您可以使用设置器在实例化点之后设置值。

4)允许返回类型。

5)显式调用设置器。

结论:

1)在执行新的Student()时初始化对象

2)如果您认为初始化是强制性的,并且在使用该对象之前具有必需的值,请使用构造函数。

3)当变量的初始化是非强制性的并且在对象初始化时没有值时,请使用setter方法。

4)通常,我们应避免使用setter,因为它以某种方式违反了封装原理。

答案 5 :(得分:0)

学生=新学生();

当您调用new并随后调用构造函数时,您正在创建与构造函数类相同类型的对象,则接收new +构造函数的对象必须具有相同的类型。

另一个例子:

必须与您的类相同的对象+对象的名称signal =然后是new加构造函数;

Example exaple = new Example();

答案 6 :(得分:-1)

致电时

Student student = new Student();

您正在内存中创建对象。创建后,您可以使用对象的方法,例如getter和setter。