为什么输出的是10, 0不是10.20呢

class Point {
static int x;
int y;
}
class Test {
public static void main(String args[]) {
Point p1 = new Point();
Point p2 = new Point();
p1.x = 10;
p1.y = 20;
System.out.print(p2.x + ", ");
System.out.print(p2.y);
}
}

其实主要是静态变量和实例变量的区别:
x是静态变量,静态变量是属于类,放在方法区中,属于对象共享,所以p1修改x后,p2的x也会改变;
y是实例变量,归属与各对象,p1修改y不会影响p2中y的值。

首先实例化对象p1 ,p2指向的是不同的引用
然后第一次实例化p1时 设置x是10 y是20 嘛
之后由于x是静态的 所以只占一份内存 p1.x和p2.x指向同一个地址 x被p1.x=10改成了10
而p2的y是默认值 他和p1的y指向的地址不一样 其y当然是0呀 而p1才是 10,20

p1,p2是两个不同的变量
p1.x = 10;
p1.y = 20; 只给p1赋值
x是静态变量,所以p2.x=p1.x。
但y不是静态,所以p2.y=0
System.out.print(p2.x + ", "); 10
System.out.print(p2.y); 0