什么时候进行java类的初始化

Python012

什么时候进行java类的初始化,第1张

java中类的显示初始化会在首次被“主动使用”时执行初始化,为类(静态)变量赋予正确的初始值。在Java代码中,一个正确的初始值是通过类变量初始化语句或者静态初始化块给出的。而我们这里所说的主动使用 包括:

1. 创建类的实例

2. 调用类的静态方法

3. 使用类的非常量静态字段

4. 调用Java API中的某些反射方法

5. 初始化某个类的子类

6. 含有main()方法的类启动时

初始化一个类包括两个步骤:

1、 如果类存在直接父类的话,且直接父类还没有被初始化,则先初始化其直接父类

2、 如果类存在一个初始化方法,就执行此方法

注:初始化接口并不需要初始化它的父接口。

  1.我们都知道java是面向对象的语言, 那么类就好比是一个模板, 比如Student类, 这个类其实是一个模板, 是一个规范.

然后我们执行下面这行代码

Student xiaoMing = new Student()

就相当于我们用Student这个模板去生成了一个对象, 这个对象叫xiaoMing.

如果Student这个类有一个属性private int age当我们只是做上面new对象的动作时候, xiaoMing的age并没有被赋值, 只是初始化成了0

(数值类型的属性初始化都是0, String则是null, 例如有个字符串类型的属性name就会是null)

然后xiaoMing.setAge(10)那么这个时候xiaoMing的age属性才变成10,

所以类属性初始化指的就是在new对象的时候对各个属性赋予一个初始化的值.

2.为什么要用构造方法进行属性初始化:

这个并不是强制的, 构造方法分成无参构造和带参构造, 用构造方法对属性进行初始化只是单纯的为了方便而已.

1. 对于类的成员变量,不管程序有没有显式的进行初始化,Java虚拟机都会先自动给它初始化为默认值。

默认值如下:

Boolean false

Char '\u0000'(null)

byte(byte)0

short (short)0

int 0

long0L

float0.0f

double0.0d

2. 局部变量声明之后,Java虚拟机就不会自动给它初始化为默认值,因此局部变量的使用必须先经过显式的初始化。

但是需要声明的是:对于只负责接收一个表达式的值的局部变量可以不初始化,参与运算和直接输出等其它情况的局部变量需要初始化。