码迷,mamicode.com
首页 > 编程语言 > 详细

java中static的使用

时间:2015-08-26 22:32:18      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:static   静态方法   静态变量      java   

我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,有时候,我们希望该类的所有成员共享一个成员。这时可以用static来修饰。

Java中static作为修饰符,可以用来修饰变量、方法、代码块。

1、静态方法

被static修饰的变量成为静态变量,又可以成为静态成员或类成员。它属于整个类所有,而不是某个对象所有,被类的所有对象共享。类变量在类加载的时候初始化分配空间,而且只被初始化一次,直到该类被卸载时才将资源回收。

静态成员可以使用类名直接访问,也可以使用对象进行访问。在程序中任何对象对静态变量做修改,其它对象看到的是修改后的值。

public class Test {
	static String play="football";
	public static void main(String[] args) {

		System.out.println("通过类访问静态变量,"+play);
		
		Test test=new Test();
		
		System.out.println("通过对象访问静态变量,"+test.play);
		
		test.play="basketball";
		
		System.out.println("通过对象访问静态变量,"+test.play);
		
	}
}


2、静态方法

用static修饰的方法,称为静态方法或类方法,经常用到的main方法就是静态方法。

静态方法中可以直接调用同类中的静态变量,但不能直接调用非静态变量,可以通过创建对象后访问非静态变量;静态方法中不能直接调用非静态方法,可以通过对象来访问非静态方法。

public class Test {
	String game="DOTA";
	static String play="football";
	public static void main(String[] args) {
		print();
	}
	public static void print(){
		System.out.println("访问静态变量,"+play);
//		System.out.println("访问非静态变量,"+game);   //静态方法不能直接访问非静态变量
		Test test=new Test();
		System.out.println("访问非静态变量,"+test.game);
//		show();//静态方法不能直接调用非静态方法
		test.show();
	}
	//普通方法中,可以直接访问同类的非静态变量和静态变量
	public void show(){
		System.out.println("访问静态变量,"+play);
		System.out.println("访问非静态变量,"+game);
		print();//普通方法可以直接调用静态方法
	}
}

 

3、代码块

用static去修饰类里面的一个独立的代码块,称为静态代码块。

静态初始化块只在类加载时执行,且只会执行一次,静态代码块没有名字,不能显示调用,只能在类加载的时候调用。

静态初始化块只能给静态变量赋值,不能初始化普通成员变量。

public class Test{
	String film;
	String game;
	static String play;
	public static void main(String[] args) {
		Test test=new Test();
		System.out.println("film="+test.film);
		System.out.println("game="+test.game);
		System.out.println("play="+play);
		Test test2=new Test();
		
	}
	public Test(){
		film="爱奇艺";
		System.out.println("通过构造方法赋值 film");
	}
	{
		game="DOTA";
		System.out.println("通过初始化块赋值 game");
	}
	static {
		play="football";
//		game="DOTA";//不能赋值
		System.out.println("通过静态初始化块赋值 play");
	}
	
}


输出结果:

           通过静态初始化块赋值 play
           通过初始化块赋值 game
           通过构造方法赋值 film
           film=爱奇艺
           game=DOTA
           play=football
           通过初始化块赋值 game
           通过构造方法赋值 film

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

java中static的使用

标签:static   静态方法   静态变量      java   

原文地址:http://blog.csdn.net/afei3418/article/details/48009223

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!