可有人請向我解釋爲什麼返回null的方法操縱最終詮釋[]?方法返回null被操縱最終的int數組
final int [] vals = {2,3};
int [] vals2 = multiply(vals);
for(int i : vals) System.out.println(i);
int [] multiply(int [] in){
for(int i = 0; i < in.length;i++){
in[i] *= 2;
}
return null;
}
輸出繼電器:
編輯:
我在返回一個陣列方法只注意到此行爲。同樣的方法返回一個int不改變原有的整數值...
全碼:
public class Main{
public Main(){
int [] myList = {56, 32, 200};
int [] newList = myList;
bubble_sort(newList);
for(int i : myList){ System.out.println(i); }
System.out.println();
for(int i : newList){ System.out.println(i); }
}
public int [] bubble_sort(int a[]){
int n = a.length;
int [] s = a;
for (int i = 0; i < n ; i++){
for (int j = n - 1; j >= (i+1); j--){
if (s[j - 1] > s[j]){
int t = s[j - 1];
s[j - 1] = s[j];
s[j] = t;
}
}
}
return null;
// return s;
}
public static void main(String [] args){
new Main();
}
}
編輯:
下面的代碼產生預期輸出如下:2,4
int vals = 2;
int vals2 = multiply(vals);
System.out.println(vals);
System.out.println(vals2);
int multiply(int in){ return in*2; }
所以我的問題是,爲什麼返回一個int的方法不會改變輸入值,但返回一個數組的方法確實會改變輸入的原始值。
我想你的意思是,如果你實際調用乘法,那就是輸出。在你提供的嚴格示例中,輸出應該是2,3。但是如果你先調用multiply,那麼你得到了你所建議的輸出 – Cruncher
在你的代碼中,'myList'和'newList'引用同一個數組,所以改變一個他們也改變了另一個。 – arshajii