本文介紹了當整數值是像更改數組的值這樣的參數時,我如何更改整數值?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
public static void main(String[] args) {
Integer i = new Integer(0);
int[] arr = {1};
p1(i);
p2(arr);
System.out.println(i);
System.out.println(arr[0]);
}
public static void p1(Integer i) {
i = 2;
}
public static void p2(int[] i) {
i[0] = 2;
}
//輸出:0,2
如何像更改ARR的值一樣更改I的值?
推薦答案
您不能從p1
方法中更改i
ini
變量的值,因為參數是通過值傳遞的:p1
中的參數i
與i
變量完全分開,只是它們在方法開始時具有相同的值。Java始終使用按值傳遞語義,但當參數類型為類時,按值傳遞的是引用。
實際上,您也沒有更改arr
的值-它引用了與前面相同的數組,但數組中的值已經更改。這就是Integer
不能做的事情,因為Integer
是不可變類型。
如果需要像Integer
這樣的可變類,則可以改用AtomicInteger
:
public static void main(String[] args) {
AtomicInteger i = new AtomicInteger(0);
modify(i);
System.out.println(i);
}
private static void modify(AtomicInteger x) {
x.set(2);
}
我通常不這樣做–我通常盡量不修改方法參數引用的對象。相反,我編寫了計算單個結果并返回該結果方法。
這篇關于當整數值是像更改數組的值這樣的參數時,我如何更改整數值?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,