没有在构造方法中初始化字段时,引用类型的字段默认是null
,数值类型的字段用默认值,int类型默认值是0
,布尔类型默认值是false
比如:
class Person {
private String name; // 默认初始化为null
private int age; // 默认初始化为0
public Person() {
}
}
也可以对字段直接进行初始化,比如:
class Person {
private String name = "Xiao Ming";
private int age = 10;
}
那,,,我初始化了,又在构造方法里初始化,会怎么处理呢?
class Person {
private String name = "Xiao Ming";
private int age = 10;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
在Java中,创建对象实例的时候,按照如下顺序进行初始化:
- 先初始化字段
- 执行构造方法的代码进行初始化。
所以最终person
字段由构造方法决定
- 如果不知道构造方法需要传入几个参数应该怎么办呢
class Person {
private String name;
private int age;
public Person() {
}
public Person(String name) {
this.name = name;
this.age = 10;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
编译器通过构造方法的参数数量、位置和类型自动区分