一、静态变量
什么时候应该定义静态变量? 当该成员变量的值,每一个对象都一致时,就对该成员变量进行静态修饰。
静态变量和成员变量的区别:
- 所属范围不同。静态变量所属于类,静态变量也称为类变量;成员变量所属于对象,成员变量也称为实例变量
- 调用不同。静态变量能被对象和类调用;成员变量只能被对象调用
- 加载时期不同(这个不同正是静态变量有时候的优势,就是类加载完就一直可以用,不用每次新建对象都占一次内存)。静态变量随着类的加载而加载;成员变量随着对象的加载而加载
- 内存存储区域不同。静态变量存储在方法区中;成员变量存储在堆内存中
二、静态代码块
静态代码块
- 特点:随着类的加载而执行,仅执行一次
- 作用:给类进行初始化
详情可参考下面demo及其注释
class Circle{
static double pi = 3.14;
static{ //静态代码块。随着类加载而执行,且在静态变量显示初始化以后再执行。
System.out.println("类加载就执行这句"+pi);
//因为静态代码块在静态变量显示初始化才执行,因此输出pi的值为3.14
}
static void show(){
System.out.println("show run");
}
}
public class CircleDemo {
public static void main(String[] args){
Circle.show();
Circle.show(); //这里执行Circle类show方法仅仅是为了加载Circle,执行两次是为了证实代码块只执行一次
}
}
/*输出
类加载就执行这句3.14
show run
show run */