我可以在java中更改静态变量的值吗?你能告诉我为什么它会显示这个输出吗?

我可以在java中更改静态变量的值吗?你能告诉我为什么它会显示这个输出吗?,java,variables,static,Java,Variables,Static,//下面是静态变量的代码 class IdentifyMyParts{ 公共静态int x=7; 公共int y=3; } 公共类测试{ 公共静态void main(字符串[]args){ IdentifyMyParts a=新IdentifyMyParts(); IdentifyMyParts b=新IdentifyMyParts(); a、 y=5; b、 y=6; a、 x=1; b、 x=2; System.out.println(“a.y=“+a.y”); System.out.pri

//下面是静态变量的代码

class IdentifyMyParts{
公共静态int x=7;
公共int y=3;
}
公共类测试{
公共静态void main(字符串[]args){
IdentifyMyParts a=新IdentifyMyParts();
IdentifyMyParts b=新IdentifyMyParts();
a、 y=5;
b、 y=6;
a、 x=1;
b、 x=2;
System.out.println(“a.y=“+a.y”);
System.out.println(“b.y=“+b.y”);
System.out.println(“a.x=“+a.x”);
System.out.println(“b.x=“+b.x”);
}
} 
//输出:-
a、 y=5
b、 y=6
a、 x=2
b、 x=2

为什么a.x的值不变?为什么显示a.x=2?

静态字段由类的所有实例共享。该字段属于类,而不是特定实例。即a.x和b.x指向同一个地方。顺便说一句,我想即使是IDE也会警告您应该使用类标识符,而不是实例ie IdentificationMyParts.x,而不是a.x。它已经更改了
a.x
b.x
是相同的,当您执行
b.x=2
时,您还可以设置
a.x
。它们都引用了
IdentifyMyParts.x
,如果在两行
a.x=1之间添加一行打印
a.x
,我真的不建议像访问实例变量一样访问静态字段
b.x=2
您将看到
a.x
已更改。