深入介绍Java对象初始化
Java对象初始化指的是在创建对象后对其进行初始化的过程。其中,对象初始化包含了对象成员变量的初始化和执行构造器方法的操作。
对象成员变量的初始化
对象成员变量(非静态成员变量)可以在创建对象之前或者在构造器方法中进行初始化。其中,非静态成员变量可以归为以下两类:
未经初始化的成员变量
在Java中,成员变量不会自动初始化。如果一个成员变量没有进行初始化,那么它的值会默认为该数据类型的默认值。默认值通常根据数据类型的不同而不同,例如:
数据类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0F |
double | 0.0D |
char | '\u0000' |
boolean | false |
引用类型 | null |
经过初始化的成员变量
除了未经初始化的成员变量,我们也可以在创建对象之前或者在构造器方法中对成员变量进行初始化。初始化成员变量的方式可以通过以下代码实现:
public class Person {
private String name = "Unknown";
private int age = 0;
private boolean gender = true;
// 构造器方法
public Person(String name, int age, boolean gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// 默认的构造器方法
public Person() {}
// getter 和 setter 方法
...
}
构造器方法的执行
在对象成员变量初始化之后,Java会自动执行构造器方法。通过构造器方法我们可以进一步完善对象的初始化过程,例如对成员变量的校验、调用其他方法等。构造器方法的命名和类名保持一致,没有返回值。
普通构造器
普通的构造器方法可以通过以下代码声明和实现:
public class Person {
private String name;
private int age;
private boolean gender;
// 构造器方法
public Person(String name, int age, boolean gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// getter 和 setter 方法
...
}
带有调用其他构造器方法的构造器
Java还支持使用this()
或者super()
来调用其它构造器方法。通过此种方式来复用构造器方法。
public class Person {
private String name;
private int age;
private boolean gender;
// 构造器方法1
public Person(String name) {
this(name, 0, true);
}
// 构造器方法2
public Person(String name, int age, boolean gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// getter 和 setter 方法
...
}
在上述代码中,构造器方法1通过this(name, 0, true)
的方式调用了构造器方法2,从而实现了构造器方法的复用。
示例说明
示例1:成员变量的初始化
public class Person {
private String name = "Unknown";
private int age = 0;
private boolean gender = true;
// 构造器方法
public Person(String name, int age, boolean gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// getter 和 setter 方法
...
}
public class Test {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.getName());
System.out.println(person.getAge());
System.out.println(person.getGender());
}
}
在上述代码中,我们创建了一个Person
对象,并且没有传入任何参数。由于Person
类中定义的成员变量都进行了初始化,因此对象的成员变量都是默认值。在输出的结果中,我们可以看到该对象的属性均为默认值。
示例2:调用其他构造器方法
public class Person {
private String name;
private int age;
private boolean gender;
// 构造器方法1
public Person(String name) {
this(name, 0, true);
}
// 构造器方法2
public Person(String name, int age, boolean gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// getter 和 setter 方法
...
}
public class Test {
public static void main(String[] args) {
Person person1 = new Person("Tom");
Person person2 = new Person("Jerry", 2, false);
System.out.println(person1.getName());
System.out.println(person1.getAge());
System.out.println(person1.getGender());
System.out.println(person2.getName());
System.out.println(person2.getAge());
System.out.println(person2.getGender());
}
}
在上述代码中,我们创建了两个Person
对象,并且分别通过不同的构造器方法进行初始化。其中,person1
使用了构造器方法1进行初始化,person2
使用了构造器方法2进行初始化。在输出的结果中,我们可以看到两个对象的属性均符合预期。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入介绍Java对象初始化 - Python技术站