精华 发表在 java 08-24 17:41:48
本篇将会带大家由浅入深了解关键字static的用法。
首先,是众所周知的,static的最广泛最简单的用法——修饰静态属性。
static可以使用在声明属性时,一个被static修饰的属性也被称为类属性(静态属性)。即该属性是类的属性(而不是实例的属性)。下面是我写的例子。
package com.deom;
class clazz{ //首先声明一个类clazz
int a = 0 ; //一个非静态变量a
static int b = 1 ; //静态变量b
}
public class Demo08 {
public static void main(String[] args) {
clazz.b = 2; //b可以直接通过类名称调用
// clazz.a; 但是不能直接调用a
clazz clazz = new clazz();//声明两个实例
clazz clazz2 = new clazz();
clazz.a = 100; //改变非静态变量a的值。
clazz2.a = 200;
System.out.println(clazz.a==clazz2.a);//比较两个实例的a的区别
// 即两个实例的a不相等。(此时clazz.a=100,clazz2.a=200)
clazz.b =100; //改变静态变量b的值
System.out.println(clazz.b);//打印b的值----结果为100
clazz2.b = 200; //改变另一个实例的b值
System.out.println(clazz.b);//仍然打印实例clazz的b值,结果为200
//这说明两个实例之间,b是同一份资源,在任意一方改变b的值,都会改变b的值。
}
}
然后是static的第二种用法——修饰静态方法。
被声明为static的方法就是静态方法,可以直接通过类来调用该方法(无需实例),这种方法只能使用类中,同样声明为static的资源。
第三种——static静态代码块。
在一个类中直接添加static{ ....... }代码块,当该类第一次被加载的时候,该代码块就会被调用。即一个类一生只会被调用一次的方法。
第四种——静态内部类。
当static用于修饰内部类时,该类就是一个静态内部类,这种使用比较少见。静态内部类只能使用外部类的static的方法和属性,通常用于管理外部类的使用。
上面介绍了static的四种用法,下面我来介绍一下static资源的载入过程。
当你的程序在JVM上运行,并第一次调用到某一个类,那么类加载器就会加载这一个类。当类加载器加载一个类时,会将该类的静态属性和静态代码块打包到一个方法里并调用,因此你可以直接使用任何一个类的公开的静态属性。
<!--本帖原创,禁止转载-->
加油啊,老铁