对象何时准确初始化?



我想问你什么时候初始化一个对象

例如,我有这个简单的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()?还是在二传手被处决之后?任何反馈将不胜感激!

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

如文档所述

这些陈述中的每一个都有三个部分(下面详细讨论(:

声明:以粗体设置的代码都是变量声明将变量名称与对象类型关联。

实例化: new 关键字是创建对象的 Java 运算符。

初始化:新运算符后跟对 构造函数,用于初始化新对象。

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

是的。返回结果对象时,它已被初始化(由构造函数代码(。

还是在二传手被处决之后?

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

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

这取决于您的构造函数类。 可能是第三行,但如果你的突变器方法创建新对象,那么第 4 行和第 5 行。

执行新的 Student((时,它会被初始化。

  • new Student((- 这调用学生类的构造函数。

之后,生成的对象被分配给数据类型为Student的">student"变量。

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

首先,看看二传手和构造函数之间的区别以及它们的优缺点。

构造 函数:

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

2( 每个对象只调用一次。

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

4( 它不允许任何返回类型。

5( 隐式调用构造函数。

二传手:

1( 调用 setter 来更改初始化后对象的值。

2(一个二传手可以调用任意次数。

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

4(它允许返回类型。

5( 显式调用二传手。

结论:

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

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

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

4(一般来说,我们应该避免二传手,因为它在某种程度上违反了封装原则。

学生 = 新学生((;

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

再比如:

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

Example exaple = new Example();

当你打电话时

Student student = new Student();

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

最新更新