【问题标题】:why changing an array effects a different array为什么更改数组会影响不同的数组
【发布时间】:2014-04-08 00:42:03
【问题描述】:

我把一个数组作为对象的一部分,并有一个数组列表。一旦我使对象成为我用作对象的构造器的变量,一旦它们发生更改,就不应该更改对象吗?我更不明白的是我从我的对象中获取数组,这是正确的,但是我修改了一个不同的数组,它修改了我从我的对象中返回的那个。

                String [] tempnums1 = Contacts.get(0).getNumbers();
                Log.d("array", "tempnums is " + tempnums1[0]);
                numbers[0] = "ive changes";
                Log.d("array", "tempnums again is " + tempnums1[0]);
                String [] tempnums2 = Contacts.get(0).getNumbers();
                Log.d("array", "tempnums2 is " + tempnums2[0]);

第一次打印是正确的,但随后我修改了 numbers[0],当我打印 tempnums[0] 时,它已更改为“tempnums 再次已更改”,这对我来说毫无意义

【问题讨论】:

    标签: android arrays object


    【解决方案1】:

    这很可能是由于Contacts.get(0).getNumbers() 在每次调用时返回相同的数组。如果是这样的话,就没有“不同的阵列”——只涉及一个阵列。因此,您的代码相当于这样做:

    String [] tempnums1 = Contacts.get(0).getNumbers();
    Log.d("array", "tempnums is " + tempnums1[0]);
    numbers[0] = "ive changes";
    Log.d("array", "tempnums again is " + tempnums1[0]);
    String [] tempnums2 = tempnums1;
    Log.d("array", "tempnums2 is " + tempnums2[0]);
    

    特别是,将数组值分配给数组变量不会复制数组。您(或者,更确切地说,getNumbers() 或您的调用代码)必须明确地这样做。

    【讨论】:

      猜你喜欢
      • 2021-04-01
      • 2011-09-30
      • 1970-01-01
      相关资源
      最近更新 更多