我刚才想到了这个问题:使用 Java
int x = 1
int y = x;
x = 5;
为什么现在没有y = 5
?
答案 0 :(得分:1)
因为y
是x
的单独变量,尽管已使用原始值x
初始化。
y
不是x
的引用,也不是x
对同一对象的引用。 (int
是Java中的原语类型。)
答案 1 :(得分:1)
int x = 1
int y = x;
x = 5;
原始值复制在此行int y=x;
这是{strong>不是x
指向的对象的引用的副本。
供参考: http://javarevisited.blogspot.hk/2015/09/difference-between-primitive-and-reference-variable-java.html Is Java "pass-by-reference" or "pass-by-value"?
答案 2 :(得分:1)
int x = 1; //Some memory is initialized(say at location ox00001) and x is pointing to that
int y = x ; //Some memory is initialized(say at location ox00050) and value of x is copied to that memory
x = 5 ; //value of memory location of x (i.e. ox00001) is changed to 5 but is not impacting memory location of y
但是在非原始数据类型的情况下,它共享内存位置而不是数据。
供参考http://javarevisited.blogspot.in/2015/09/difference-between-primitive-and-reference-variable-java.html
答案 3 :(得分:0)
拿出两张纸。
在一个上写“x”,在另一个上写“y”。
现在在标有“x”的纸张上写上“1”。 (int x = 1;
)
然后取出您在“x”纸上看到的数字,并在“y”纸上写下相同的数字。 (int y = x;
)
然后删除“x”纸上的数字并改为写入“5”。 (x = 5;
)
注意标有“y”的纸张上的数字没有变化 变量的工作方式与此类似。