前言
本文介绍类变量(static静态变量)和实例变量(非静态变量)的区别
🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
一、两种变量的来源
成员变量其实包括类变量(static静态变量)和实例变量(非静态变量)
二、类变量(static静态变量)
🔶类变量(static静态变量)的定义格式
static关键字修饰
如: static int a;
/*
注意:static表示不要实例化就可以使用
*/
🔶类变量(static静态变量)的特点
1.随着类的加载而加载
2.优先于对象存在(这样就会导致了静态方法只能访问静态变量,不能访问不是static修饰的)
3.被所有对象所共享 (其中一个对象将它值改变,其他对象得到的也是改变后的结果)(在项目中应用比较多,同步修改)
4.可以直接被类名调用
三、实例变量(非静态变量,无static修饰)
🔶 实例变量(非静态变量,无static修饰)的定义格式
无 static关键字修饰
如: int a;
四、区别
区别:
1.定义不同
类变量(静态变量)定义时候前面要加上static
实例变量(非静态变量)不需要加
2.初始化不同
类变量(静态变量)随着类的加载而初始化
实例变量(非静态变量) 是new对象后才进行初始化
3.内存位置不同
类变量(静态变量)随着类的加载而存在于“方法区”中
实例变量(非静态变量)存储在“堆内存区”
4.调用方式不同
类变量(静态变量)通过类名调用
实例变量(非静态变量)通过对象调用
5.生命周期不同
类变量(静态变量)随着类的加载而加载,虚拟机停止运行类时,静态变量周期结束(类变量生命周期最长,随着类的消失而消失)
实例变量(非静态变量)随着对象的产生而产生,随着对象的消失而失去引用,等待垃圾回收(随着对象的消失而消失)
网友评论