一、从作用域来分,java中的变量分为成员变量和局部变量
全局变量是C、C++中的概念,在java中就相当于成员变量
1.成员变量是在方法之外类之内的变量 ,作用范围在类之内(有修饰按修饰范围来),其生命周期随着所在类的产生和消逝而产生和消逝,成员变量随着new出来的实例保存在堆里面实例的空间内,成员变量可以不初始化,系统会自动初始化。
2.局部变量是在方法和语句块内部的变量,包括方法内部定义的变量和方法的参数,其生命周期生命范围限制在方法内部,局部变量保存在内存的栈中,局部变量必须初始化。
3.if语句中的变量只作用在if的大括号里面,出了大括号就不存在了。
二、在java中另一种区分方式是把变量分为静态变量和实例变量
1.静态变量,也称为类变量,使用static修饰的变量。静态变量在类被加载后在类的实例化之前就被放进内存了,在内存的数据区,而且只有一份,可以不用new出类的实例而使用类名直接供其他的方法来调用,直到程序结束一直存在于内存中。
2.实例变量,即new出来的类的变量,此变量存在与内存中的堆中,在栈中保留的是他们在堆里面的地址。
3.静态变量和实例变量都可以用作成员变量和局部变量