当前位置: 首页 > news >正文

变量的经典

大家知道,成员变量存在于堆内存,局部变量存在于栈中。

public class Test {
    int a;
    int b;
    public void f(){
        a = 0;
        b = 0;
        int[] c = {0};
        g(b,c);
        System.out.println(a + " " + b + " " + c[0]);
    }
    public void g(int b, int[] c){
        a = 1;
        b = 1;
        c[0] = 1;
    }
    public static void main(String[] args) {
        Test t = new Test();
        t.f();
    }
}

代码分析:

当执行到:

1.t.f()方法的时候,f()方法被调用

2.a = 0; b= 0;c[0] = 0;

3.调用g(b,c)方法,然后传入2个局部变量,b和c

 g的方法中,由于a和b是成员属性,存储在堆内存中,

  此时的将a=1,c[0]=1(主要是数组中存储的是数组的引用,即是地址值如:0x0012)

  而根据就近原则来说,b = 1,赋值给局部变量,局部变量随着方法的执行完成,弹栈,

  局部变量随着方法的弹栈而消失,所以成员变量b的值仍然是0;

最后的结果为: a= 1  b = 0 ; c[0] = 1

 

转载于:https://www.cnblogs.com/donghaibin/p/9169297.html

相关文章:

  • 从cookies 获取token
  • python - Linux C调用Python 函数
  • IIS 7 应用程序池自动回收关闭的解决方案
  • FullScreenPopNavigationController
  • tp5多条件查询
  • 本地电脑与远程服务器之间不能复制粘贴解决方法
  • 八 原型prototype和__proto__
  • SQL存储过程解密
  • 数据库可视化工具简介以及pymysql的使用
  • Mysql-慢查询日志
  • ztree异步加载树节点
  • 分页插件PageHelper配置步骤(mybatis)
  • 快速排序的C++版
  • 新建存过,查询表结构的方法。
  • 金额转换问题
  • 分享一款快速APP功能测试工具
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 03Go 类型总结
  • 2017 年终总结 —— 在路上
  • JavaScript函数式编程(一)
  • Java多态
  • js面向对象
  • js中的正则表达式入门
  • Markdown 语法简单说明
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Objective-C 中关联引用的概念
  • Spring核心 Bean的高级装配
  • V4L2视频输入框架概述
  • vagrant 添加本地 box 安装 laravel homestead
  • 编写符合Python风格的对象
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 基于axios的vue插件,让http请求更简单
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 前端面试总结(at, md)
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 自动记录MySQL慢查询快照脚本
  • 阿里云服务器如何修改远程端口?
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ()、[]、{}、(())、[[]]命令替换
  • (26)4.7 字符函数和字符串函数
  • (3)(3.5) 遥测无线电区域条例
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (篇九)MySQL常用内置函数
  • (小白学Java)Java简介和基本配置
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .NET CLR Hosting 简介
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .net程序集学习心得
  • .Net各种迷惑命名解释
  • .NET项目中存在多个web.config文件时的加载顺序
  • @JSONField或@JsonProperty注解使用
  • @KafkaListener注解详解(一)| 常用参数详解