目录
1、什么是变量
从底层来说,就是计算机的一个内存单元,其中的内容是可以改变的。
2、变量的分类
成员变量(类变量、实例变量)、局部变量
3、成员变量(类变量和实例变量)之间的区别
- 修饰符:类变量需要用static关键字进行修饰,但是实例变量不用
- 调用方式:类变量是类类型的变量,其调用方式为【类名·属性名】的方式进行调用,但是实例变量需要先创建实例对象,因为实例变量是依赖于实例即对象存在的,是对象级别的成分,调用方式为【对象·属性名】的方式进行调用
- 内存位置:类变量分配在方法区内存中,是类共享的,是类级别的。实例变量在堆内存的为对象分配的内存单元中,与对象紧密关联,是对象级别的
- 生命周期:类变量在整个类的内部生存,随着类的加载而来,随着类的消亡而消亡;实例变量则是在创建对象的时候进行内存的分配,当对象的内存单元被垃圾回收机制回收,这个实例变量所占用的内存单元才会被释放。
4、成员变量和局部变量之间的区别
- 定义位置:成员变量定义在类体中,局部变量定义在方法体之内
- 作用域:成员变量的作用域在当前类中,但是局部变量的作用域是在其所在的方法体内,不管是方法的形参,还是方法体内所定义的变量都是局部变量。局部变量的作用域是以其所在方法体的头大括号开始到尾大括号结束。
- 初始化:成员变量在构造方法执行的时候会进行初始化操作,如果没有手动赋值,那么会为其设定默认值。局部变量是没有默认初始值的,初始值一定要通过传参或者人为的进行初始化,否则使用会报错。
- 内存位置:成员变量的内存分配在堆内存的对象内存单元中或者方法区内存的静态区内,但是局部变量的内存分配在栈内存内。
- 生命周期:成员变量的生命周期同上,但是局部变量的生命周期和方法的执行(压栈)有关,当方法执行,方法在栈内存中压栈,为局部变量分配内存,当方法执行结束,进行弹栈,局部变量的作用范围就结束了,变量所占用的内存空间被释放。