006.java_static关键字

static修饰的(静态的)类属性叫做静态属性,没有使用..叫实例属性,可以让类的所有对象共享这一属性

静态方法   类方法内部不能用this

package staticfield;
/*static修饰的类属性*/
public class StaticfieldTest {
	
	@SuppressWarnings("static-access")
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("当前编号是"+Tiger.count);
		Tiger tiger=new Tiger("虎子1");
		tiger.displayInfo();
		Tiger tiger2=new Tiger("虎子2");
		tiger2.displayInfo();
		Tiger tiger3=new Tiger("虎子3");
		tiger3.displayInfo();
		tiger3.currentCount();
	}

}


/*新建一个老虎类*/
class Tiger{
	public static int count=100;
	private int id;		/*jvm加载该类时,会先对该类进行初始化,并只初始化一次,这个类属性在内存中只有一份,所有对象共享这一属性*/
	private static String name;
	public Tiger(String name){
		this.name=name;
		count++;
		id=count;
	}
	public void displayInfo(){
		System.out.println(name+"的编号是"+id);
	}
	public static void currentCount(){
		System.out.println(name+"当前编号是:"+count);
	}
	
}

运行结果:

当前编号是100
虎子1的编号是101
虎子2的编号是102
虎子3的编号是103
虎子3当前编号是:103



在StaticBlockTest类中,静态初始化模块对类属性country进行显式初始化,并输出初始化的值。

如果一个类中包含多个静态模块,它们将以在类中出现的顺序执行。

package staticfield;
public class StaticBlockTest {
	private static String country;
	private String name;
	
	static{		//静态初始化块
		country="中国";
		System.out.println("StaticBlockTest已加载!");
		System.out.println("StaticBlockTest.country"+StaticBlockTest.country);
	}
	public StaticBlockTest(String name){
		this.name=name;
	}
	public void displayInfo(){
		System.out.println("我的名字是"+name+",我来自"+country);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
	}

}

运行结果:

StaticBlockTest已加载!
StaticBlockTest.country:中国

静态初始化块:在类的内部并且用static修饰的代码块,会在该类被jvm(Java Virtual Machine)java虚拟机第一次加载到内存中执行一次、从此便不会执行。经常用来显示初始化类属性。

package staticfield;
/*通过类方法返回本类的对象,而不是用构造器*/
public class SingletonTest {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Singleton i=Singleton.getInstance();/*再类的外部,只有通过getInstance()方法才能获取它的对象,
		                                                                     获取的对象永远是类属性sing所引用的那个对象。*/
		i.test();
	}

}

class Singleton{
	private static Singleton sing=new Singleton();//自定义一个Singleton类类属性sing,并对它显示初始化。
	
	private Singleton(){
		
	}//新建一个私有的构造方法  不能在其他class新建并初始化Singleton类
	
	public static Singleton getInstance() {
		return sing;
	}//提供获取sing属性的方法
	
	public void test(){
		System.out.println("test");
	}
}

运行结果:

test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值