分享一個大牛的人工智能教程。零基礎!通俗易懂!風趣幽默!希望你也加入到人工智能的隊伍中來!請點擊http://www.captainbed.net
與C++不同,Java 不支持運算符重載。Java不能為程序員提供自由的標准算術運算符重載,例如+,-,*和/等。如果你以前用過C++,那么Java與C++相比少了很多功能,例如Java不支持多重繼承,Java中沒有指針,Java中沒有引用傳遞。雖然我不知道背后的真正原因,但我認為以下說法有些道理,為什么Java不支持運算符重載。
1.簡單性和清晰性。清晰性是Java設計者的目標之一。設計者不是只想復制語言,而是希望擁有一種清晰,真正面向對象的語言。添加運算符重載比沒有它肯定會使設計更復雜,並且它可能導致更復雜的編譯器, 或減慢JVM,因為它需要做額外的工作來識別運算符的實際含義,並減少優化的機會, 以保證Java中運算符的行為。
2.避免編程錯誤。Java不允許用戶定義的運算符重載,因為如果允許程序員進行運算符重載,將為同一運算符賦予多種含義,這將使任何開發人員的學習曲線變得陡峭,事情變得更加混亂。據觀察,當語言支持運算符重載時,編程錯誤會增加,從而增加了開發和交付時間。由於Java和JVM已經承擔了大多數開發人員的責任,如在通過提供垃圾收集器進行內存管理時,因為這個功能增加污染代碼的機會,成為編程錯誤之源,因此沒有多大意義。
3.JVM復雜性。從JVM的角度來看,支持運算符重載使問題變得更加困難。通過更直觀,更干凈的方式使用方法重載也能實現同樣的事情,因此不支持Java中的運算符重載是有意義的。與相對簡單的JVM相比,復雜的JVM可能導致JVM更慢,並為保證在Java中運算符行為的確定性從而減少了優化代碼的機會。
4.讓開發工具處理更容易。這是在Java中不支持運算符重載的另一個好處。省略運算符重載使語言更容易處理,這反過來又更容易開發處理語言的工具,例如IDE或重構工具。Java中的重構工具遠勝於C++。
原文鏈接:https://blog.csdn.net/troubleshooter/java/article/details/99302676