首先說結論,java中只有值傳遞,沒有引用傳遞!!!
對於普通類型的變量比如,int,char,float。不用說都知道是值傳遞。
那麼對於類類型的變量呢?爲什麼也是值傳遞?
類類型的變量本身就是個引用,那麼傳遞的不是引用嗎?
比如說:
class A
{
int aa;
}
void fun(A a)
{
a = null;
}
A a = new A();
fun(a);
System.out.println(a == null);
fun函數傳遞的是引用?還是值?
答案是引用的值,那麼傳遞的還是值。
因此最後輸出是false。
爲什麼這麼設計?因爲java的設計理念就是安全,就是可靠。
如果傳遞的是引用,那麼在函數中就能夠改變引用的指向,那麼
很有可能造成程序不安全。比如說,如果是引用傳遞,那麼下面這段代碼就會出錯(空指針):
void fun(A a)
{
a = null;
}
A a = new A();
fun(a);
System.out.println(a.aa);
java顯然避免了這個問題,因此使用了值傳遞而不是引用傳遞。