本文目錄一覽:
Java和C的區別
Java和C都是指令式語言(Imperative Language),不同的是Java有面向對象(OO)成分在裡面,而C是完全面向過程的,C的高級版本C++、C#支持面向對象。
另外一個不同是,Java跨平台,既不同的操作系統都可以通過JVM來解釋Java程序,而C、C++、C#則是與平台相關的,有些指令只在某些操作系統中才能執行。具體原因是,Java是解釋型語言,所有代碼都會翻譯成統一的、與系統無關的bytecode,然後放到JVM上運行;而C是編譯式語言,代碼要先通過編譯器轉換成與系統相關的中間代碼,然後才能運行。
再一個不同是,Java不支持系統調用,既無法與操作系統進行交互,這是由它跨平台的特點決定的,而C則可以調用系統中的指令,如fork()。這也就是為什麼Java中只有線程(Thread)概念而沒有進程(Process)概念,而C兩者均有。
再者,Java無法對內存進行控制,而C則可以通過指針對內存進行人為分配。
還有一點,Java有Gabbage Collection機制,可以自動回收不再使用的空間,而C則要用free()函數釋放空間。
詳解Java和C語言的區別在哪裡?
1Java與C語言各自的優勢
C語言是面向過程的語言,執行效率高;Java是面向對象的語言,執行效率比C語言低。
C語言最關鍵的是比Java多了指針,這也說明了Java的健壯性,還有Java的多線程機制使程序可以並行運行,Java程序多用於網路。
C語言的安全性不如Java,C語言沒有Java的垃圾回收機制,申請的空間要手動釋放。
Java的通用性好,可以跨平台直接移植,只要有安裝Java虛擬機(JVM)就可以了。
2Java和C語言誰的通用性會比較好
在速度上,C語言編寫的程序要優於Java,因為Java必須運行在虛擬機的環境中,但是因為虛擬機,Java獲得的平台無關性,而C語言的程序有可能需要重新修改編譯才能實現平台的移植,
另一方面,C語言比Java語言更「底層」,因此可以用C編寫例如硬體的驅動,而Java卻不行。Java和C語言還有個明顯的不同就是C語言注重的是演算法,但是Java卻不一樣,想用的時候導包就可以了。
C語言的演算法很重要,但是Java中的演算法沒有C語言那麼複雜。列印的方法:C語言是printf(“??.”);而Java是System.out.print(“??.”),也可以用println,ln表示換行。
Java程序中的基本數據類型(boolean,char,byte,short,int,long,float,double),是對對象的引用;C語言也有許多種基本類型,還有struct,union,enum,數組和指針。
在Java沒有枚舉、聯合類型。Java採用Unicode字符集,C語言通常採用的是ASCII字符集,A—65,a—97。C語言的變數可以不進行初始化,但Java的變數要進行初始化。
在C語言中,char類型佔一個位元組,在Java中char類型佔2個位元組。
3Java和C語言各自的特徵
Java面向對象的特徵主要有封裝,繼承,多態。類的繼承關係是單一的、非多重的,一個子類只有一個父類,子類的父類又只有一個父類。C語言支持「運算符的重載」,這是它的一個很重要的多態特徵,是數據抽象和泛型編程的利器。它允許直接對對象進行四則運算,正像基本數據類型那樣Java不支持這種多態機制,也是為降低複雜性。
Java可以支持方法重載和重寫,所謂重載就是一個類具備多個相同屬性行為;重寫就是在繼承關係中父類的行為在不同的子類上有不同的實現。在Java中比C語言多了一些修飾符,如訪問修飾符Public(公共的)、Private(私有的)、Protected(受保護的)、默認。
Java有super關鍵字,指代父類對象,通常被用於調用父類的構造方法或一般方法C語言則沒有super關鍵字,兩者都有this,指代當前對象。
在Java中,除了static、final、private是靜態綁定以外,所有方法一律按動態綁定處理。Java中可以將類組織起來用Package打包,而C語言沒有。
C語言和JAVA語言的運行機制有何不同
很簡單,如果你有學習過編譯原理就會明白的。
C和Java都是高級編程語言,計算機是不會明白的,而要讓計算機明白,就得找個「翻譯」。
而這個「翻譯」有兩類,第一個是「翻譯程序」,第二個是「解釋程序」。
「翻譯程序」的工作就是一次過將高級編程語言編寫的代碼翻譯成低級語言代碼,讓計算機執行翻譯後的代碼。
「解釋程序」的工作就是讀取一句高級編程語言寫的指令就解釋成低級語言編寫的指令,而採取一邊解釋一邊執行的方式。
C就是翻譯之後,讓計算機執行翻譯得到的程序。
Java很特別,在翻譯這一步上,它不是翻譯成直接可以運行的程序,而是「位元組碼」。「位元組碼」由當前操作系統安裝的Java虛擬機一邊解釋一邊執行,注意,相同程序得到的「位元組碼」是一樣的,但是在不同操作系統下的虛擬機則不同。這樣,就可以「一次編寫,處處運行」。但是,一邊解釋一邊執行是效率很低的,所以Java又出了JIT技術,就是Just In Time Compiler及時編譯器,在執行時對一些常用的類花費一定時間進行編譯,但是編譯後執行效率很高,而編譯只需要很少的時間,相對於浪費運行的時候寶貴的相應時間來說是很值得的。
總之,C寫的程序是編譯後由系統直接運行,Java是編譯成位元組碼再由JVM執行解釋執行位元組碼來運行程序,前者執行效率高,後者相對低。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/151994.html