Java static修饰符

1、静态字段

    类的字段可以被标记为static。

    静态字段可以创建真正的全局变量。Java不允许在在类定义之外来创建可以访问的全局变量。但是,可以使用static关键字来创建可以访问的全局变量。

    静态字段与类自身的定义相关联,在类的所有实例之间共享。当类被实例化时,不会为静态字段分配独立的内存。静态字段的内存分配仅发生一次,就是在类加载的时候。当JVM将类的定义加载到内存中时,会为类的所有静态字段分配内存空间。分配的内存空间将在类的所有对象之间共享。

    如在一个Ball类中声明一个静态变量count;

    private static int count=0;

    每次创建一个新实例时count++;

    

1.1通过对象引用访问静态字段

        使用类名来访问静态方法:  new  类().静态方法();

1.2 继承静态字段

        类的字段和方法被子类继承的方式相同,类的静态字段将被子类继承

        访问方式:new 子类().静态方法();

1.3 创建真正的全局变量

        public static int count=0;可以在代码的任何地方使用  类名.count  来访问

1.4 创建应用程序常量

        将全局变量声明为final,就可以创建常量,在整个程序中都不能被修改。

        如 public  final static double PI=3.14;

        PI值不能被修改,可以使用  类名.PI  来访问,可见性取决于访问修饰符,本例使用public

1.5 注意事项

        (1)静态字段属于类而不是对象(类的实例)

        (2)静态变量只在开始时被初始化一次

        (3)在任何实例变量初始化之前初始化所有静态字段

        (4)静态字段可以直接通过类名来访问,不需要任何对象引用。


2、静态方法

        2.1 静态方法通过类引用调用

        2.2 特殊方法main被声明为静态的,因此在启动应用程序时不需要创建main方法所属类的实例

        2.3 静态方法可以访问类的静态字段和方法

        2.4 静态方法不能访问类的非静态字段和方法

        2.5 静态方法不能被子类重写

3、静态初始化器

      静态初始化容器仅在加载类时执行一次。类可以包含多个静态初始化器,他们按照在类中出现的顺序执行

	static int A;
	static int B;
	static {
		A=0;
	}
	static {
		B=0;
	}

注意事项:

        3.1  JVM将静态初始化容器的大小限制为64KB

        3.2 不能从静态初始化器中抛出异常

        3.3 不能在静态初始化器中使用this关键字,因为目前还没有创建实例

        3.4 不能在静态初始化器中显式地调用super

        3.5 静态初始化器没有返回类型


猜你喜欢

转载自blog.csdn.net/zx2015216856/article/details/80885366