在 java 中更改变量

Changing variables in java

提问人:zebra14420 提问时间:6/4/2015 更新时间:6/4/2015 访问量:53

问:

在下面的代码中,

int i = 1;
int j = i + 2;
int i = 2;

在“i”改为 2 后,“j”是否等于 2,还是“j”仍等于 1?

爪哇岛

评论

0赞 Bubletan 6/4/2015
它们是不同的参考。因此不会改变。j
4赞 Jesper 6/4/2015
你为什么不试试呢?你会比在这里问得更快的答案。
2赞 gtgaxiola 6/4/2015
它甚至不会编译,因为您创建了两个变量,它们的原始值也是 3 而不是 1。ij

答:

3赞 Andy Thomas 6/4/2015 #1

当您在 Java 中为任何变量赋值时,只有该变量会更改。

此外,这些特定变量是基元,而不是引用类型。每个变量都包含一个值,而不是对变量之间可能共享的对象的引用。

另外,请注意 @gtgaxiola 的观察,即由于 的第二个定义,此代码将无法编译。这可以按如下方式解决:i

int i = 1;
int j = i + 2;
i = 2;

现在,如果变量是对可变对象的引用,则可以为同一对象分配两个引用,并通过任一引用更改该对象。

ColorRGB a = new ColorRGB(0,0,0);
ColorRGB b = a;
a.r = 255;

在这里,两者的值都为 255,因为两者都引用同一对象中的字段。a.rb.r

0赞 Vermonster 6/4/2015 #2

初始化后,无法将其“重新初始化”为 2。如果要将 i 更改为 2,则可以在初始化后说。此外,j = 3,因为 i+2 = 3。在您提供的代码中,j 从不等于 1。玩一玩,你会像这样回答你自己的问题。int i = 1i = 2;

int i = 2;
int j = i + 2; // j is initialized to 3
i = 2;  // no need for declaring int since you did it above. The compiler  already knows its type
j = j - i; // 3-2
System.out.println("i = " + i) // prints 2
System.out.println("j = " + j) // prints 1