博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
方法的值传递机制练习
阅读量:5054 次
发布时间:2019-06-12

本文共 872 字,大约阅读时间需要 2 分钟。

理解方法的值的传递的流程:

package com;class value {    int i = 15;}public class pass {    public static void main(String[] args) {        pass p=new pass();        p.first();    }    public void first() {        int i = 5;        value v1 = new value();        v1.i = 25;        second(v1, i);        System.out.println(v1.i);    }    public void second(value v2, int i) {        i = 0;        v2.i = 20;        value val = new value();        v2 = val;        System.out.println(v2.i + " " + i);    }}

这里,当first方法调用second方法时,将v1的value方法的地址传递给了v2,而v2改变了v1所在的那个value方法的值,变成了20

当val重新调用的value的地址,value里面的数值还原,即int=15,然后将val调用的value的新的地址赋给了v2,所以值也就是15,(v2当改变完了v1所在的value堆空间的数值之后,就改变了指向的地址,变成了val的地址)
而这里面的int是存在于栈空间的,不是在value方法的堆空间里,所以调用了value对于i没有声明影响。
输出之后,释放了second所存的数值,但是v1所在的value方法的数值没有释放,所以输出的v1是v2所改变后的数值,即为20

转载于:https://www.cnblogs.com/KeepCalmAndNeverSayNever/p/10166001.html

你可能感兴趣的文章
中国象棋程序的设计与实现(一)--项目截图
查看>>
十一月书稿
查看>>
两只小熊队高级软件工程第九次作业敏捷冲刺4
查看>>
推荐一个好用的虚拟主机
查看>>
ulimit
查看>>
php代码执行顺序
查看>>
php 写入数据到MySQL以及从MySQL获取数据,页面出现乱码的解决方法
查看>>
MYSQL视图的学习笔记
查看>>
爬虫基础
查看>>
laravel常用artisan命令
查看>>
130292015038 张雅周 第一章作业
查看>>
获取文件字段并生产一个新的页面
查看>>
IIS 添加 MIME
查看>>
[转]协同管理系统
查看>>
安装了OFFICE2007,每次打开word时都显示配置microsoft office professional plus 解决方法...
查看>>
联合体和结构体的区别
查看>>
相同文件名引发的教训
查看>>
android调用系统相机并获取图片
查看>>
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
查看>>
Spark共享变量(广播变量、累加器)
查看>>