成员变量、局部变量、静态变量的区别

来源:互联网 发布:什么叫大数据金融 编辑:程序博客网 时间:2024/06/05 21:56

本文目录

    • 本文目录
    • 开篇明志
    • 为什么有栈内存和堆内存之分
    • 成员变量和局部变量的区别
    • 成员变量和静态变量的区别
    • 成员变量局部变量静态变量的区别

开篇明志

利用本文总结一下Java中这三种变量的区别


为什么有栈内存和堆内存之分?

栈内存:
当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁。因此,所有方法中定义的局部变量都是放在栈内存中的;

堆内存:
在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大), 这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另个一个引用变量所引用(在方法的参数传递时很常见),则这个对象依然不会被销毁。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收器才会在合适的时候回收它。


成员变量和局部变量的区别

成员变量:
①成员变量定义在类中,在整个类中都可以被访问。
②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
③成员变量有默认初始化值。


局部变量:
①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
②局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
③局部变量没有默认初始化值
在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找。


成员变量和静态变量的区别

1.两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。

2、调用方式不同
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。

3、别名不同
成员变量也称为实例变量。
静态变量也称为类变量。

4、数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。


成员变量、局部变量、静态变量的区别

项目 成员变量 局部变量 静态变量 定义位置 在类中 , 方法外 方法中 , 或者方法的形式参数 在类中 , 方法外 初始化值 有默认初始化值 无 , 先定义 , 赋值后才能使用 有默认初始化值 调用方式 对象调用 --- 对象调用,类名调用 存储位置 堆中 栈中 方法区 生命周期 与对象共存亡 与方法共存亡 与类共存亡 别名 实例变量 --- 类变量
0 0
原创粉丝点击