為什么Java開發學習中不支持運算符重載?很多學習java開發的小伙伴都會遇到這個問題,為什么 C++ 支持運算符重載而Java不支持? 有人可能會說+運算符在 Java 中已被重載用于字符串連接,不要被這些論據所欺騙。
與 C++ 不同,Java 不支持運算符重載。Java 不能為程序員提供自由的標準算術運算符重載,例如+, - ,*和/等。如果你以前用過 C++,那么 Java 與 C++ 相比少了很多功能,例如 Java 不支持多重繼承,Java中沒有指針,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++。
歡迎大家在評論區評論留言,千鋒重慶Java的小編會及時給大家解答疑惑的
2021-11-02 千鋒教育重慶發布了 《Java學習爆破專欄丨Spring Security系列教程之實現CAS單點登錄上篇-概述》的文章
2021-10-28 千鋒教育重慶發布了 《爆破專欄丨Spring Security系列教程之Spring Security的四種權限控制方式》的文章
2021-07-27 千鋒教育重慶發布了 《千鋒憑借豐富企業資源,為多所高校學子提供名企實訓機會》的文章
2021-05-10 千鋒教育重慶發布了 《“創新 變革 匠心 育人”千鋒教研院2021教研升級戰略發布會即將隆重啟幕》的文章
2021-04-27 千鋒教育重慶發布了 《第三屆山東省計算機職業教育大會隆重召開 千鋒教育受邀參會》的文章