在JAVA语言中,变量分为两种,一种为大家经常熟悉使用的实例变量,另一种是由关键字static修饰的静态变量,静态变量属于类变量,不依赖于类声明的实例,静态变量的生命周期从类加载开始,到类销毁结束,只要程序加载了类,不用声明任何实例,静态变量就会被分配内存空间,实例变量则依赖于类声明的实例,当实例销毁时,实例变量也会被销毁。无论类声明了多少个实例,永远都只声明了一个static变量由所有实例共同使用,下面贴了一张代码:
/**
* Created by DELL on 2019/12/9.
*/
public class Time{ //时间类
static int year = 1996; //年份
int month = 12; //月份
int day = 29; //日期
public Time(){
this.year++; //自增1
this.month++; //自增1
this.day++; //自增1
}
public static void main(String []args){
Time time1 = new Time(); //创建第一个实例
System.out.println("year:"+time1.year+", month:"+time1.month+", day:"+time1.day);
Time time2 = new Time(); //创建第二个实例
System.out.println("year:"+time1.year+", month:"+time1.month+", day:"+time1.day);
}
}
运行结果:
![](https://img.haomeiwen.com/i20307052/c3d29893d7513777.png)
从结果可以看出,在创建两个实例时,变量month和day的值并没有改变,而变量year的值却自增1,这是因为,未由static修饰的变量month和day都属于实例变量,所以创建不同的实例时,每个实例都创建了属于实例本身的month和day变量,而变量year属于类,并不属于实例,所以两个实例修改的其实是同一个year变量,所以year变量的值产生了变化。
网友评论