一、实例变量
定义在类中的变量成为实例变量,又称类的成员变量。具有默认的初始值,从属于类由类生成对象时,才分配存储空间,各对象间的实例变量互不干扰,能通过对象的引用来访问实例变量。
java多线程中,实例变量是多个线程的共享资源,在同步访问时可能出现的问题。
二、类变量
类变量也称静态变量,用static关键字修饰。一个类的静态变量,所有由这类生成的对象都共用这个类变量,类装载时就分配存储空间。一个对象修改了变量,则所以对象中这个变量的值都会发生改变。
三、局部变量
局部变量是方法中或者局部块中声明定义的变量或方法,没有默认初始值,赋值后才能使用。
成员变量、局部变量和静态变量的区别:
成员变量 | 局部变量 | 静态变量 | |
定义位置 | 类中、方法外 | 方法中或方法形式参数 | 类中、方法外 |
初始化 | 默认初始值 | 无默认初始值,需赋值后才能使用 | 默认初始值 |
调用方式 | 对象调用 | / | 对象调用或类名调用 |
存储位置 | 堆 | 栈 | 方法区 |
生命周期 | 与对象共存亡 | 与方法共存亡 | 与类共存亡 |