x和p.x; y和p.y;z和p.z总是分不清分别指代的是什么

class Point{
public int x;
public int y;
public int z;

public Point(int x, int y, int z) {
    this.x = x;
    this.y = y;
    this.z = z;
}

public void setX(int x) {
    this.x = x;
}

public void setY(int y) {
    this.y = y;
}

public void setZ(int z) {
    this.z = z;
}

public int getDistance(Point p) {
    return (x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z);
}

}

public class TestPoint {
public static void main(String [] args) {
Point p = new Point(1, 2, 3);
Point p1 = new Point(0, 0, 0);
System.out.println(p.getDistance(p1));

    p.setX(5);

    System.out.println(p.getDistance(new Point(0, 0, 0)));

}

}

关于 public int getDistance(Point p) {
return (x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z);
}
中的x和p.x; y和p.y;z和p.z总是分不清分别指代的是什么。大神能给我答疑解惑下吗?

这个方法中

public int getDistance(Point p) {
    return (x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z);
}

带p就不用解释了吧,就是p的x、y和z。
而这个不带p的,是你使用的对象中参数。
你自己写的测试代码太混乱了,System.out.println(p.getDistance(p1));这句与上面的代码很容易自己搞混了。起名字不要起这些容易混的,建议改成
System.out.println(point1.getDistance(point2));之类的,这样就好解释了,在调用getDistance时,方法中的x就是调用方法的对象的,即point1的,而传入的参数为point2,也就是说方法中的p指代的是point2.

p.x代表的就是getDistance(Point point)方法里的参数p1的x值,x就代表的是你调用这个方法的Point对象p

三维坐标,求出平方和!!