Java学习笔记——局部变量和成员变量

声明:本文首发于我的个人微信公众号【Java编程社区】,查看更多文章与学习资源请移步我的公众号Java编程社区

成员变量:定义在类中的变量。
局部变量:定义在方法中的变量。

成员变量与局部变量的区别:
1、应用范围

成员变量在整个类中有效

局部变量只在其声明的方法中有效

2、生命周期

成员变量:它属于对象,它随着对象的创建而创建,随着对象的消失而消失

局部变量:使用完马上释放空间

看段代码

void show(int id){
        for (int i = 0; i < 10; i++) {         
           for (int j = 0; j < 10; j++) {
                System.out.println(id);
            }
        }
    }

这里的id,i,j都是在方法内声明的,因此都是局部变量

id在show方法被调用时它的生命周期开始,方法结束时id消失

j当里层for循环执行时生命周期开始,当里层for结束,j消失

3、存储位置

成员变量属于对象,它存储在堆内,堆内的实体,当没有引用指向其时,才被垃圾回收处理。

局部变量存在于栈内存中,当不在使用时,马上就会被释放。

4、初始值

成员变量它存储在堆中,如果没有赋初值,它有默认值

  • 整数byte,short,int,long = 0

  • char = ‘\u0000’

  • boolean = false

  • String = null

  • float,double = 0.0

局部变量要想使用必须手动初始化

注意事项:

局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

内存分析
class Car {
    //汽车应该具备的属性
    String color;
    //汽车具备的颜色
    int num;    
    //汽车跑的行为
    public void run(){
        System.out.println(color + "的车,轮胎数: " + num + "个,跑起来了");
    }
}

public class CarDemo {
    public static void main(String[] args) {
        //创建实体
        Car car = new Car();
        car.color = "red";
        car.num = 4;        
        //指挥车运行,调用格式:对象.对象成员
        car.run();
    }
}

这里写图片描述
这里car其实是对象的引用,它存储的是一地址,这个地址指向了堆里的一块内存。这里的color和num都是成员变量,null和0是它们的默认值,”red”和4是赋给它们的初始值。

最后再来看个例子

class Variable {
    int a; //成员变量a,默认值是0

    public void test() {
        int b = 20;//局部变量b,没有默认值,需要初始化
        System.out.println(b);//20        
        int a = 50;//局部变量a,和成员变量a的名称相同
        System.out.println(a);//50
    }
} 
class VariableDemo {
    public static void main(String[] args) {
        Variable variable = new Variable();

        System.out.println(variable.a); //0,variable.a访问成员变量

        variable.test();//调用成员方法             
    }
} 

代码执行结果:
这里写图片描述

今天就分享到这,后续会继续分享,敬请期待!
声明:本文首发于我的个人微信公众号【Java编程社区】,查看更多文章与学习资源请移步我的公众号Java编程社区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C语言中文社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值