本帖最后由 百里青山 于 2016-4-5 12:32 编辑
Java变量中有成员变量和局部变量 例子 public class AAA{
{
int i = 0; // 代码块中的局部变量开始存在
}// 代码块中的局部变量销毁
public static int a = 4; // 类Field
public int b = 5; // 实例Field
public void print(int c,int d){ // 形参的局部变量开始存在
int kk = 0; // 函数中的局部变量开始存在
System.out.println(c + "" + d); //
}// 函数中的局部变量和形参被销毁
}
public class Test{
publci static void main(String[] args){//类Field开始存在
AAA aaa = new AAA(); // 实例Field开始存在
System.out.println(AAA.a); // 类可以访问静态成员变量
System.out.println(AAA.b); // 类不能访问非静态成员变量
System.out.println(aaa.a); // 实例可以访问静态成员变量
System.out.println(aaa.b); // 实例可以访问非静态成员变量
aaa = null;
System.gc(); // 垃圾资源回收,实例被销毁,实例Field也被销毁
}// main函数调用完毕,类被销毁,类Field也被销毁
}
成员变量
分为类Field和实例Field。
成员变量的定义和初始化
类Field :定义时有static修饰的类成员变量,系统会为类Field默认初始化,不必显式初始。
实例Field:定义时没有static修饰的变量,系统会为实例Field默认初始化,不必显式初始化。
成员变量的访问范围
类Field :可以被类和实例访问。
实例Field:可以被实例访问,但不能被类访问。
成员变量的生命周期
类Field :从类的准备阶段开始存在,直至系统完全销毁这个类。
实例Field:从实例被创建后开始存在,直至系统完全销毁这个实例。
局部变量
分为代码块的局部变量,函数中的局部变量,函数形参
局部变量的定义和初始化
代码块局部变量 :在代码块中定义,必须显示初始化值。系统不会对它进行默认初始化。
函数中局部变量 :在函数中定义,必须显示初始化值。系统不会对它进行默认初始化。 函数形参局部变量:在函数形参中定义,不必显示初始化。
局部变量的生命周期 代码块局部变量 :在代码块中定义时开始存在,当执行完代码块中的代码后,被系统销毁。
函数中局部变量 :在函数中定义时开始存在,当函数体执行完毕后,被系统销毁。 函数形参局部变量:和函数中局部变量一样。
成员变量和局部变量的内存分配
成员变量:一般存在堆中。
局部变量:总是保存在其所在函数或代码块的栈内存中。 |