主要介绍局部变量,成员变量,静态变量(全局变量)的定义,作用域或声明周期,访问权限,默认值,内存的分配,它们的区别:
局部变量 | 成员变量(实例变量) | 静态变量(类变量或全局变量) | |
声明或定义 | 声明在方法体(方法,构造方法或代码块)内部,也就是“{}”中 | 声明在类里面,在方法体(方法,构造方法或代码块)之外 | 在类中以static关键字声明,在方法体(方法,构造方法或代码块)之外 |
作用域或生命周期 | 方法或块被执行时创建,执行完“{}”就释放 | 实例变量创建时创建,对象销毁时释放 | 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝,程序开始时创建,结束时释放 |
访问权限 | 不能用修饰符,方法体中可见 | 有修饰符,public修饰子类可见,private 修饰本类可见 | 有修饰符,但经常被修饰为publc/private,final和static类型的常量 |
初始化值或默认值 | 没有默认值,必须初始化赋值 | 有默认值,引用类型为null,其他为基本数据类型默认值 | 有默认值,引用类型为null,其他为基本数据类型默认值 |
内存分配 | 局部变量在所在方法调用时,存在栈内存空间中 | 成员变量在所在类被实例化后,存在堆内存中 | 静态变量存放在内存的静态存储区 |
局部变量实例:
public class TestPeople {
public void people() {
int age = 0;
//int age; //如果声明不初始化
age = age + 18; //这里就会报错要initialized
System.out.println("age=" + age);
}
}
成员变量,静态变量实例:
public class TestPeople {
public String name; //成员变量
private int age;//私有成员变量
public static String sex="男"; //静态变量
private static final String BIRTHDAY="xx月xx日"; //常量
}
注:静态变量可以通过类的名字调用如:
TestPeople.sex