static关键字的使用:
1、static翻译为“静态”;
2、所有static关键字修饰的都是类相关的,类级别的;
3、所有static修饰的,都是采用“类名.”的方式访问。(虽然使用“引用.静态变量”不会报错,但不建议使用)
4、变量根据声明的位置进行划分:
在方法体当中声明的变量叫做:局部变量;
在方法外面声明的变量叫做:成员变量。
成员变量又可以分为:实例变量,静态变量。
5、变量存储位置:
局部变量存储在:栈
实例变量存储在:堆
静态变量存储在:方法区
6、 空指针异常情况:
实例成员:需要实例化使用,需要对象的参与,可能出现空指针异常;
静态成员:不需要对象参与,所有对象共用类中的静态成员。
静态变量在类加载时就已经初始化,不会出现空指针异常。
7、静态代码块:
语法:
static {
//java语句;
}
(1)静态代码块在什么时候执行?
类加载时执行,并且只执行一次,且在main方法之前执行。一个类中可以有多个静态代码块,执行顺序自上而下。一个静态代码块只能访问改静态代码块之前的静态变量。
(2)静态代码块不是很常用,就是类加载时给编程的一个利用时机,看程序员要不要用这个时机做点什么事情。
8、实例语句块:
除了静态代码块之外,还有一种语句块叫做:实例语句块。
顾名思义,就是在实例化对象时执行,并不是在类加载时执行。
实例语句块的具体执行时间是在实例化时构造方法之前执行的。
语法:
{
//java语句;
}
给道题目练习一下static{}的执行顺序,例题:
答案输出顺序为:A X Y C B Z