首页 > 编程语言 > 详细

java中的值传递和引用传递

时间:2019-07-21 22:45:27      阅读:68      评论:0      收藏:0      [点我收藏+]
 
//实现两个数值的交换
地址传递 通过传递同一个地址操作的是同一数组或者不同数组;
值传递:传递的是简单数据类型  在栈当中进行交换  没有对堆中的数组的值造成影响 所以交换的结果不会发生改变
首先 形参a,b是形参 只能在函数内部起作用 在函数外部不起作用
其次:当在传值过程中 a在栈中和b发生了交换  没有通过地址调用数组中对应的堆中的值  所以值传递不会使得最终数组中的值发生交换
 
  int[] arr = {4,5};
 
//值传递
  change2(arr[0],arr[1]);
  System.out.println(arr[0]+" "+arr[1]);
              
//引用传递
  change(arr);
  System.out.println(arr[0]+" "+arr[1]);
  }
 
  public static void change(int[] arr) {
  arr[0] = arr[0] ^ arr[1];
  arr[1] = arr[0] ^ arr[1];
  arr[0] = arr[0] ^ arr[1];
   }
 
  public static void change2(int a, int b) {
  a = a^b;
  b = a^b;
  a = a^b;
  }
 
 址传递的特殊情况:如果函数内部的引用重新进行了指向,函数内部不能改变外部的值
 public static void main(String[] args){
    int[] arr4 = [4,5];
    change(arr4);
 }
 
 public static void change(int[] arr){
    int[] arr1 = {5,6};
    arr = arr1;
    arr[0] = arr[0] ^ arr[1];
  arr[1] = arr[0] ^ arr[1];
  arr[0] = arr[0] ^ arr[1];
}
 
 
 
 

java中的值传递和引用传递

原文:https://www.cnblogs.com/fuyunhou-boke-07/p/11222690.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!