我可以看到什么是混淆了你,让我告诉你一个例子。
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