您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java的call by value和call by reference有什么區別”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java的call by value和call by reference有什么區別”吧!
Java傳參的兩種方式
call by value(值傳遞):傳遞的是值(針對基本數據類型),如傳遞一個整型數值。實際上,按值傳遞在方法調用方法中,參數只是實際參數的一份拷貝。
call by reference(引用傳遞):傳遞的是對象的引用(針對對象),即傳遞的是對象的地址。實際上,引用按傳遞時候會產生一份新的引用拷貝,新舊兩份引用同時指向同一個地址。
代碼示例
public class TestJavaCallBy { // 測試值傳遞 public static void testCallByValue(int value) { value *= 10; } // 測試引用傳遞 public static void testCallByReference(StringBuilder sb) { sb.append(" - " + ZonedDateTime.now()); } public static void main(String[] args) { // 測試值變量 int param = 1; // 測試引用對象 StringBuilder sb = new StringBuilder("666"); // 測試 System.out.println(param); testCallByValue(param); System.out.println(param); System.out.println(sb.toString()); testCallByReference(sb); System.out.println(sb.toString()); } } 控制臺輸出結果 1 // 結果仍為1,因為參數傳遞的是實參的一份拷貝,對實參不造成影響 1 666 // 傳遞的是引用的拷貝,新舊兩個引用指向同一個對象(地址),因此append操作是作用在該對象上 666 - 2019-03-16T01:25:57.933038500+08:00[Asia/Shanghai]
那么就能得出一下結論:
call by value不會改變實參的值
call by reference不能改變實參的參考地址
call by reference能改變實參的內容
感謝各位的閱讀,以上就是“Java的call by value和call by reference有什么區別”的內容了,經過本文的學習后,相信大家對Java的call by value和call by reference有什么區別這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。