C語言與java的區別


相同的地方:

  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_。

4、在運行方式上 C:原始的C是面向過程的.就是按行執行. JAVA:絕對的面向對象.就像按模塊執行. (補充:當然,在C++,及C#上,C也有向面向對象模式轉換)

5、在語句結構上 C:在中國應該算是編程語言的顛峰應用.C就像個完全服從的軍人.你讓他做什么他就做什么.你完全控制他,但你必須全程了解他之后才能控制好他.

C里面特有指針,地址等.以及數組存儲方式與JAVA不一樣.

JAVA:人性化的面向對象編程語言.他把萬物都可以看成一個基本的對象,然后再復制,改寫他們. JAVA給認為有點像工廠,你在工廠里面先分別做好一個個小零件,然后再用電線把他們連起來.組裝成可用的東西.

6、用途上 C:純C一般用在嵌入式上.編寫最底層的程序.因為他的語言與硬件的連接最容易. C++:應用軟件,WEB程序都可以. JAVA:J2EE,J2SM,J2ME.什么都可以

c 嵌入式底層軟件 操作系統 各類函數庫引擎庫軟件核心代碼 服務器端底層工具 c++ 圖形圖像 游戲客戶端 游戲服務端桌面軟件各類高性能客戶端軟件近底層軟件 java嵌入式移動設備應用軟件開發 web網頁后台邏輯開發部分桌面程序 C,JAVA其實都可用在各種領域的.

語法不同: 單文件的編譯時間java比C語言快; C語言可以直接操作內存,java不能直接操作; C語言可以封裝動態庫,java不行; C語言的代碼不容易跨平台,java的代碼容易跨平台; C語言有指針,java沒有指針; C語言可以直接操作串口,java需要第三方jar包支持; C語言的線程更加靈活,java的線程都已經封裝好了; C語言做單獨功能,可以增加效率,java適用做web應用開發; unix是C語言編寫的,java也是C語言編寫的; JAVA做web開發的時候,已經有很多成型的框架技術,C語言很少,且需要處理底層內容,對應不熟悉計算機原理的開發者難度很大; JAVA的開源包太多了,C語言也有但是偏少,而且面向某個業務應用領域的框架沒java多;
 

JAVA和C還有一個最大的區別,那就是跨平台。

   通過JAVA虛擬機的解析,可以使在Windows或UNIX上面寫的程序在其他系統下也能運行,而C語言是絕對不行的。但是C語言在和硬件打交道的時候,速度是最快的。C比較基礎,java比較流行。但是2者沒有上下之分,一個是編程語言的鼻祖,一個是目前流行的跨平台語言.擅長的領域不同,在不同的場合用不同的語言。但是,如何運用好這門語言,也就是對程序員的一個考驗。魚和熊掌的問題,取舍最終還是只能看你自己。

 

C、C++、C#其實也是三種不同的語言

C++是C的增強版,增加了一些新的特性,如面向對象 C#跟 C/C++ 完全不同,是微軟開發的語言,用於.net

只是語法有點像C/C++  要說區別,首先就得說聯系, C是爺爺,C++是爸爸, C#是c的外孫。這形象說明了三者的關系。

從時間先后上說,他們之間最早出現的是C,然后是c++,最后是c#。c++是為了解決軟件危機而引入面向對象

c#為了實現平台統一和java爭奪市場下的產物。

目前軟件開發有兩種主流的開發方法(對應的語言):

1、結構化開發方法:C、Basic、Pascal;

2、面向對象開發方法:C++、Java、C#、Ruby

 

一、 Java封裝了很多類和接口,而這些是C語言沒有的。其實為了提高開發效率,java就應運而生了,這些功能在C語言也可以實現,但是要自己寫更多的代碼。但也因此,同樣的程序用java寫的一般跑得比C語言 的慢很多。

二、 C語言是面向過程的語言,而Java是面向對象的語言。Java相對於c語言而言,去掉了指針等容易出錯的功能。在Java語言白皮書中,Java被描述為“是一種簡單、面向對象、分布式、解釋、健壯、安全、結構中立、可移植、高效能、多線程、動態的語言

三、 C語言單機代應用非廣泛融合高級語言簡單易用匯編語言執行效率Java研究電消費產品發平台互聯網應用基礎實現許的語言特性c語言沿用發展並且使面向象更加自完善(安全性代碼移性)。

四、 Java的程序是由一個一個類組成的,一個Java應用程序至少包含一個類,極端的,一個類可以是一個空類,不包含任何屬性定義和方法聲明。

五、 至少一個類中應該包含public static void main(String[] args)這樣的方法聲明,否則程序不可能被運行。

六、 Java跨平台,既不同的操作系統都可以通過JVM(java虛擬機)來解釋Java程序,而則是與平台相關的,有些指令只在某些操作系統中才能執行。Java是解釋型語言,所有代碼都會翻譯成統一的、與系統無關的bytecode,然后放到JVM上運行;而C是編譯式語言,代碼要先通過編譯器轉換成與系統相關的中間代碼,然后才能運行。

七、 Public表示該類可被其它的類訪問,class表示Java的一個類,static表示main()方法是一個可以直接使用的方法,void表明main()方法執行它所包含的語句后不返回給調用者任何信息。這一點是重要的,因為Java編程語言要進行謹慎的類型檢查,包括檢查的調用方法確實返回了這些方法所聲明的返回值類型。String[]是一個string數組的聲明,用來接受外界傳遞給main()方法的參數。

八、 Java程序多用於網絡。C語言的安全性不如Java,C語言沒有Java的垃圾回收機制,申請的空間要手動釋放。Java的通用性好,可以跨平台直接移植,只要有安裝Java虛擬機(JVM)就可以了。在速度上,C語言編寫的程序要優於Java,因為Java必須運行在虛擬機的環境中,但是因為虛擬機,Java獲得的平台無關性,而C語言的程序有可能需要重新修改編譯才能實現平台的移植,另一方面,C語言比Java語言更“底層”,因此可以用C編寫例如硬件的驅動,而Java卻不行。

九、 Java的命名規則是標識符可從一個字母、下划線(—)或美元符號($)開始,隨后可跟除了在Java中作為運算符之外的任何可見字符。標識符是連續的字符串,不能被制表符和空格隔開。標識符不可能是關鍵字,但是它可包含一個關鍵字作為它的名字的一部分。Java語言嚴格區分標識符的大小寫,未規定最大長度。

十、 基本Java類型有八種,分別為邏輯型、字符型、字節型、短整型、整型、長整型、單精度、雙精度。

十一、 Scanner是一個類,通過調用掃描對象的方法實現輸入。Println()方法,ln表示換行。

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM