public class Variable { private int r;//这就是成员变量,会被初始化为0 public float area(int r){ float pi;//这是局部变量,不会被初始化为0.0,需要自己初始化一个值,否则出错 pi=3.14F; return pi*r*r; }}
作用域不一样,用途也不太一样 成员变量属于实例,也就是说作用范围在整个实例对象里 局部变量属于方法或某个花括号内,也就是说作用范围仅限于方法或某个花括号内class Test { int i = 10; //成员变量,作用范围在整个实例(static不能直接访问) public void test() { int j = 20; //局部变量,作用范围在test方法内 {int k = 30; //花括号内局部变量,作用范围在花括号内 System.out.println(j); 这个花括号属于test方法内,所以j在这里可以访问 }
public class Variable {
private int r;//这就是成员变量,会被初始化为0
public float area(int r){
float pi;//这是局部变量,不会被初始化为0.0,需要自己初始化一个值,否则出错
pi=3.14F;
return pi*r*r;
}}
成员变量属于实例,也就是说作用范围在整个实例对象里
局部变量属于方法或某个花括号内,也就是说作用范围仅限于方法或某个花括号内class Test {
int i = 10; //成员变量,作用范围在整个实例(static不能直接访问) public void test() {
int j = 20; //局部变量,作用范围在test方法内 {int k = 30; //花括号内局部变量,作用范围在花括号内
System.out.println(j); 这个花括号属于test方法内,所以j在这里可以访问
}
//System.out.println(k); //离开了上面的花括号,k的生命就结束了,所以这里不能访问k
} public void test02() {
System.out.println(i); //i的作用范围在整个实例里,所以test02方法也能访问i
//System.out.println(j); //离开了test方法,j的生命就结束了,所以这里不能访问j
//System.out.println(k); //同样的,这里不能访问k
}
}在用途上,局部变量一般是辅助方法而定义的临时变量,而成员变量表现为实例的属性,也就是说具有一定的意义。
private String member = ""; // 这个是成员变量
public void foo() {
String tmp = "foobar"; // 这个是局部变量
// 局部变量tmp的作用域只在foo方法内
// 而成员变量member的作用域是整个类A
// 比如在A的任意方法内我都可以使用成员变量
member += tmp;
}
public String getMember() {
return member; // member可以在A中任何地方使用
// 而tmp只在foo方法内才具有作用域
}
}