Java方法参数传递的两种类型

在Java中方法参数传递中有两种类型,基本类型和引用类型,对应两种方法参数的传递也有相关的注意事项。

1:基本类型

对于基本类型方法参数的传递当形式参数的改变不影响实际参数的值。

package demo;
/**
 * @author ln
 * @date 2022/1/6
 * @description 方法参数的传递(基本类型)
 */
public class AtrgsTest {
    public static void main(String[] args) {
        int number = 100;
        System.out.println("调用change方法前:" + number);
        change(number);
        System.out.println("调用change方法后:" + number);
    }
    public static int change(int number) {
        number = 200;
    }
}
调用change方法前:100
调用change方法后:100

控制台两次输出的都是100,现在来解释为何会是这样。程序在第一次执行到main方法时会在栈内存中加载main方法接着再将int number = 100 加载进然后输出,当执行到调用change方法时程序会跳转到change方法,该方法中传递的参数为int number,此时为实际参数“int number = 100”传入的,所以此时change方法中的参数值为100,然后change方法继续执行将参数值修改为200,此时change方法执行完毕在栈内存中就会将该方法剔除但是main方法还没有执行完依然在栈内存中所以int number依然为100。

2:引用类型

对于引用类型形参的改变会影响实参的值。

package demo;
/**
 * @author ln
 * @date 2022/1/6
 * @description 方法参数的传递(引用类型)
 */
public class AtrgsTest02 {
    public static void main(String[] args) {
        int [] arr = {10,20,30};
        System.out.println("调用change方法前" + arr[1]);
        change(arr);
        System.out.println("调用厂方法后" + arr[1]);
    }
    public static void change(int [] arr) {
        arr[1] = 200;
    }
}
调用change方法前20
调用厂方法后200

对比基本类型之所以会是这样就是因为当代码执行到“int [] arr = {10,20,30};”时会开辟一个堆内存用于存储{10,20,30}当再执行到change方法时会通过地址在堆内存中修改arr[1]的值,change方法执行完后,堆内存中被修改内容不会发生改变所以才会如此输出。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值