1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        猜猜 Java 為什么不支持運算符重載?

        共 1318字,需瀏覽 3分鐘

         ·

        2020-07-28 17:01


        作者 |?Yujiaao

        來源 |?https://segmentfault.com/a/1190000019962661

        另一個類似的 Java 面試難題。為什么 C++ 支持運算符重載而?Java?不支持??有人可能會說 + 運算符在?Java?中已被重載用于字符串連接,不要被這些論據(jù)所欺騙。

        與 C++ 不同,Java 不支持運算符重載。Java 不能為程序員提供自由的標(biāo)準(zhǔn)算術(shù)運算符重載,例如+, -,*和/等。如果你以前用過 C++,那么?Java?與 C++ 相比少了很多功能,例如?Java?不支持多重繼承,Java中沒有指針,Java中沒有地址引用傳遞。

        另一個類似的問題是關(guān)于 Java 通過引用傳遞,這主要表現(xiàn)為 Java 是通過值還是引用傳參。雖然我不知道背后的真正原因,但我認(rèn)為以下說法有些道理,為什么 Java 不支持運算符重載。

        1) 簡單性和清晰性。

        清晰性是?Java?設(shè)計者的目標(biāo)之一。設(shè)計者不是只想復(fù)制語言,而是希望擁有一種清晰,真正面向?qū)ο蟮恼Z言。添加運算符重載比沒有它肯定會使設(shè)計更復(fù)雜,并且它可能導(dǎo)致更復(fù)雜的編譯器, 或減慢?JVM,因為它需要做額外的工作來識別運算符的實際含義,并減少優(yōu)化的機會, 以保證?Java?中運算符的行為。

        2) 避免編程錯誤。

        Java 不允許用戶定義的運算符重載,因為如果允許程序員進行運算符重載,將為同一運算符賦予多種含義,這將使任何開發(fā)人員的學(xué)習(xí)曲線變得陡峭,事情變得更加混亂。

        據(jù)觀察,當(dāng)語言支持運算符重載時,編程錯誤會增加,從而增加了開發(fā)和交付時間。由于?Java和?JVM?已經(jīng)承擔(dān)了大多數(shù)開發(fā)人員的責(zé)任,如在通過提供垃圾收集器進行內(nèi)存管理時,因為這個功能增加污染代碼的機會, 成為編程錯誤之源, 因此沒有多大意義。

        3) JVM復(fù)雜性。

        JVM的角度來看,支持運算符重載使問題變得更加困難。通過更直觀,更干凈的方式使用方法重載也能實現(xiàn)同樣的事情,因此不支持 Java 中的運算符重載是有意義的。與相對簡單的?JVM?相比,復(fù)雜的?JVM?可能導(dǎo)致?JVM?更慢,并為保證在?Java?中運算符行為的確定性從而減少了優(yōu)化代碼的機會。

        4) 讓開發(fā)工具處理更容易。

        這是在?Java?中不支持運算符重載的另一個好處。省略運算符重載后使語言更容易處理,如靜態(tài)分析等,這反過來又更容易開發(fā)處理語言的工具,例如 IDE 或重構(gòu)工具。Java 中的重構(gòu)工具遠勝于 C++。


        -?END?-

        往期推薦



        Spring Boot自定義Annotation實現(xiàn)接口自動冪

        程序員副業(yè)接私活網(wǎng)站分享~

        360 倍性能提升!頑強的4 次版本迭代

        程序員的好別人不懂,阿姨懂!快到碗里來!

        Java 性能優(yōu)化:35 個你注意不到的小細(xì)節(jié)


        下方二維碼關(guān)注我

        互聯(lián)網(wǎng)草根,堅持分享技術(shù)、創(chuàng)業(yè)、產(chǎn)品心得和總結(jié)~



        點擊“閱讀原文”,領(lǐng)取 2020 年最新免費技術(shù)資料大全

        ↓↓↓
        瀏覽 38
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日韩一级无码视频电影 | 91精品久久人人妻人人爽人人 | 熟女视频SM蜜桃 | A级片毛片 | 国产 丝袜 欧美 日韩 综合 | 欧美日韩在线观看不卡 | 韩国爱爱视频 | 黄色动漫在线免费看 | 麻豆成人免费视频在线观看 | 欧美性爱506070 |