JAVA类静态变量

2019-12-09  本文已影响0人  Stack1_e27c

在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);
    }
}

运行结果:

运行结果
从结果可以看出,在创建两个实例时,变量month和day的值并没有改变,而变量year的值却自增1,这是因为,未由static修饰的变量month和day都属于实例变量,所以创建不同的实例时,每个实例都创建了属于实例本身的month和day变量,而变量year属于类,并不属于实例,所以两个实例修改的其实是同一个year变量,所以year变量的值产生了变化。
上一篇下一篇

猜你喜欢

热点阅读