爲什麼java不支持通過引用? 是否有任何具體的原因呢?*爲什麼Java純粹通過價值?
回答
爲什麼java不支持通過引用?
Java is indeed pass-by-value。但是,您仍然可以將對象引用傳遞給方法。即使引用是按值傳遞的,但總體效果幾乎與傳引用無法區分。
不支持的是對基本類型的引用。
+1爲'總體'效應陳述。我無法形成一個連貫的句子,可以告訴我想告訴我什麼 – 2013-03-18 07:16:02
「整體效果與傳引用無法區分」當然不是。這是非常明顯的 - 通過引用傳遞,您可以隨時在函數內部分配一個引用參數,並且它會執行相同的操作,就像您爲傳入的變量賦值(即用'=')調用範圍。這是你無法用像Java這樣的按價值傳遞語言來做的事情。 – newacct 2013-03-18 18:55:31
@newacct:這取決於語言。舉例來說,C++具有傳遞引用的功能,但沒有您所概述的語義(通過「分配給引用」,我假設您將引用重新綁定到不同的對象)。 – NPE 2013-03-18 20:02:26
有什麼特別的理由嗎?
這是語言設計。
它支持以不同的意義引用傳遞引用通過值傳遞。
看到這個:http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.4.1
其實在Java中的一切是按值傳遞。
當你說對象通過引用傳遞時,這意味着對象引用是通過值傳遞的。
這基本上是由Java設計人員做出的一個設計決策,它使語言變得簡單,代碼更易於調試。
- 1. 我純粹的JavaScript沒有通過表單輸入字段驗證爲什麼?
- 2. 通過純粹的原生Android應用
- 3. 什麼意思純粹的Javascript
- 4. java不是純粹的OOP
- 5. 爲什麼Marshal.DestroyStructure被認爲是純粹的?
- 6. 返回純粹的純函數是什麼意思?
- 7. 爲什麼純粹的百分比包裝不起作用?
- 8. 爲什麼LINQ不是純粹的功能?
- 9. TDD是否以純粹的價值對象和純粹的操縱器/控制器結束?
- 10. 爲什麼我不能有一個純粹的虛擬賦值操作符?
- 11. 我怎麼通過價值
- 12. 純粹的分割
- 13. 純粹的Arduino C
- 14. 爲什麼我無法通過Ajax調用獲得價值?
- 15. 接收器爲什麼在Go中通過價值?
- 16. 爲什麼我的表單不通過價值?
- 17. 爲什麼長期價值沒有通過意圖?
- 18. 通過價值
- 19. 通過價值
- 20. 通過價值
- 21. 通過價值
- 22. 通過價值
- 23. 純粹通過CSS重新排列位置
- 24. 爲什麼D將這個函數標記爲純粹的nothrow @nogc?
- 25. 這是爲什麼按價值計價?
- 26. Monads如何被認爲是純粹的?
- 27. 在django中實現純粹時事通訊的最佳方式是什麼?
- 28. 什麼是一些最純粹的面向對象的語言?
- 29. 純粹的HTML5應用程序究竟是什麼?
- 30. 漸變維度 - 什麼是純粹型6實施
你能舉一個例子/文檔說這個嗎? – 2013-03-18 07:11:31
@SnakesandCoffee - 說什麼? Java使用純粹通過價值?嘗試鏈接的問題開始。或者Java教程。或任何一半體面的Java教科書。或者如果這對你來說還不夠明確,試試JLS。 – 2013-03-19 00:36:19
@StephenC我的評論發佈之前很久沒有添加鏈接 – 2013-03-19 01:09:41