我可以看到什麼是混淆了你,讓我告訴你一個例子。
MyClass.java
public class MyClass {
private int i;
private int[] a;
public void setI(int i){
this.i = i;
}
public void setA(int a[]){
this.a = a;
}
public int getI(){
return i;
}
public int[] getA(){
return a;
}
}
Test.java
public class Test {
public static void main(String[] args)
{
int a[] = {1,2};
MyClass myClass = new MyClass();
myClass.setI(5);
myClass.setA(a);
int i = myClass.getI();
int b[] = myClass.getA();
System.out.println(myClass.getI());
System.out.println(myClass.getA()[0] + " " +myClass.getA()[1]);
i = 10;
b[0] = 3;
b[1] = 4;
System.out.println(myClass.getI());
System.out.println(myClass.getA()[0] + " " +myClass.getA()[1]);
}
}
當你看到上面的代碼,你就會明白的輸出,原始的類型,如整數始終按值傳遞在Java中。但是,當你傳遞數組或其他對象,如Calendar類的對象時,它將通過引用傳遞。
因此,改變數組的值將被反映在兩個地方,而一個整數,不會。
此答案可以接受任何建議。如果有人發現任何不準確的地方,請隨時提出修改建議。
所以沒有辦法保存一些內存並獲得一個引用/指向'myVariable'? – Arcyno
Java始終是按值傳遞的。閱讀http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value因此它是內存安全的 – AbuHayA