java中静态变量和实例变量的生命周期有什么区别?
本人初学java,望详细点,容易理解点。3Q我不是问这2个变量的不同,而是问他们生命周期有什么不同...
本人初学java,望详细点,容易理解点。3Q
我不是问这2个变量的不同,而是问他们生命周期有什么不同 展开
我不是问这2个变量的不同,而是问他们生命周期有什么不同 展开
展开全部
首先很能理解你求知而无解的心情,因为我也是过来人
静态变量是类相关的变量,所以他的生命周期是从这个累被声明,到这个类彻底被垃圾回收机制彻底回收才会被销毁。
实例变量是这个类的对象里的变量,它和静态变量不同,它只能由创建出的对象来调用,所以实例变量是从这个对象(其实就是实例)被创建开始,直到这个对象没有任何引用变量去引用它,最终被垃圾回收站回收,这时这个实例变量也跟着就消失了。
总而言之:静态变量生命周期就是类的开始和销毁
实例变量生命周期就是对象的开始和销毁。‘
不知道这样说你能懂不,看着这些,自己好好理解理解,有时候不经意间就懂了呵呵
静态变量是类相关的变量,所以他的生命周期是从这个累被声明,到这个类彻底被垃圾回收机制彻底回收才会被销毁。
实例变量是这个类的对象里的变量,它和静态变量不同,它只能由创建出的对象来调用,所以实例变量是从这个对象(其实就是实例)被创建开始,直到这个对象没有任何引用变量去引用它,最终被垃圾回收站回收,这时这个实例变量也跟着就消失了。
总而言之:静态变量生命周期就是类的开始和销毁
实例变量生命周期就是对象的开始和销毁。‘
不知道这样说你能懂不,看着这些,自己好好理解理解,有时候不经意间就懂了呵呵
展开全部
1.存储区域不同:静态变量存储在静态存储区,普通变量存储在堆中;
2.静态变量与类相关,普通变量则与实例相关,说细一点:
class Demo {
public static String a;
public String b;
public static void main(String[] args) {
Demo d = new Demo();
d.a; // 警告,虽然可以通过编译,但没有意义
d.b; // 正确
Demo.a; // 对static变量的正确引用
Demo.b; // 错误
}
3.内存分配方式不同。static字段对每个类来说都只有一份,无论你创建多少对象,该static区域都只有一份,它对于这些对象来说是共享的;而非static字段,因为其从属于对象,因此每有一个对象,就会为该变量申请一个存储空间;
4.生命周期不同。从程序运行开始,static域就已经确定下来,因此在没有创建对象之前,就可以引用该区域变量及函数,而非static域的变量及函数,必须等实例化之后才可以通过对象来调用。
5.理解了this之后,更能体会到static的含义。static方法就是没有this的方法,这也就是为什么在static方法中不能引用非static变量,因为该方法内没有隐含的this,编译器无从知道这个变量是属于哪一个类的。
2.静态变量与类相关,普通变量则与实例相关,说细一点:
class Demo {
public static String a;
public String b;
public static void main(String[] args) {
Demo d = new Demo();
d.a; // 警告,虽然可以通过编译,但没有意义
d.b; // 正确
Demo.a; // 对static变量的正确引用
Demo.b; // 错误
}
3.内存分配方式不同。static字段对每个类来说都只有一份,无论你创建多少对象,该static区域都只有一份,它对于这些对象来说是共享的;而非static字段,因为其从属于对象,因此每有一个对象,就会为该变量申请一个存储空间;
4.生命周期不同。从程序运行开始,static域就已经确定下来,因此在没有创建对象之前,就可以引用该区域变量及函数,而非static域的变量及函数,必须等实例化之后才可以通过对象来调用。
5.理解了this之后,更能体会到static的含义。static方法就是没有this的方法,这也就是为什么在static方法中不能引用非static变量,因为该方法内没有隐含的this,编译器无从知道这个变量是属于哪一个类的。
参考资料: 《Java编程思想》
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我个人就是这么理解,虽然通俗,但是易懂:
静态变量:独立存在的变量,只是位置放在某个类下,可以直接类名加点调用静态变量名使用。并且是项目或程序一启动运行到该类时就直接常驻内存。不需要初始化类再调用该变量。用关键字static声明。静态方法也是同样,可以直接调用。
实例变量:就是相当于该类的属性,需要先初始化该类,就是new 该类后,才可以调用。但是该类未被再次使用被垃圾回收器回收后,该实例也将不存在了,就是不在内存中了。
虽然说的通俗,但是本质就是这样。理解就行。
给分吧。
静态变量:独立存在的变量,只是位置放在某个类下,可以直接类名加点调用静态变量名使用。并且是项目或程序一启动运行到该类时就直接常驻内存。不需要初始化类再调用该变量。用关键字static声明。静态方法也是同样,可以直接调用。
实例变量:就是相当于该类的属性,需要先初始化该类,就是new 该类后,才可以调用。但是该类未被再次使用被垃圾回收器回收后,该实例也将不存在了,就是不在内存中了。
虽然说的通俗,但是本质就是这样。理解就行。
给分吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
静态变量是从你使用到这个类开始一直到程序结束
实例变量是在这个变量的作用域存在,比方函数里面的局部实例变量,在函数返回时就不存在了
实例变量是在这个变量的作用域存在,比方函数里面的局部实例变量,在函数返回时就不存在了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询