很多沒用過java或者沒怎么用過java的程序員都會說java執行效率低,這種言論時不時的在影響着我這個初級的java開發者。
java執行效率低因如下幾點導致(和C++比較):
1,java不允許內存地址類型被修改,也不能像C++那樣直接給內存地址加偏移量直接操作內存。C++處理內存地址辦法確實直接了當,執行效率很高,但是也容易出現bug,java使用對象時,嚴格遵循類型轉換規則。
2,C++在new對象之后有delete操作符來及時釋放內存。java有垃圾回收機制,一段時間后會自動回收不再被需要的對象。這個時差也是效率的體現。
3,一個指定為有10個成員的數組,寫入第十一個成員時C++不會限制這種靈活操作上的錯誤。程序員沒限制,直接操作內存。
綜上所述:java的效率低,因為限制多,帶來的好處是錯誤相對較少。沒有規矩,不成方圓,我認為循規蹈矩地開發才是java的思想吧,java把開發者自由開發的部分權限收回了,同時也限制了程序員馳騁內存、底層的夢。
4,最重要的一點,java程序的執行依賴於jvm(java虛擬機)為橋梁來鏈接java程序和操作系統,尷尬的是jvm本身就是用C來實現的。java程序的執行首先編譯java程序為java class文件,然后經過jvm才能被操作系統執行,而c++編譯后直接就能被操作系統執行,執行效率能不低嗎!同時這個特點也是java的一個優點:跨平台行性,java class文件可以在任何支持jvm的平台上執行,windows,linux,但是c++代碼經過windows編譯后就無法在linux系統上面正確執行。
所以java的執行效率和c++是沒有可比性,但是,任何事物都有雙面性,執行效率低,不一定就是效率低。總體看來,java也是種很不錯的語言。
