我是Java新手.
我厌倦了以下java代码
public class A {
int x;
public static void main(String[] args) {
A a1= new A();
a1.setX(5);
A a2=a1;
System.out.println(a1.getX());
System.out.println(a2.getX());
a2.setX(10);
System.out.println(a1.getX());
System.out.println(a2.getX());
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
Run Code Online (Sandbox Code Playgroud)
我以为输出会是
5 5
5 10
但是当我编译并运行代码时,输出将变为5 5
10 10
为什么a1 x值随a2 x而变化?
A a2=a1;
Run Code Online (Sandbox Code Playgroud)
此语句使a2变量表示内存中a1表示的相同位置.因此,您在此内存位置对对象所做的任何更改都会更改相同的内存块,就像您进行这些更改一样a1.
如果要a2指向不同的内存位置,则需要分配内存来保存新值,就像使用a1:
A a2 = new A();
Run Code Online (Sandbox Code Playgroud)