我正在用 Java 写一些东西,最近遇到了一些问题。简而言之,我需要将我创建的对象与我之前用不同数据实例化的这个类的另一个实例进行比较。
看起来像这样:
a newA = null;
a oldA = null;
while(someBreakCondition) {
newA = new a();
newA.x = getSomeValue();
// now i want to compare the two objects
if(oldA != null) {
if(newA.time != oldA.time) {
// ...
}
}
// now my newA gets to be my oldA, since in the next iteration, a new newA is created
oldA = newA;
}
a 类:
class a {
public long time;
public int x;
public a() {
time = System.currentTimeMillis;
}
}
问题是,我最终发现 newA 的值始终等于 oldA 的值。所以我想在循环的最后一行传递对象的引用出错了…… 我认为 java 总是传递对象的引用,除非调用显式的 copy()?
如果这很重要:这段代码在 android 上运行 - 不知道 dalvik 虚拟机是否与此混淆...
最佳答案
我认为您可能确实有两个不同的对象,但它们都具有相同的 time
值。 Current millis 不能准确区分快速连续构造的两个对象,除非您的内部循环长时间运行。即使是 Mhz 处理器也将以微秒而不是毫秒为单位测量迭代。
关于java - 在 Java 中传递对象引用的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3116394/