不管哪個語言都有值傳遞,引用傳遞兩種方式,在C語言裡面引用傳遞用指針搞定。在Java裡面沒有指針,所以Java就規定(之前的設計)了某些類型是值傳遞,某些類型是引用傳遞,當然完全沒必要去全部類型分析一遍,比如int是什麼XX傳遞,String是什麼XX傳遞...,浪費時間,因為現在查AI那麼方便快捷 ...
不管哪個語言都有值傳遞,引用傳遞兩種方式,在C語言裡面引用傳遞用指針搞定。在Java裡面沒有指針,所以Java就規定(之前的設計)了某些類型是值傳遞,某些類型是引用傳遞,當然完全沒必要去全部類型分析一遍,比如int是什麼XX傳遞,String是什麼XX傳遞...,浪費時間,因為現在查AI那麼方便快捷的事。
先來看兩種傳遞方式的定義,
Value passing definition:
先看代碼,
a = 99
func(a);
a++;
print(a); // 100
print(a); // 99
a傳遞過去,a就會克隆一份自己,在方法裡面操作的是克隆a, 原本的a絲毫不受影響。
reference passing definition:
先看代碼,
a = 99
func(a);
a++;
print(a); // 100
print(a); // 100
a傳遞過去,a不會克隆一份自己,在方法裡面操作的就是原本的a。
兩種傳值方法分別有各自不同的場景,比如說你不想原類型被污染,那就用值傳遞,你想一個類型傳遞出去,在方法裡面被修改了,原型也跟著修改,那麼就用引用類型。這些在使用的時候需要使用者自己去甄別,選擇。
總結:
寫程式的人,必須要知道值傳遞、引用傳遞這兩個概念,知道他們各自的使用場景。因為知道才是現在最重要的,怎麼做反而不是,真正需要操作的時候去查AI即可,但是你連知道都不知道,那就沒得談了(烏鴉掀桌!)。