static 使用

来源:互联网 发布:淘宝发布宝贝图片大小 编辑:程序博客网 时间:2024/06/08 11:52
public class StaticTest {
// 静态变量 类加载时执行 只执行一次
// 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便)
private static int flag = 1;


// 对于变量,若使用static final修饰,表示一旦赋值不能修改,并且通过类名可以访问。
private final static int flag1 = 1;
// 静态块 类加载时执行 只执行一次
// JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们
static {
System.out.println("static 静态块:" + flag);
flag = 2;
}
// 普通块
// 每次调用构造函数之前调用
{
System.out.println("static 普通块:" + flag);
flag = 3;
}
// 静态块 类加载时执行 只执行一次
// JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们
static {
System.out.println("static 静态块2:" + flag);
flag = 7;
}


public static void getFlag() {
System.out.println("static 静态方法:" + flag);
flag = 4;
}


// 对于方法,若使用static final修饰,表示该方法不可被覆盖,并且可以通过类名直接访问
public static final void getFlag1() {
System.out.println("static 静态方法:" + flag1);
}


public StaticTest() {
System.out.println("static 构造函数:" + flag);
flag = 5;
}


public StaticTest(int hh) {
System.out.println("static 构造函数2:" + flag);
flag = 6;
}


public static void main(String[] args) {
System.out.println("--------------------");
StaticTest test = new StaticTest();
System.out.println("--------------------");
StaticTest test1 = new StaticTest(1);
StaticTest.getFlag();
}