交换数组中俩个元素的位置

简单的交换数组中俩个元素的位置,{ 8,12 }交换后为{ 12,8 }.
同样交换俩个数字,比如这样的代码

public static void swap(int a, int b) {
  int t = a;
  a = b;
  b = t;
 }

然后再打印的话,实际上是交换不了的。因为此时的 a, b只是形参,我们知道形参的改变不会影响实参的变化,因此交换不了。那么为什么数组可以交换呢,让我们来看一下。

public static void swap(int[] arr,int i, int j) {
  int t = arr[i];
  arr[i] = arr[j];
  arr[j] = t;
 }
 
 public static void main(String[] args) {
  int[] array = { 8, 12 };
  System.out.println(Arrays.toString(array));
  swap(array, 0, 1);
  System.out.println(Arrays.toString(array));
 }

在打印时,首先定义了一个数组,因此在栈中申请了一个栈帧,此时的array是指向{ 8, 12 }的。
在这里插入图片描述
第二次打印时,调用了swap方法,array此时还是指向{ 8,12 },此时{ 8,12 }的下标为 0 和 1 ,然后arr[ i ] 的值赋给 t ,t 此时为8,arr[j] 的值赋给 arr[i],arr[i]的值此时为12,最后 t 的值赋给arr[i],此时arr[j]为8,这就完成了俩个值的交换。
在这里插入图片描述
在这里插入图片描述
最后完成交换之后,array这个栈帧就完成了他的任务,会被消亡移出栈,可以看到此时Array指向的数组变成了{ 12,8 }。
在这里插入图片描述
最后是编译运行的一个结果:
在这里插入图片描述
这样,就简单的完成了数组中俩个元素值的交换。
同时,我们还需要记住形参的改变不会影响实参的改变这句话。

发布了10 篇原创文章 · 获赞 0 · 访问量 200

猜你喜欢

转载自blog.csdn.net/CHgoing/article/details/103152727
今日推荐