我想问你对象初始化的确切时间是什么时候
例如,我有以下简单的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()
时?还是在执行了二传手之后?任何反馈将不胜感激!
答案 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()时,它将初始化。
然后,将结果对象分配给数据类型为学生的“ 学生”变量。
答案 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。