// 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
}