java基础篇之 简析关键字static

精华 发表在    java 08-24 17:41:48

1 2064 2


本篇将会带大家由浅入深了解关键字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上运行,并第一次调用到某一个类,那么类加载器就会加载这一个类。当类加载器加载一个类时,会将该类的静态属性和静态代码块打包到一个方法里并调用,因此你可以直接使用任何一个类的公开的静态属性。


<!--本帖原创,禁止转载-->


登录或注册后发布评论