如何交换两点的坐标?

How to swap the coordinates of two point?

我定义了两个点,p1和p2。我想写一个方法 swapPoints 用 p2 替换 p1 的 x 和 y 坐标,反之亦然。

我可以通过创建一个虚拟的临时点轻松地做到这一点,但是,我只想使用 p1 和 p2 这两个点来做到这一点。正如您通过我的尝试所看到的,我只能替换一个点的坐标。我试过使用 ^= 函数,但是它也没有给我正确的坐标。

import java.awt.Point;

public class SwapCoord{
    public static void main(String[] args) {
        Point p1 = new Point(5, 2);
        Point p2 = new Point(-3, 6);
        swapPoints(p1, p2);
        System.out.println("(" + p1.x + ", " + p1.y + ")");
        System.out.println("(" + p2.x + ", " + p2.y + ")");
      }
    public static void swapPoints(Point p1, Point p2) {
        p1.x = p2.x;
        p1.y = p2.y;

        p2.x = p1.x;
        p2.y = p1.y;
    }
}

使用 xor 交换两个值背后的想法是,将一个值与自身进行异或等于零,因此您可以通过以下方式交换两个整数:

public static void swapPoints(Point p1, Point p2) {
    p1.x ^= p2.x;
    p2.x ^= p1.x;
    p1.x ^= p2.x;

    p1.y ^= p2.y;
    p2.y ^= p1.y;
    p1.y ^= p2.y;
}