静态方法不能访问非静态变量的原因
静态的方法和变量在内存中先产生,非静态的后产生,在静态调用时非静态可能还未创建,所以会发生错误,故不能访问。
static的内存图
静态代码块
static {
System.out.println("i am static code");
}
在类中由static包起来的代码块,在创建此类的第一个对象的时候被调用,在所有构造函数前执行,且只执行一次
用处:一般用于在类初始化时,初始化多个常量,如JDBC中的数据库连结关键字。