使用同一对象更改数组的值

时间:2018-11-29 10:18:12

标签: java

伙计们,我是Java新手,在使用数组时遇到问题。这是我的代码

package exampleA;

public class exq {

    public static void main(String[] args) {
        dokimh p=new dokimh();
        double[] k=p.ex(5);
        double[] h=p.ex(0);
        for(int i=0;i<=1;i++) {
            System.out.println(k[i]);
        }
    }
}


package exampleA;

public class dokimh {
    private double []d=new double[2];

    double[] ex(double a) {
        for(int i=0;i<=1;i++) {
            d[i]=i+a;

        }

        return d;
    }
}

您能帮我理解为什么当我使用数组h并在我的班级中传递另一个值时k的值会发生变化吗?谢谢!

4 个答案:

答案 0 :(得分:0)

之所以会这样,是因为hk都指向同一个实例(dokimh.d也指向同一个实例)。

答案 1 :(得分:0)

在两种情况下,您都使用相同的变量d。因此,当您第二次调用p.ex()方法时,它将覆盖该值。使用局部变量d,

public class dokimh {


     double[] ex(double a) {
        double []d=new double[2];
        for(int i=0;i<=1;i++) {
            d[i]=i+a;

        }

        return d;
    }
}

答案 2 :(得分:0)

ANSI NULLSArith Abort共享相同的数组> from pyspark.sql import functions as F > from pyspark.sql.types import * > df.show() +----+-------------+ |col1| col2| +----+-------------+ | A1|{"x":1,"y":2}| | A2| {"z":3}| +----+-------------+ > df.printSchema() root |-- col1: string (nullable = true) |-- col2: string (nullable = true) > df = df.withColumn( .. "col2", .. F.from_json("col2", MapType(StringType(),IntegerType())) ..) > df.show() +----+----------------+ |col1| col2| +----+----------------+ | A1|[x -> 1, y -> 2]| | A2| [z -> 3]| +----+----------------+ > df.select( .. "col1", .. "col2.x", .. "col2.y", .. "col2.z", ..).show() +----+----+----+----+ |col1| x| y| z| +----+----+----+----+ | A1| 1| 2|null| | A2|null|null| 3| +----+----+----+----+ kh对象的成员,当您使用d返回时函数,您将返回相同的引用。 所以在这里

d

p引用了ex的{​​{1}}数组成员,而double[] k=p.ex(5); double[] h=p.ex(0); 也是如此。

答案 3 :(得分:0)

当创建对象“ p:”时,它包含称为“ d”的双精度数组。 在这两种情况下,当您调用方法在后台创建k或h数组时,都指向“ p”对象的数组。您的方法(如何实现它们)只是指向不同数组的指针。因此,即使您使用相同的方法调用10个timest,并在后台创建不同的数组(k,h,x,y,z ...),它们也始终引用您首次创建的表。这是数组的地址,而不是新的独立数组本身。