【java】值传递 和 引用传递的区别和简单使用

1.基本数据类型存在栈内(如:int)。

在main中定义变量,传递给别的方法时(如下swap1方法),传递的是该变量的一个副本,最终并没有改变main函数中的变量值。

2.引用数据类型存在堆内(如:数组)。

在main中定义变量(变量存于堆内),变量传递给别的方法时(如下swap2方法)是 在栈内执行指令,而该指令指向的是内存地址。如下代码中的main方法和swap2方法的变量传递都是指向内存地址,可以成功交换。

代码如下:

public class Transmit { 
    public static void main(String[] args) { 
        int number1 = 1; 
        int number2 = 6; 
        swap1(number1, number2); 
        System.out.println("number1: "+ number1 +"   number2: " + number2); 
        System.out.println("------------------------"); 
        int[] numbers ={2,4}; 
        swap2(numbers); 
        System.out.println("numbers[0]: "+numbers[0]+"   numbers[1]: "+numbers[1]); 
    } 
    //值传递 
    public static void swap1(int num1, int num2){ 
        int temp = num1; 
        num1 = num2; 
        num2 = temp; 
    } 
    //引用传递 
    public static void swap2(int[] nums){ 
        int temp = nums[0]; 
        nums[0] = nums[1]; 
        nums[1] = temp; 
    } 
} 

结果如下:
图片

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值