大家好! 我遇到了這種奇怪的Java數組行爲。我無法弄清楚爲什麼sampleArray會隨着類的數組而改變?我覺得這很不自然。Java數組:奇怪的行爲
public class Runner {
public static void main(String[] args) {
int sampleArray[] = new int[]{5, -1, 9 ,7 ,3 ,2 ,11 ,0 ,-7 ,6 , 10 ,9};
SortArray testArray = new SortArray(sampleArray);
System.out.println("Initial array is:");
System.out.println(testArray.toString());
testArray.sortArray();
System.out.println("Sorted by Bubbles method array is:");
System.out.println(testArray.toString());
System.out.println("Initial array is");
for (int i = 0; i<sampleArray.length; i++) {
System.out.print(sampleArray[i]+ " ");
}
}
public class SortArray {
private int anArray[];
SortArray (int inputArray[]) {
this.anArray = inputArray;
}
// Classic Bubbles sorting
public void sortArray() {
int arrayLength = this.anArray.length;
for (int i = arrayLength; i > 0; i--) {
for (int j = 0; j < i-1; j++) {
if (anArray[j+1]<anArray[j]) {
int tempVariable = anArray[j];
anArray[j] = anArray[j+1];
anArray[j+1] = tempVariable;
}
}
}
}
@Override
public String toString() {
String arrayString = "";
for (int i = 0; i<anArray.length; i++) {
arrayString = arrayString + anArray[i]+" ";
}
return arrayString;
}
}
畢竟我不斷收到:
Initial array is:
5 -1 9 7 3 2 11 0 -7 6 10 9
Sorted by Bubbles method array is:
-7 -1 0 2 3 5 6 7 9 9 10 11
Initial array is
-7 -1 0 2 3 5 6 7 9 9 10 11
Process finished with exit code 0
所以我們看到,初始陣列正在改變爲好。這是爲什麼發生?這似乎是不合邏輯的,因爲我從不分配sampeArray另一個序列,也不會直接在代碼中進行更改。但這是真的。 如何保持初始數組不受影響?
請使用您的問題編輯鏈接添加額外的信息。後回答按鈕應該只用於問題的完整答案。 - [來自評論](/評論/低質量帖/ 12653706) – JonasCz
@JonasCz這**是**的答案。 OP對該數組進行了克隆,以防止使用該引用。 –