【发布时间】:2015-03-04 18:44:03
【问题描述】:
就这样吧。我一直在为一个更大的项目构建一个软件,而现在,我只是对 Java 处理我的代码的方式感到困惑。我完全不知道为什么 Java 的行为方式是这样的。
它似乎跳过了我的部分代码,并在没有调用相应方法时将值分配给与我预期不同的数组。
我已经用 IntelliJ 调试器检查了几个小时,仔细检查了所有内容,但我没有找到一个原因来解释为什么事情会以这种方式发生。
package com.whatareyoudoing.java;
import java.util.Arrays;
/**
* WHAT THE ACTUAL DUCK
*/
public class WTF {
private int[] number;
private int[] oldNumber;
public WTF() {
number = new int[1];
oldNumber = new int[1];
}
public void putNumber(int c) {
number[0] = c;
}
public void putOld() {
if(Arrays.equals(oldNumber, number)) {
System.out.println("Nothing to do!");
return; //How on earth can they literally be the same?!
}
oldNumber = number;
}
public void doWTF() {
putNumber(1);
putOld(); // Works.
putNumber(2); // Expected Result: number = 2; oldNumber = 1 [NOPE] number = 2; oldNumber = 2
putOld(); // [NOPE] Simply Skips with "Nothing to do"
putNumber(3); // Same odd behaviour
putOld(); // Aaaand skips again.
}
}
第一次调用 putNumber 后,再次使用 putNumber同时将值放入两个变量(oldNumber 和 Number)中,而不是仅放入 number[0]强>。
我继续尽可能简化我的代码,因此这个示例更加实用。显然,我发现它的真实示例中的数组比单个元素长。
我还使用多维数组以及对象数组对其进行了测试。行为没有变化。
我现在完全困惑,完全不知道如何继续。如果你能对这个话题有所了解,请这样做。我很困惑。
【问题讨论】:
标签: java arrays intellij-idea variable-assignment skip