java - 在 Java 中传递对象引用的问题

标签 java android object copy reference

我正在用 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/

相关文章:

java - Java 中奇怪的 printf() 行为

java - 安卓单元测试 : How to make a class more testable?

string - TypeScript React Native String 文字赋值错误

java - 是否可以在运行时复制所有资源文件(无需特别命名)?

java - Thread.stop() - 已弃用

java - 更新 JHipster 后不再提供 Angular 组件,仅提供 root index.html

java - 实现 Serialized 的类无法读取Object

android - Fetch in react native 不能在 android 上使用 ssl

java - 某些代码有问题...?

c++ - 如何在 C++ 中跨实例调用方法