成员变量和局部变量区别

本文详细解析了Java中成员变量与局部变量的区别,包括它们在类中的位置、内存中的位置、生命周期、初始值的不同,以及如何解决重名问题。

成员变量和局部变量区别

  1. 在类中的位置不同
    成员变量:在类中方法外面
    局部变量:在方法或者代码块中,或者方法的声明上(即在参数列表中)
  2. 在内存中的位置不同
    成员变量:在堆中(方法区中静态区),成员变量属于对象,对象进堆内存
    局部变量:在栈中,局部变量属于方法,方法进栈内存
  3. 生命周期不同
    成员变量:随着对象的创建而存在,随着对象的消失而消失
    局部变量:随着方法的调用或代码块的执行而存在,随着方法的调用完毕或者代码块的执行完毕而消失
  4. 初始值
    成员变量:有默认初始值
    局部变量:没有默认初始值,使用前需赋值

注意:
成员变量和局部变量的重名问题,就近原则;
可以使用this关键字区分,this.string指的是类中的成员变量,而不是方法内部的。

public class Demo{
    String string= "成员变量";

    public static void main(String[] args) {
        new Demo().show();
    }

    public void show() {
        String string= "局部变量";
        System.out.println(string);
    }
}

输出结果:局部变量

输出的是show方法中定义的string变量,在使用变量时遵循的原则是就近原则;
Java中提供了this(表示调用对象本身)这个关键字用于访问成员变量。

public class Demo{
    String string= "成员变量";

    public static void main(String[] args) {
        new Demo().show();
    }

    public void show() {
        String string = "局部变量";
        System.out.println(this.string);
    }
}

输出结果:成员变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值