静态变量

在我们进行类的设计时,很多情况下我们都需要给类的所有对象共同设置一个相同的属性值,比如一个班级的同学他们的学院、班级、班主任都是相同的,假如一个班里有50个人,我们就需要录入50次,修改的时候我们也需要修改50次,这样是极其麻烦的,所以,JAVA引入了静态变量。


静态变量

静态变量用关键字static修饰,它的功能是,当类中的一个成员变量被设置为静态时,它就不属于某一个对象了,它属于所有的对象共享,这个变量就叫做静态变量。静态变量的值只需要输入一次,所有的对象都会拥有这一属性值,而且修改时也只用修改一次。

代码示例:



public class 静态 {

	public static void main(String[] args) {
		//这里用匿名对象对静态变量赋值了一次。
		new Person().setProvince("河南");
		
		Person p = new Person();
		p.setName("岳云鹏");
		p.show();
		
		Person p1 = new Person();
		p1.setName("刘昊然");
		p1.show();
	}

}
class Person{
	private String name;
	//静态变量
	private static String  province;
	
	
	
	//构造方法
	public Person() {};
	public Person(String name, String country) {
		super();
		this.name = name;
		this.province = province;
	}
	//setter和getter方法
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	//成员方法
	public  void show() {
		System.out.println("我的名字是"+name+"我来自"+province);
	}
}

 运行结果:

我的名字是岳云鹏我来自河南
我的名字是刘昊然我来自河南

从结果我们可以看出,这里只被赋值了一次,而且是利用匿名对象对静态变量赋的值,在输出时,我们发现所有的对象都同时拥有这一属性值。


静态变量的特点

 

静态的解释:static关键字. 静态、静止的。静态变量不会随着对象的变化而变化

加载时机:随着类的加载而加载。

                  静态变量随着类的加载进方法区,就直接在静态区给开辟了存储静态变量的内存空间

                  静态变量优先于对象而存在

                  静态变量被所有该类对象所共享

代码层面:可以使用类名直接调用,不需要使用对象名称。在不创建对象的前提下,仍然可以使用这个静态变量。建议使用类名来访问。

静态变量的注意事项 

静态方法:在方法声明上,加上了static关键字的方法,就是静态方法

                  静态方法不能访问非静态的变量

  原因:静态方法可以在没有创建对象的时候调用;非静态的变量只有在对象创建之后才存在。如果静态方法可以访问非静态的变量,那么就相当于在对象创建之前,就访问了对象创建之后的数据。明显不合理。

                  静态方法不能访问非静态的方法

  原因:静态方法可以在没有创建对象的时候调用;非静态的方法可以访问非静态的变量。如果静态方法可以访问非静态的方法,就相当于静态方法间接的访问了非静态的变量,和第2点矛盾。

                  静态方法中不能存在this关键字

  原因:this关键字表示本类当前对象。静态方法可以在对象创建之前调用。如果静态方法可以访问this关键字,相当于在创建对象之前,就使用了对象本身。矛盾。

总结

                                                          静态不能访问非静态

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值