Java竟然被稱之爲準動態語言?

什麼是動態語言?

動態語言,是指程序在運行時可以改變其結構:新的函數可以被引進,已有的函數可以被刪除等在結構上的變化。比如JavaScript便是一個典型的動態語言。

除此之外如Ruby、Python、OC等也都屬於動態語言,而C、C++、Java等語言則不屬於動態語言。

動態類型語言,就是類型的檢查是在運行時做的,是不是合法的要到運行時才判斷,例如JavaScript就沒有編譯錯誤,只要運行錯誤。
JavaScript改變結構小例子:

aAll[0].οnclick=function(){
                //通過重新賦類名,達到顯示隱藏菜單的效果
                if(oArt.className=='no_circle'){
                    oArt.className='yes_circle'
                }else{
                    oArt.className='no_circle'
                }
            }
}

靜態語言

靜態類型語言的類型判斷是在運行前判斷(如編譯階段),比如java就是靜態類型語言,靜態類型語言爲了達到動態會採取一些類型鑑別手段,如繼承、接口,而動態類型語言卻不需要,
靜態類型語言的主要優點
在於其結構非常規範,便於調試,方便類型安全;
缺點:
是爲此需要寫更多的類型相關代碼,導致不便於閱讀、不清晰明瞭。動態類型語言的優點在於方便閱讀,不需要寫非常多的類型相關的代碼;缺點自然就是不方便調試,命名不規範時會造成讀不懂,不利於理解等。

爲什麼Java可以稱之爲"準動態語言"?
體現在以下幾個方面:
1.反射機制

2.動態編譯

3.動態執行javascript代碼

4.動態字節碼操作

5.動態轉換類型

Java的反射機制被視爲Java爲準動態語言的主要的一個關鍵性質,這個機制允許程序在運行時透過反射取得任何一個已知名稱的class的內部信息,包括:
正在運行中的類的屬性信息,正在運行中的類的方法信息,正在運行中的類的構造信息,正在運行中的類的訪問修飾符,註解等等。

動態語言無時不刻在體現動態性,而靜態語言也在通過其他方法來趨近於去彌補靜態語言的缺陷。

原文鏈接: https://blog.csdn.net/agonie201218/article/details/56851844

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章