1.static成员
1.1static修饰静态成员变量
static修饰的成员变量,称为静态成员变量
1.1.1静态成员变量不属于某个具体的对象,是所有对象所共享的,直接通过类名进行访问。
此时的classRoom就是一个静态成员变量
2.1static修饰静态成员方法
2.1.1在静态方法内部不能直接调用非静态的成员方法
2.1.2非静态的数据成员都需要对象来引用,静态方法里面不能使用this
2.1.3非静态成员方法内部可以使用静态成员方法
3.1static成员变量初始化
静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性
3.1.1就地初始化
3.1.2默认初始化
3.1.3通过get和set方法进行初始化
3.1.4通过代码块进行初始化
2.代码块
2.1普通代码块
定义在方法内部的代码块称为普通代码块
2.2构造块(非静态代码块)
定义在类里面方法外面的代码块称为构造块
构造块一般用于初始化非静态数据成员
当存在构造块和构造方法时,那么先打印的是哪一个呢?
我们可以看到先被执行的是构造块(非静态代码块),然后才是构造方法
那么有些小伙伴会问,会不会是顺序的问题呢,那么我们颠倒一下顺序再来验证一次
结果仍然是相同的。所以,可以得到的结论是:构造块执行顺序在构造方法的前面
在构造块(非静态代码块)和非静态成员变量中分别赋值,那么打印的结果看定义的顺序
定义顺序颠倒
2.3静态代码块
代码块前有static称为静态代码块,一般用于初始化静态的数据成员或提前准备一些数据
当存在构造方法,构造块,静态代码块时,执行顺序为静态代码块,构造块,构造方法
注意:静态代码块不管生成多少个对象,其只会执行一次
此时生成了2个对象,但静态代码块只被执行了1次