java变量的分类
java变量大致可以分为三类,第一类为局部变量;第二类为成员变量(通常也称为实例变量);第三类为静态变量。
第一类:局部变量(local variable)
局部变量是方法或语句块内部定义的变量,其生命周期是从声明位置开始到方法或语句块执行完毕为止。局部变量在使用前必须先声明并初始化(赋值),否则会出错。
局部变量的初始化有两种方式,一种是先定义再初始化,代码中方式一所示,另外一种是定义的同时进行初始化,如方式二所示。public class TestVariable{
public static void main(String[] args){
//方式一
int age;
age=18;
//方式二
int weight=50;
//错误赋值示例!!!注意这样写是错误的,不要模仿!!!!
class height{
int height;
}
height=180;
} }1234567891011121314
错误使用示例一:在这里虽然定义了身高height,也有初始化,为什么会报错呢?原因在于之前说的语句块的概念,class height{}定义的是height类,也就是一个语句块,局部变量只能在语句块内才能使用,简单点理解就是在一个括号内是可以使用的,虽然也进行赋值了,但是赋值语句在括号之外 ,因此出现报错的情况。
错误使用示例二:在test1中虽然定义了 i 但是没有初始化,因此在执行 j =i+5的时候会报错,正确的写法如test2中所示。public void test1(){
int i;
int j=i+5;//编译出错,变量i还没有初始化
}
public void test2(){
int i=1;
int j=i+5;//编译正确
}12345678
第二类:成员变量(member variable)
在某个方法外部,类内部定义的变量,从属于对象,生命周期伴随对象始终。如果不自行初始化,它会自动初始化成该类型默认的初始值。部分变量的默认初始值如下表所示数据类型初始值int0
double0.0
char‘\u0000’
booleanfalsepublic class TestVariable{
int a;//成员变量,会自动初始化
public static void main(String[] args){
.....
} }123456
第三类:静态变量(static variable)
静态变量使用static定义,从属于类,声明周期伴随类始终,从类加载时产生,类卸载时结束。如果不进行初始化,与成员变量一样,会自行初始化成该类型的默认初始值。public class TestVariable{
static int a;//静态变量,会自动初始化
public static void main(String[] args){
.....
} }123456
小结类型声明位置从属关系生命周期局部变量方法或语句块内部方法、语句块从声明位置开始,直到方法或语句块执行完毕时,局部变量消失
成员变量(实例变量)类内部、方法外部对象成员变量伴随对象的创建和消失而产生和消失,即当对象被创建时,成员变量也跟着创建;当对象消失时,成员变量也随之消失
静态变量(类变量)类内部(需要用static修饰)类当类被加载时,静态变量有效,类被卸载时,静态变量消失