局部变量 | 成员变量 | ||||
分类 | 局部变量 | 实例变量 | 静态变量 | 常量 | |
别名 | 内部变量 | 类变量 | |||
定义位置 | 方法、构造方法、语句块中 | 类中,但在方法、构造方法和语句块之外 | |||
修饰符 | 无需 | public、protected、private transient 当对象被持久化时(例如写入数据库),该成员变量的值不需要保存 volatile 同步多线程访问的成员变量的值,以便使不同的线程总是得到该成员变量的同一个值 | 实例变量的基础上加上static | 静态变量的基础上加上final | |
初始值 | 无初始值,定义后使用需要赋值 | 默认初始值 | 默认初始值 | 创建时需要赋值 | |
调用方式 | 方法内调用 | 对象调用,static方法中使用需要new | 对象调用、类调用,可new可不new | 对象调用、类调用,可new可不new | |
存储位置 | 栈 | 堆 | 方法区(静态存储区) | 方法区(运行时常量池) | |
作用范围 | 方法内 | 1、本类中随便使用,static方法中使用需要new 2、非本类中,须看修饰符,使用需要new | 1、本类中随便使用 2、非本类中,须看修饰符,使用不需要new | 1、本类中随便使用 2、非本类中,须看修饰符,使用不需要new | |
生命周期 | 与方法共存亡,随着方法的入栈而生,方法的出栈而灭 | 与对象共存亡 | 与类共存亡 | 与类共存亡 | |
举例 | a(){int a=0;} | class a(){ int a; String b; } | class a(){ static int a; static String b; } | class a(){ final static int a = 0; final static String b = null; } | |
欢迎各位大佬评论区交流~