Java swap pass-by-value


// Java uses pass-by-value
static void swap(int p, int q) {
    int t = p;
    p = q;
    q = t;
}

// Java uses pass-by-value
static void swap2(int[] p, int[] q) {
    int t = p[0];
    p[0] = q[0];
    q[0] = t;
}

// Java uses pass-by-value
static void swap(int[] p, int[] q) {
    int[] t = p;
    p = q;
    q = t;
}

// Java uses pass-by-value
static void swap2(int[][] p, int[][] q)  {
    int[] t = p[0];
    p[0] = q[0];
    q[0] = t;
}

// Java uses pass-by-value
static void swap(Point p, Point q) {
    Point t = p;
    p = q;
    q = t;
}

// Java uses pass-by-value
static void swap2(Point p, Point q) {
    double[] t = p.get(); // T t = p
    p.set(q.get());  // p = q
    q.set(t);  // q = t
}

////////////////////////////////////////

public static void main(String[] args) {
    Point p1 = new Point(10.5, 10.7);
    Point p2 = new Point(1.5, 1.7);

    swap(p1, p2);
    System.out.println(“After swap p1=” + p1 + ” p2 ” + p2); // p1=(10.5, 10.7) p2=(1.5, 1.7)
    swap2(p1, p2);
    System.out.println(“After swap2 p1=” + p1 + ” p2 ” + p2); // p1=(1.5, 1.7) p2=(10.5, 10.7)

    int[] arr1 = { 1, 2, 3 };
    int[] arr2 = { 4, 5, 6, 7, 8 };
    swap(arr1, arr2);
    System.out.print(“arr1: “);
    System.out.println(Arrays.toString(arr1)); // arr1: [1, 2, 3]
    System.out.print(“arr2: “);
    System.out.println(Arrays.toString(arr2)); // arr2: [4, 5, 6, 7, 8]

    int[][] array1 = { new int[] { 1, 2, 3 } };
    int[][] array2 = { new int[] { 4, 5, 6, 7, 8 } };
    swap2(array1, array2);
    System.out.print(“array1: “);
    System.out.println(Arrays.toString(array1[0])); // array1: [4, 5, 6, 7, 8]
    System.out.print(“array2: “);
    System.out.println(Arrays.toString(array2[0])); // array2: [1, 2, 3]

    int a = 10;
    int b = 20;
    swap(a, b);
    System.out.println(“a=” + a); // a=10
    System.out.println(“b=” + b); // b=20

    int[] a2 = { 10 };
    int[] b2 = { 20 };
    swap2(a2, b2);
    System.out.println(“a2=” + a2[0]); // a2 = 20
    System.out.println(“b2=” + b2[0]); // b2 = 10
}