华南俳烁实业有限公司

java

當前位置:中華考試網(wǎng) >> java >> java面試題 >> 文章內(nèi)容

2020年java高頻面試題:第十部分

來源:中華考試網(wǎng)  [2020年10月13日]  【

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

  與 C++ 不同,Java 不支持運算符重載。Java 不能為程序員提供自由的標準算術(shù)運算符重載,例如+, -,*和/等。如果你以前用過 C++,那么 Java 與 C++ 相比少了很多功能,例如 Java 不支持多重繼承,Java中沒有指針,Java中沒有地址引用傳遞。另一個類似的問題是關(guān)于 Java 通過引用傳遞,這主要表現(xiàn)為 Java 是通過值還是引用傳參。雖然我不知道背后的真正原因,但我認為以下說法有些道理,為什么 Java 不支持運算符重載。

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

  填寫下面表單即可預約申請免費試聽java課程!害怕學不會?助教全程陪讀,隨時解惑!擔心就業(yè)?一地學習,可全國推薦就業(yè)!

預約申請免費聽java課程

  • 地區(qū):
  • 姓名:
  • 手機:

  避免編程錯誤。Java 不允許用戶定義的運算符重載,因為如果允許程序員進行運算符重載,將為同一運算符賦予多種含義,這將使任何開發(fā)人員的學習曲線變得陡峭,事情變得更加混亂。據(jù)觀察,當語言支持運算符重載時,編程錯誤會增加,從而增加了開發(fā)和交付時間。由于 Java 和 JVM 已經(jīng)承擔了大多數(shù)開發(fā)人員的責任,如在通過提供垃圾收集器進行內(nèi)存管理時,因為這個功能增加污染代碼的機會, 成為編程錯誤之源, 因此沒有多大意義。

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

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

責編:yangliu1997
  • 會計考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學歷考試
尉犁县| 武冈市| 罗平县| 府谷县| 遂川县| 资阳市| 凌云县| 宁乡县| 定陶县| 潼关县| 河西区| 刚察县| 阜阳市| 景宁| 安溪县| 临夏县| 南昌市| 衡阳县| 油尖旺区| 紫云| 涡阳县| 肃宁县| 洪雅县| 潼南县| 平泉县| 思茅市| 卢龙县| 建昌县| 蕲春县| 鄂托克旗| 通化市| 贵德县| 镇坪县| 江都市| 化隆| 盘山县| 湘西| 丽江市| 鞍山市| 区。| 历史|