我使用3個對象--StringBuilder,Integer和testobject - 傳遞給方法來更改其狀態。 正如預期的那樣,StringBuilder和testobject指向同一個對象,並且狀態是變化的,但它不適用於Integer對象。將對象傳遞給方法java
class testobject{
int x = 1;
}
public class test{
public static void main(String[] args){
StringBuilder s1 = new StringBuilder("String");
go(s1);
System.out.println(s1);
Integer s2 = new Integer("20");
go1(s2);
System.out.println(s2);
testobject s3 = new testobject();
go2(s3);
System.out.println(s3.x);
}
static void go(StringBuilder s1){
s1.append("Builder");
}
static void go1(Integer s2){
s2 = 1;
}
static void go2(testobject s3){
s3.x = 5;
}
Result:
StringBuilder
20
5
ExpectedResult:
StringBuilder
1
5
'Integer'對象是不可變的。通過嘗試將其分配給新號碼,您正在創建一個新對象。 – jonhopkins
在Java中沒有任何內容被引用傳遞。 (在對象的情況下,它們是引用類型,按值傳遞。) – Sneftel