回覆列表
-
1 # 陝西IT優就業
-
2 # 千鋒頭號粉絲
首先,Java是針對於物件的機制,運算子“new”為每個物件分配記憶體空間,實際記憶體會隨程式的執行而發生改變。在執行的同時每個Java系統會對記憶體進行掃描,會對整個系統資源進行“採集”。這個時候一部分的垃圾檔案就會被刪除或者暫時回收。這樣就使得整個系統資源就使用的更加充分合理,程式設計師對於這點就不需要擔心繫統記憶體方面的一些管理要求,在編寫程式的時候也就變得更加的簡潔明瞭。而c語言則是透過malloc()和free()這兩資料庫函式來分別實現對於的記憶體的分配和記憶體的合理運用。
其次,C語言更多透過子函式呼叫,Java透過類和類引用,同時擁有非常多的介面。Java面向物件特徵主要表現為封裝,繼承和多變,C語言支援“運算子的過載”,這個是資料抽象和泛型編輯的一大寶典。Java本身為了降低複雜性而不支援這種多變機制,對於Java可以支援方法過載和重寫。
另外,Java比C語言多了一些修飾“Public、Private、Protected”都是一些比較常用的修飾符,而C語言沒有這類的修飾語言,換句話的意思就是C語言還缺乏一定的安全性。
再者,Java不使用指標,但是指標是C語言的精髓,然而Java中更多的是對資料每一位的操作,比如substring等。
總結來講,Java與C語言相比,Java具有簡單、面向物件、分散式、健壯、可移植、解釋性、安全、多執行緒、垃圾回收等等特點。而對於C語言則是一個比較宏觀的領域,因此Java可以說是C語言的基礎上開設,即C語是基石,Java在時下的運用和使用方面就比較全面。
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大。當然Java和C之間的區別還有很多很多。