static:
package cn.hncu.program.static_;
/**
* 项目名:static关键字
* 时间 :2017-9-13 下午7:20:13
*/
/*
* 【static成员】:
* 1.每个类有个static池,池中统一存放该类的static变量,为所有对象共享。
* static变量在类装载时就被初始化。
* 2.为什么在静态方法中不能访问非静态成员(变量或方法)?
* 因为静态方法拿着类的名字就可以直接调用,这时根本没有类的实例,
* 所以就无法访问非静态成员(需要通过类的实例才能访问)。
*
* 【static的基本规则】:
* 1.一个类的静态方法只能访问静态属性。
* 2.一类的静态方法不能直接调用非静态方法。
* 3.如访问控制权限允许,static属性和方法可以使用类名加‘.’方式调用;当然也可以使用实例加‘.’方式调用。
* 4.静态方法中不存在当前对象,因而不能使用“this”,当然也不能使用“super”。
* 5.构造方法不允许声明为static的。
* 6.静态方法不能被非静态方法覆盖,反之也不行。
*
* 【静态初始器---静态块】:
* 1.静态初始器(static Initializer):是一个存在于类中方法外面的的静态块。
* 静态初始器仅仅在类装载的时候(第一次使用类的时候)执行一次。
* 2.功能:通常用来初始化静态的类属性。
*
*/
public class Static {
private static Person p = new Person();
static{
System.out.println("static....");
}
public Static(){
System.out.println("construct static ...");
}
public static void main(String[] args) {
new Static();
new Static();
}
}
class Person{
public Person() {
System.out.println("person...");
}
}