java - 一个变量破坏另一个变量

标签 java variables

我的情况很奇怪。我有一个有几个成员的类,如下所示:

public class myMainClass
{
    public aClass myObject = new aClass();
    private int numberOfUpdates = 0;
    public anotheClass.memberClass anotherObject = new anotheClass.memberClass();

请注意,anotherClass 中定义了一个类。 (不确定这是否会成为我遇到的问题)。

aClassanotheClass.memberClass 都有一个同名的成员 ThisMember

我在 myMainClass 中还有一个方法,可以对 myMainClass 对象的成员进行一些修改:

public void Update(double aPassedInNumber)
{
    anotherObject.ThisMember  = aPassedInNumber;
    //etc
}

修改该一名成员。但是,当我这样做时,myObject.ThisMember被修改为相同的值!就好像(??)两个成员变量在内存中占据相同的位置。或者说其中一个在某种程度上是对另一个的引用。

就好像我已经完成了:

public void Update(double aPassedInNumber)
{
    anotherObject.ThisMember = aPassedInNumber;
    myObject  =  aPassedInNumber;
    //etc
}

但我不是。我只做了第一个赋值,但这些变量两个都被修改了。

我已经追踪了这一点并打印出了诊断信息并使用了监 window 口,它清楚地修改了这两个变量。

怎么会这样呢?我究竟做错了什么?我该如何修复它?

最佳答案

哦,伙计。看来我还是没有掌握JAVA中的引用概念。该变量确实只是对另一个对象的引用。

现在看来我必须为该类实现一个复制方法。

啊啊!!

关于java - 一个变量破坏另一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20392845/

相关文章:

java - 提高条件语句的易读性

java - 处理非常大的字符串 Java

java - AWS CloudWatch 查询结果

javascript - 返回 Javascript 变量和性能

Java - 如何导入外部包?

创建 DSNless 连接时出现 Java SQL 异常

c# - 如何使用数组的项目作为其他变量的名称 C#

bash - 将 awk 的输出保存到两个不同的变量

matlab - 从使 matlab 崩溃的函数中检索变量

javascript - JavaScript 构造函数中相同的变量名和属性名