值傳遞和引用傳遞,java到底按什麼傳遞的

2021-07-26 15:51:27 字數 827 閱讀 2597

眾說紛紜

講的挺不錯的,為了防止以後找不到,還是自己記一下

基本型別,按值傳遞,傳遞的是值的拷貝,與原值沒有關係,

引用型別傳遞的是引用位址,傳遞的是位址,與原值有關係

string 比較特殊,屬於沒有改變自身方法的引用型別,+或者+=等操作,不會改變原值

第乙個例子:基本型別

void foo(int

value)

foo(num); // num 沒有被改變

第二個例子:沒有提供改變自身方法的引用型別

void foo(string text)

foo(str); // str 也沒有被改變

第三個例子:提供了改變自身方法的引用型別

stringbuilder sb = new stringbuilder("iphone");

void foo(stringbuilder builder)

foo(sb); // sb 被改變了,變成了"iphone4"。

第四個例子:提供了改變自身方法的引用型別,但是不使用,而是使用賦值運算子。

stringbuilder sb = new stringbuilder("iphone");

void foo(stringbuilder builder)

foo(sb); // sb 沒有被改變,還是 "iphone"。

第五個例子 :引用型別

int c = ;

int d = c;

d[1] = 5;

system.out.println("c[1]"+c[1]);//c[1]被改變

Java按值傳遞和按引用傳遞

如果傳遞引數是基本型別或其包裝類,則按值傳遞,改變引數的值,實際引數的值不變。public static void main string args public static void changei integer i 如果傳遞引數是類或陣列,則按引用傳遞,改變物件的引用,實參的引用不會改變,但...

按值傳遞和按引用傳遞

對於基本型別而言,是按值傳遞的 基本型別儲存在棧中 基本型別引數的傳遞和基本型別的複製一樣,傳遞的是值本身 var a 1 function test x test a console.log a 1按值傳遞的意思就是形參是實參的複製,形參實參互不干擾 so,雖然在函式test中a被修改,但是並沒有...

按值傳遞和引用傳遞

最近在看到函式按值傳遞還是引用傳遞的時候產生了困惑,突然想到這個問題好像從第一次看紅寶書就一直有這個困惑,於是各種搜,但是網上的種種回答也很不相同,想了兩天終於算是有個理由可以說服自己了。我們先不討論按值傳遞和引用傳遞的名字的定義,很多時候都是被名字的定義誤導了。實質重於形式,名字可以有很多,我們就...