1、位置不一样
局部变量:在方法的内部
成员变量:在方法的外部、直接写在类当中
静态变量:在方法的外部、直接写在类当中
2、作用范围不一样(作用域)
局部变量:只有方法当中可用,出了方法就不可用
成员变量:整个类都可用
静态变量:整个类都可用
3、默认值不一样
局部变量:没有默认值,使用前必须手动赋值
成员变量:如果没有赋值,会有默认值,赋值规则和数组一样,特别的,如果被final修饰,必须显示的赋值。
4、内存的位置不一样
局部变量:位于栈内存
成员变量:位于堆内存
静态变量:方法区中的静态区
5、生命周期不一样
局部变量:随着方法栈而诞生,随着方法出栈而结束
成员变量:随着对象创建而诞生,随着对象被垃圾回收而结束
静态变量:随着类的加载而存在,随着类的消失而消失。
-------------------------------------------------------------------------------------------------------------------------
方法的参数是局部变量,局部变量需要先赋值才使用,参数在方法调用的时候必然会被赋值。
局部变量 | 成员变量 | 静态变量 | |
定义位置 | 方法中,或者方法的形式参数 | 在类中,方法外 | 在类中,方法外 |
初始化值 | 无,先定义,赋值后才能使用 | 有默认初始化值 | 有默认初始化值 |
调用方式 | --- | 对象调用 | 对象调用,类名调用 |
存储位置 | 栈中 | 堆中 | 方法区 |
生命周期 | 与方法共存亡 | 与对象共存亡 | 与类共存亡 |
别名 | --- | 实例变量 | 类变量 |