-
1 # SapphireCoder
-
2 # 超哥創業vlog生活
1、語法類似:
由於Java可以算是從C++發展而來的,因此Java與C語言的語法比較類似
2、程式設計的熟練程度就是對語言程式庫的掌握程度:
從某種程度上來說,程式語言都是由語法和相應的程式庫所構成,Java有自身的類庫,C語言則有標準庫。所謂的程式設計,就是使用與語法來呼叫和組合程式庫中的函式。
不同的地方:
1、記憶體管理
在Java中,基本不用考慮記憶體的問題,如果想用一個物件,new一個就可以,這個過程的背後則是JRE為物件分類的一定記憶體,當JRE發現你不再使用這個物件的時候,他就會自動回收記憶體,也就是說你只管借東西,不用管歸還,因為與有人當你的跟班,在你不使用的時候就把東西歸還了,不過這個過程還是有的,只不過是JRE作的而已。
但是C則不同,如果你想用,你可以用malloc之類的方法申請記憶體,當你使用完了,因為沒有跟班的,你需要自己把這塊記憶體歸還回去,也就是呼叫free方法來完成這個任務。由於需要顯式的歸還記憶體,因此當一個函式需要將一塊記憶體返回給呼叫者的時候,問題就比較複雜了,不如面向物件和具有記憶體回收功能的Java那麼直觀了。對於這個問題,在C語言中,有幾種解決方案:
(1) 在呼叫者中先分配好記憶體,作為引數傳入到被呼叫的函式中
(2) 在被呼叫的函式中分配,使用完後在呼叫者中釋放
(3) 在被呼叫函式中使用static變數,可以將該變數返回
2、面向物件
Java的面向物件的特點很明顯,而C則是一個地道的結構化語言。 Java中有一個字串類String, 透過呼叫 String.length()就可以知道字串的長度,但是在C語言中,則需要呼叫函式strlen(str)來得到字串(字元陣列)的長度。由於C不是面向物件的語言,也就沒有this的概念,因此當使用一個與某個“東西”相關的函式時,就需要不厭其煩的將代表這個“東西”的變數作為引數傳遞進去。
3、名稱空間
Java透過包(package)來實現名稱空間,在C語言中,所有的函式都處於同一名稱空間,也就是沒有名稱空間,因此就會很多程式提供的api介面函式都有一個字首,例如MYSQL的mysql_init(), mysql_real_connect(), mysql_real_query()等函式名稱前面的mysql_。
給你找的資料。
ava和c語言兩者的區別如下:
1、C語言是面向過程的語言,執行效率高;Java是面向物件的語言,執行效率比C語言低;
2、C語言的安全性不如Java,C語言沒有Java的垃圾回收機制,申請的空間要手動釋放。Java的通用性好,可以跨平臺直接移植,只要有安裝Java虛擬機器(JVM)就可以了。
3、在速度上,C語言編寫的程式要優於Java
4、C語言注重的是演算法,但是Java卻不一樣,想用的時候導包就可以了。C語言的演算法很重要,但是Java中的演算法沒有C語言那麼複雜。
5、Java採用Unicode字符集,C語言通常採用的是ASCII字符集,A—65,a—97。
6、C語言的變數可以不進行初始化,但Java的變數要進行初始化。
-
3 # 三合視角
C更多用在底層開發,比如系統,演算法之類的領域,java更多的運用於應用層開發,比如伺服器後端開發,兩者不是誰替代誰,而是都在各自領域發光發熱。
-
4 # IT人劉俊明
Java語言和C語言的區別還是相對比較明顯的,從語言自身的定位來看,Java語言屬於面嚮物件語言的代表,在構建複雜業務邏輯方面具有一定的優勢,而C語言則是面向過程程式語言的代表。
總的來說,Java和C之間的不同,可以透過以下幾個方面來進行描述:
第一:應用場景不同。Java語言屬於“全場景”程式語言之一,可以應用於Web開發、Android開發、大資料開發等場景,而C語言的應用場景則相對比較集中,主要應用於作業系統開發和嵌入式開發領域。由於Java語言的應用場景更多,所以目前IT行業內Java開發的崗位也相對更多一些。
第二:技術體系不同。Java是面向物件程式語言,雖然也借鑑了C語言的很多寫法,但是在技術體系的設計上更注重可移植性、安全性和可擴充套件性,所以Java語言更契合網際網路的應用環境,這也是Java在網際網路時代得到快速發展的一個重要原因。由於Java語言極強的擴充套件效能,所以Java語言可以在網際網路時代、移動網際網路時代和大資料時代都能夠找到自己的位置。
第三:發展道路不同。雖然Java語言的出現要比C語言晚一些,但是Java語言的發展道路與C語言還是具有明顯的區別,或者說Java的開發人員並不是想讓Java取代C語言。Java語言的發展道路主要可以體現出三個特點,第一是跨平臺;第二是資源整合能力強;第三是併發處理能力強。可以說Java語言在設計上是希望解決C語言之上的問題,也就是網路問題。
實際上,與Java語言同時代的Python語言,在設計思想上與Java也有很多共同點,只不過Python語言更注重庫的作用,語言風格更開放(膠水語言),而Java語言依託在當時的Sun技術體系下,則顯得要相對“嚴謹一些”,當時的Sun技術體系也想基於Java成就一個新的開發模式,只不過後來的EJB並沒有取得設想的結果。
-
5 # 桂電智控
只有JAVA可能被別的語言代替,C語言的地位暫時不可動搖,除非天才出現,因為C語言的高效率以及對底層硬體的直接操作,C可以算是無所不能了,而JAVA,主要是其無視平臺,但是效率很低,而且無法直接對硬體操作,微軟的.NET,解決跨平臺的需求,同樣做得到無視平臺,所以,JAVA永遠比不了C,因為即使是微軟,它也沒想到過開發什麼取代C
-
6 # 日衝資訊 黃
Java不能完全替代C語言。Java的程式是位元組碼不是機器碼,執行時要透過虛擬機器翻譯成機器碼之後才能執行。而C語言程式在編譯之後已經是機器碼了,可以直接執行。
Java是實時編譯,用Java寫的作業系統需要有另一個用虛擬機器也就是作業系統來啟動,這麼做沒有任何意義。因此,Java不適合寫作業系統。
Java為什麼要用虛擬機器才能執行呢?這麼做使得Java的程式可以誇平臺執行。虛擬機器的作用是吸收作業系統之間的差異。而虛擬機器對於Java程式來說都是一樣的。C語言做不到這一點,在不同的作業系統上,C語言程式必須要用原始碼重新編譯,才能執行。
回覆列表
Java和C語言有什麼區別?在回答這個問題前我們得先了解這兩門語言各自有什麼特點和優勢。
Java是一門面向物件語言,主要特點如下跨平臺性,Java虛擬機器提供了一個位元組碼到底層硬體平臺及作業系統的屏障,使得Java語言具備跨平臺性。簡單性,Java摒棄了C++裡難以理解的多繼承、指標等概念,使得它更加嚴謹、簡潔。面向物件安全性,Java語言具有許多的安全特性。多執行緒C語言是一門面向過程的計算機程式語言,主要特點如下簡潔緊湊、靈活方便結構式語言語法限制不太嚴格,程式設計自由度大C語言能進行位操作,能實現組合語言的大部分功能,可以直接對硬體進行操作生成目的碼質量高,程式執行效率高兩者的部分區別C語言可以直接操作記憶體,Java不能直接操作。C語言可以封裝動態庫DLL,Java不行。Java跨平臺性相對於C語言高。C語言有指標,Java沒有指標。Java擁有垃圾回收機制可自動管理記憶體,而C語言中必須由程式貝釋放記憶體資源。在Java中引入了package的概念,使面向物件和麵向元件開發更加方便,而在C語言中沒有package概念,需要其他方式來實現。Java是否可以取代c嗎?答案是不能。一方面,C語言具有高效率以及對底層硬體的直接操作的優勢。而Java相比於C語言其優勢在於跨平臺性,但是執行效率相對於C語言較低,而且無法直接對硬體操作。另一方面,兩者主要應用的場景領域不同,Java適合企業級開發,而C適合如作業系統,虛擬機器,裝置驅動程式開發的領域。