正确的原始任务思维方式

Dan*_*ter 3 java primitive

在这个例子中,

int x = 5;
int y = x;
x = 4;
Run Code Online (Sandbox Code Playgroud)

y将保持为5,因为x正在被重新分配,并且它无论如何都不会操纵它过去引用的对象.我的问题是,我刚刚说了一个正确的思考方式吗?或者是否存在"x"中存储的重复内存,并且重复放在"y"中.

Pat*_*shu 8

与对象不同,基元直接存储在变量中.也就是说,基本类型的变量不存储对基元的引用,它直接存储基元的值.

将一个基本变量分配给另一个基本变量时,它会复制该值.

当你这样做

int x = 5; int y = x; x = 4;

x将其内部的值设置为4,y仍然具有值5,因为它的值是独立的.

通过更改另一个变量来改变一个变量的唯一方法是,如果两个变量都是对"可变"对象的引用,并且该对象是变异的 - 因为它们都在查看相同的对象,而不是它们自己的副本,他们都观察到同样的变化.(例如,字符串是不可变的,永远不会"突然改变",但数组和集合可以)