深入java的swap函数

1,503 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

每天一小步,成功一大步。大家好,我是程序猿小白 gw_GW,很高兴能和大家一起学习每天小知识。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

本文主要讲述java中的swap函数的实现。

swap

今天写了一下c语言的swap函数,不由得想起了Java中的swap函数如何实现。Java中是没有址传递的,只有值传递,因此会有下面的现象。

public class swapTest {
    public static void main(String[] args) {
        int a = 4;
        int b = 5;
        swap(a,b);
        System.out.println("a= "+a+"  "+"b= "+b);
    }
    public static void swap(int a,int b){
        int temp = a;
        a = b;
        b = temp;
    }
}

image.png 我们发现这样并不能真正的交换两个数的值。那我们应该怎么在java中实现swap函数呢?

参考了网上的很多方法,最实用的无疑是直接进行交换。

那你不禁要骂我了,这么简单还用你讲?

那我们接下来就看看如何使用“高大上”方法来实现。

使用数组实现

public class swapTest {
    public static void main(String[] args) {
        int a = 4;
        int b = 5;
        int arr[] = swap(a,b);
        a = arr[0];
        b = arr[1];
        System.out.println("a= "+a+"  "+"b= "+b);
    }
    public static int[] swap(int a,int b){
        int arr[] = {b,a};
        return arr;
    }
}

image.png 这种方法也算是简单易懂的了,但是是不是感觉并没有比简单的交换语句简单多少?

再来看下面一种方法

外部内联

class Change{
    int i;
    int j;
    public Change(int i,int j){
        this.i = i;
        this.j = j;
    }
    public void swap(Change c){
        int temp = c.i;
        c.i = c.j;
        c.j = temp;
    }
}
public class swapTest {
    public static void main(String[] args) {
        int a = 4;
        int b = 5;
        Change c = new Change(a,b);
        c.swap(c);
        a = c.i;
        b = c.j;
        System.out.println("a= "+a+"  "+"b= "+b);
    }
    public static int[] swap(int a,int b){
        int arr[] = {b,a};
        return arr;
    }
}

image.png 对于这种方法,我们首先要定义一个交换类,然后定义一个交换方法,在main中调用该方法即可。虽然这种方式也能够交换变量值,但是确实是没有直接交换简洁。

结语

因为Java中不能按照址传递,所以我们不能像C语言那样写一个交换函数,但我们也可以通过数组等其他方法来实现交换的功能,可以根据具体要交换的值的类型来决定使用什么方式交换,怎么交换。这个就靠大家开动脑筋了,虽然网上已经有很多例子了,但是却不一定是最适合你的。

一起加油吧!从一个简单的swap函数开始。