Java:如何防止方法改变自身之外的变量?

时间:2016-11-07 16:04:45

标签: java arrays methods

编辑以解释此问题与“完全重复”之间的区别:建议的问题有很多答案,并且它们仅用于回答概念性问题。我的问题本质上是概念性的,但我也询问了如何在功能上做某些事情的具体答案。另外,由于我不知道传递参考和传值的意思,我怎么能理解一个我也不理解的问题的答案?对于不懂正确词汇的外行人来说,另一个问题上的答案是无法获得的。不幸的是,我知道如何用Java做很多事情,因为我自学了,但往往不知道“什么”或“为什么”。用我不理解的词汇单词回答我的问题没有帮助,并且类似于我阅读一本教科书(我已经尝试过),并且提出了问这个问题的重点。如果你不能以不熟悉的方式回答这个问题并且不愿意这样做,那么你就是热门话题,当然也不比教科书好。谢谢你的考虑。

在进行某些操作时,我在我的矩阵中得到了一堆NaN,并决定运行NetBeans调试器。我找到了问题并修复了它,但想知道它为什么会发生。这是我的方法的原始代码:

public static double[] row_scalar_mult(double scale, double[] row){
    for(int i=0; i<row.length;i++){
        row[i] = row[i]*scale;
    }             
    return row;
}

我发现我传递给此方法的2D数组的行直接作用,这不是意图。我认为该方法应该只是复制它或某些这样的东西,并使用它而不改变它给出的东西。我在下面修了它:

public static double[] row_scalar_mult(double scale, double[] row){
    double[] result = new double[row.length];

    for(int i=0; i<row.length;i++){
        result[i] = row[i]*scale;
    }       

    return result;
}

但是我对这种概念上的发生很好奇,如果有一些简单的方法来声明一个变量或一个方法来保持方法的输入在方法之外完整。此外,我确信我所说的所有内容都有术语,但我不知道在搜索中使用什么词。我希望这不是重复。

0 个答案:

没有答案