Open MoJieBlog opened 4 years ago
我理解的和楼上差不多,但是有的地方还不是太一样。当然这也是我自己的理解,欢迎指正。
成员变量:生命周期伴随类对象,类对象回收时回收 存在堆里 静态变量:不回收 在方法区 随着类的加载而加载,随着类的消失而消失,由于类需要非常长时间的不使用,不利用,不关联,才有可能会被回收机制回收, 所以静态成员变量的生命周期特别长,除非是共享数据,否则不建议使用静态; 局部变量:方法调用时创建 方法结束时被标记为可回收 存在栈里
这个可以通过饿汉式的单例模拟为撒没有并发问题去理解
成员变量:生命周期伴随类对象,类对象回收时回收 存在堆里 静态变量:不回收 在方法区 随着类的加载而加载,随着类的消失而消失,由于类需要非常长时间的不使用,不利用,不关联,才有可能会被回收机制回收, 所以静态成员变量的生命周期特别长,除非是共享数据,否则不建议使用静态; 局部变量:方法调用时创建 方法结束时被标记为可回收 存在栈里
局部变量:方法调用时创建 方法结束时被标记为可回收 存在栈里 局部变量也可以存在堆里,比如: public void a(){ Object a = new Object(); }
个人简单理解(java基础的东西):
3.静态变量:比较常用,大家都可以直接调用(类名直接 . ***就可以了 ) ,随着类创建而创建,类消失它也消失
欢迎指正一下,有事容易记混