Java参数在方法中的传递

实际代码

public class demo8 {
    void fun1(int i, int j) {
        i = i + 5;
        j = j + 5;
        System.out.println("fun1-i:" + i);
        System.out.println("fun1-j:" + j);
    }

    void fun1(P y) {
        y.i = y.i + 5;
        y.j = y.j + 5;
        System.out.println("fun1-y-i:" + y.i);
        System.out.println("fun1-y-j:" + y.j);
    }

    public static void main(String[] args) {
        demo8 x = new demo8();
        int i = 10;
        int j = 20;
        x.fun1(i,j);
        System.out.println("main-i:" + i);
        System.out.println("main-j:" + j);
        System.out.println("================");
        P y = new P();
        y.i = 10;
        y.j = 20;
        x.fun1(y);
        System.out.println("main-y-i:" + y.i);
        System.out.println("main-y-j:" + y.j);
    }
}
class P {
    int i;
    int j;
}

具体的解析

当方法中参数是基本类型时:

  1. 在栈区储存
    这里写图片描述

  2. 在栈区中创建参数的副本
    这里写图片描述

  3. 对副本进行操作
    这里写图片描述

    结论:基本类型的值在操作后原始的值并没有改变

当方法中参数是类类型(引用类型)时:

  1. 在栈区储存类(对象)在堆区的地址,在堆区储存具体的类的属性和方法
    这里写图片描述

  2. 在栈区创建类在堆区的副本,并且这个副本还是指向之前的堆区地址
    这里写图片描述

  3. 对类在堆区储存的属性和方法进行操作
    这里写图片描述
    结论:类类型的值在操作后,原始的值会发生变化

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值