java中究竟是值傳遞仍是引用傳遞?

首先說結論,java中只有值傳遞,沒有引用傳遞!!!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顯然避免了這個問題,所以使用了值傳遞而不是引用傳遞。設計

相關文章
相關標籤/搜索