交换两个数组里的元素(首尾交换)(java)

交换两个数组的元素首尾交换

方法一:将两个数组的对应元素,一一交换一遍就可以了,但是这两个数组的长度必须是一样长的,否则就没法交换了。
package ChangeTwoArray;

public class ChangeTwoArray {
     public void ChangeTwoArray(int[] a,int[] b){
         //先有两个数组
       //方法一:对位置的元素交换即可
         for(int i=0;i<a.length;i++){
             int temp=a[i];
             a[i]=b[i];
             b[i]=temp;
         }
         //最后输出验证一下
         for(int value:a){
             System.out.print(value+" ");
         }
         System.out.println("\n"+"--------------------------");

         for(int value:b){
             System.out.print(value+" ");
         }
     }

}

package ChangeTwoArray;

public class TestMain {
    public static void main(String[] args){
        int[] a={1,2,3,4,5};
        int[] b={6,7,8,9,10};
        ChangeTwoArray changeTwoArray=new ChangeTwoArray();
        changeTwoArray.ChangeTwoArray(a,b);
    }

}

总之,这里主要是想说一下参数和返回值的问题,还是画个原理图比较清楚吧
在这里插入图片描述

方法二:我们可以直接交换两个数组的地址,从而达到将两个数组的元素进行交换,这种交换方式突破了数组长度的限制,
package ChangeTwoArray;

public class ChangeTwoArray {
     public int[][]  ChangeTwoArray(int[] a,int[] b){
         //先有两个数组
       //方法一:对位置的元素交换即可
         for(int i=0;i<a.length;i++){
             int[] temp=a;
             a=b; 
             b=temp;
         }

         //接返回值,才能得到交换的结果,否则交换的临时空间消失后,无法达到交换
         int[][] result={a,b};
         return result;


     }

}


package ChangeTwoArray;

public class TestMain {
    public static void main(String[] args){
        int[] a={1,2,3,4,5,59,30,58};
        int[] b={6,7,8,9,10};
        ChangeTwoArray changeTwoArray=new ChangeTwoArray();
        //用一个[][] value二维数组来接返回值
        int [][] value=changeTwoArray.ChangeTwoArray(a,b);
        a=value[0];
        b=value[1];

        //最后输出验证一下
        for(int v:a){
            System.out.print(v+" ");
        }
        System.out.println("\n"+"--------------------------");

        for(int v:b){
            System.out.print(v+" ");
        }
    }

}

在这里插入图片描述
方法二中的这里,主要是想强调一下,为什么地址交换完后需要接返回值,不接可以吗?当然不行。因为方法是储存在堆内存的对象空间的,执行时在栈内存的临时空间,方法执行完,没有接返回值,临时空间消失(就相当于红色部分和蓝色部分都消失了),原地址没有改变,,就相当于没有交换过来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值