成员变量与局部变量有何区别,举例说明一下?

解决方案 »

  1.   


    public class Variable {
    private int r;//这就是成员变量,会被初始化为0
    public float area(int r){
    float pi;//这是局部变量,不会被初始化为0.0,需要自己初始化一个值,否则出错
    pi=3.14F;
    return pi*r*r;
    }}
      

  2.   

    作用域不一样,用途也不太一样
    成员变量属于实例,也就是说作用范围在整个实例对象里
    局部变量属于方法或某个花括号内,也就是说作用范围仅限于方法或某个花括号内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
        }
    }在用途上,局部变量一般是辅助方法而定义的临时变量,而成员变量表现为实例的属性,也就是说具有一定的意义。
      

  3.   

    class A {
    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方法内才具有作用域
    }
    }
      

  4.   

    1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型2.成员变量存储在堆,局部变量存储在栈3.存在时间不同4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值