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顯然避免了這個問題,因此使用了值傳遞而不是引用傳遞。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章