爲什麼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. 通過純粹的原生Android應用
- 2. java不是純粹的OOP
- 3. 純粹的分割
- 4. 純粹的Arduino C
- 5. 通過價值
- 6. 通過價值
- 7. 通過價值
- 8. 在django中實現純粹時事通訊的最佳方式是什麼?
- 9. Java是通過價值的權利?
- 10. 什麼是一些最純粹的面向對象的語言?
- 11. 爲什麼ulimit通過java Runtime.exec()
- 12. 純粹數字permalinks in wordpress
- 13. 純粹的css對話
- 14. 純粹測試STM功能
- 15. 爲什麼我的(純粹的)GWT對話框不能正確裁剪?
- 16. 爲什麼@objc枚舉與純粹的Swift枚舉有不同的描述?
- 17. 通過URL傳遞價值並通過$ _GET獲得價值
- 18. Rails中,爲了通過嵌套價值
- 19. 什麼是價值?
- 20. 什麼值通過react-chartjs
- 21. WPF動畫 - 爲什麼不能通過「具有否定的價值?
- 22. 爲什麼我不能在java中獲得雙重價值?
- 23. std.regex.regex()不純。爲什麼?
- 24. Javascript Gotcha:爲什麼價值不增加?
- 25. 爲什麼國家需要價值?
- 26. 爲什麼價值不提交?
- 27. 爲什麼我不能打印價值?
- 28. 爲什麼Velocity不會取代價值?
- 29. 爲什麼singletone類的價值是零?
- 30. LINQ C#爲什麼價值變動
你能舉一個例子/文檔說這個嗎? – 2013-03-18 07:11:31
@SnakesandCoffee - 說什麼? Java使用純粹通過價值?嘗試鏈接的問題開始。或者Java教程。或任何一半體面的Java教科書。或者如果這對你來說還不夠明確,試試JLS。 – 2013-03-19 00:36:19
@StephenC我的評論發佈之前很久沒有添加鏈接 – 2013-03-19 01:09:41