c語言與java區別
這個問題很多人問我了,你可以在網路知道上搜索,有很多都是我敲的,並且都是最佳答案。今天我就再幫一次兄弟,不過回答保證更為精準。
這個C語言是面向過程語言,C++是混合型語言,java是面向對象語言。很多書中吧C++作為面向對象語言來講,但是實際上C++不是純種的面向對象語言。java是面向對象的代表。如果你聽說過C#的話,那麼C#是面向對象的終結。
當然這些對於初學者來說不太明了什麼是面向對象、什麼是面向過程。而我在這里解釋也會讓你更加懵懂。所以撇開什麼是面向對象什麼是面向過程,單單介紹他們實際應用區別:
C是一門非常干練的語言,一切採用函數的形式完成,你可以把所有需要的功能採用函數的形式完成,然後在主函數main中調用。學起來容易,幾乎用三兩天就可以學會。一般用來教學學習演算法,數據結構等。同樣這也造成了它的應用范圍局限在小程序中,只能是針對小規模的東西開發:比如DOS程序,嵌入式開發等。
C++是在C語言的基礎上擴展的,所以一般C++會兼容C語言庫。C++是因為用C語言開發項目中會遇到很多團隊合作問題,導致團隊的工作效率下降。在此基礎上迫切需要降低軟體開發團隊成員之間彼此的干擾性,使得每個工程人員的代碼竟可能不影響他人。最後C++便應用而生了。C++主要是其中集成了類地概念,可以將所有的東西封裝在類中,類中的私有成員不可被別人訪問,這樣就有效地解決了代碼互干擾性。
java是汲取C++的長處而誕生的,這個語言採用完全面向對象的概念,將所有的功能封裝在類中,而不像C++部分封裝。由於java採用跨平台性,使得更容易被移植,在互聯網要求多終端能夠互相訪問成為可能,這便形成了java平台今日的盛況,在互聯網方面幾乎無人可敵。
學習難易程度來講C++非常難,即使有5年工作經驗的C++工程師也未必能夠熟練應用C++,C語言易掌握,但是應用起來難度不下於C++,因為C語言幾乎是對硬體直接寫代碼,一般來說會使得代碼非常龐大,增加了開發人員的工作量。java因為封裝了很多功能,所以幾乎開發效率相當高。
❷ 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_。
給你找的資料。
希望對你有所幫助。。
❸ C語言和Java,這兩個有什麼區別呢
這個C語言是面向過程語言,C++是混合型語言,java是面向對象語言。很多書中吧C++作為面向對象語言來講,但是實際上C++不是純種的面向對象語言。java是面向對象的代表。如果你聽說過C#的話,那麼C#是面向對象的終結。
當然這些對於初學者來說不太明了什麼是面向對象、什麼是面向過程。而我在這里解釋也會讓你更加懵懂。所以撇開什麼是面向對象什麼是面向過程,單單介紹他們實際應用區別:
C是一門非常干練的語言,一切採用函數的形式完成,你可以把所有需要的功能採用函數的形式完成,然後在主函數main中調用。學起來容易,幾乎用三兩天就可以學會。一般用來教學學習演算法,數據結構等。同樣這也造成了它的應用范圍局限在小程序中,只能是針對小規模的東西開發:比如DOS程序,嵌入式開發等。
C++是在C語言的基礎上擴展的,所以一般C++會兼容C語言庫。C++是因為用C語言開發項目中會遇到很多團隊合作問題,導致團隊的工作效率下降。在此基礎上迫切需要降低軟體開發團隊成員之間彼此的干擾性,使得每個工程人員的代碼竟可能不影響他人。最後C++便應用而生了。C++主要是其中集成了類地概念,可以將所有的東西封裝在類中,類中的私有成員不可被別人訪問,這樣就有效地解決了代碼互干擾性。
java是汲取C++的長處而誕生的,這個語言採用完全面向對象的概念,將所有的功能封裝在類中,而不像C++部分封裝。由於java採用跨平台性,使得更容易被移植,在互聯網要求多終端能夠互相訪問成為可能,這便形成了java平台今日的盛況,在互聯網方面幾乎無人可敵。
學習難易程度來講C++非常難,即使有5年工作經驗的C++工程師也未必能夠熟練應用C++,C語言易掌握,但是應用起來難度不下於C++,因為C語言幾乎是對硬體直接寫代碼,一般來說會使得代碼非常龐大,增加了開發人員的工作量。java因為封裝了很多功能,所以幾乎開發效率相當高
❹ C語言與C++與JAVA的區別是什麼
Java程序中的每個變數要麼是基本數據類型(boolean,char,byte,short,int,long,float,double),要麼是對對象的引用
C++有許多種基本類型,額外還有struct,union,enum,數組和指針,C++指針可以指向對象,也可以不指向對象
Java沒有枚舉、聯合類型,因為Java認為沒有必要。將可有可無的語言元素去掉是Java對C/C++做出的一大改變,因此,普遍認為Java較C++更輕便,更精簡
Java採用Unicode字元集,C++通常用ASCII字元集。但ASCII是Unicode的子集,對於習慣於ASCII的程序員感覺不到區別
Java中的boolean類型不能轉換成其他類型,反之亦然。C++最近引進了bool類型,代表布爾類型,整型也作為邏輯判斷
模板是一種「泛型編程思想」,它有別於「面向對象編程思想」。C++在很大程度上已經支持了這種新型編程方法,特別是STL的出現
Java目前仍未支持泛型編程,不過據說Sun公司有在Java中引入模板的計劃
C++支持「運算符的重載」,這是它的一個很重要的多態特徵,是數據抽象和泛型編程的利器。它允許直接對對象進行四則運算,正像基本數據類型那樣
Java不支持這種多態機制,也是為降低復雜性
兩種語言都支持方法重載(overloading)
在C++中,為了允許運行時動態決定哪個函數被調用,一個函數必須用virtual修飾。virtual關鍵字被自動繼承,用以支持多態
凡是沒有用virtual修飾的成員函數(包括static)都是靜態綁定的,即在編譯時決定調用哪個版本
而在Java中,除了static、final、private是靜態綁定以外,所有方法一律按動態綁定處理
C++中有「拷貝構造函數」的概念,在三種情況下,自動調用它
用一個對象初始化另一對象
對象作實參進行函數調用
對象作函數的返回值
通常,當一個對象需要做「深拷貝」(錢能:《C++程序設計教程》)時,我們需要為它事先定義「拷貝構造函數」、「賦值運算符的重載函數」和「析構函數」;否則編譯器將以「按位」的形式自動生成相應的預設函數。倘若類中含有指針成員或引用成員,那麼這三個默認的函數就隱含了錯誤
Java則沒有這種語法結構和語義邏輯
C++支持inline函數,可以避免函數的堆棧調用,提高運行效率
Java無這種語義
C++中,構造函數的初始化列表是這樣使用的:首先按繼承順序調用基類的構造函數構造基類對象,然後按聲明順序調用成員對象的構造函數構造成員對象,最後對列表中出現的成員變數做初始化
Java不採用初始化列表這種構造機制
它們的構造順序基本一致:
靜態變數初始化
靜態初始化塊(Java)
調用基類的構造函數構造基類對象
實例變數的初始化
構造函數的其餘部分
Java使用abstract關鍵字修飾抽象方法或抽象類
C++的對等語法是「純虛函數」和「抽象類」
兩者都使用抽象類作為繼承層次中的基類,提供一般概念,由子類實現其抽象方法,且抽象類都不能被直接實例化為對象
Java中有final關鍵字,修飾類、方法或變數
final類不能被繼承
final方法不能被子類覆蓋
final變數就是常量
C++中沒有這個關鍵字,常量可以使用const或#define定義
const還可以修飾成員函數,即「常成員函數」,當一個const成員函數修改成員數據,或調用非const成員函數時,編譯器會報錯
我們應將不修改成員數據的函數聲明為const
Java和C++中的static關鍵字語法和語義基本相同
static成員變數又叫類變數,被類的所有對象共享
A::x(C++):必須在類體外初始化
A.x(Java):必須在類體內初始化
static成員方法又叫類方法,訪問static變數
A::f()(C++)
A.f()(Java)
兩者都有內部類和局部類的語法和語義
Java中沒有友元函數和友元類的概念,嚴格支持封裝,不允許外部方法訪問類的私有成員
而C++支持friend關鍵字,允許外部方法訪問類的私有成員,因此不是一種純面向對象的編程語言
Java中類或interface可以用public修飾,也可以不修飾;而C++類不能修飾
三種訪問許可權的語義相同,語法略有差別
C++中還有繼承許可權修飾符,Java則沒有
classA:protectedB,publicC(C++)
classAextendsB(Java)
Java有super關鍵字,指代父類對象,通常被用於調用父類的構造方法或一般方法
C++則沒有super關鍵字
兩者都有this,指代當前對象
Java有package的概念,可以將類組織起來,便於打包和部署,也有利於類的安全。C++沒有這個概念,一個類可以被任意類訪問
Javaapplet可以被嵌入HTML文檔中,然後由Web瀏覽器下載和執行
JavaAPI有對網路通訊的特別支持
C++則無內置網路功能
C++程序員必須顯式地實現動態內存管理,在析構函數中用delete運算符或free()函數釋放對象和其他動態分配的數據空間,否則會造成「內存泄露」
而在Java中,垃圾收集是自動的。當對象的最後一個引用變數被釋放掉,這個對象就成為垃圾收集器的候選對象了
因此Java不支持析構函數
finalize()方法主要被用來釋放先前打開的非內存資源,如文件句柄
Java源代碼被編譯成位元組碼(.class文件),位元組碼是一種只有JVM才能識別的二進制低級代碼,它與具體的處理器無關,要由安裝在OS之上的JVM解釋執行,轉換成相應平台的機器碼,因此Java是體系結構中立和跨平台的
而C++直接被編譯成底層平台的二進制機器碼,由CPU執行,是平台相關的
因此,當解釋執行時,Java程序速度更慢
Java語言支持多線程,允許並發線程的同步與互斥操作
C++則沒有這種內在機制
Javadoc.exe可以將Java程序的內容和結構轉換成HTML格式的文檔
❺ 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多;
以下省略1萬字。。。
C語言結合java語言開發,這樣就碉堡了,可以解決很多應用問題
❻ C語言和java相比較,各自的優勢是什麼
c語言與java的區別與各自的優勢:(c是面向過程的,java是面向對象的)
1.語言背景:
C語言是在單機時代應用非常廣泛,它融合了高級語言的簡單易用和匯編語言的執行效率。而Java是在研究電子消費產品開發平台和互聯網應用的基礎上實現的,它的許多語言特性也是從c語言那裡沿用和發展,並且使面向對象更加自然和完善(如安全性和代碼的移動性)。
2.語言跨平台:
C語言不可以跨平台,JAVA 是不怕這一點的,因為Java可以跨平台,在windows 和 unix 等系統上都可以很好的運行。
3.指針管理:
指針是c語言最大的優點,它可以使用戶幾乎可以訪問計算機的所有內存資源和其他部分資源(就是指那裡打那裡)。同時也是c語言程序最難掌握和調試的問題,並且給系統的安全性和穩定性帶來很大的困難。 而java中沒有指針的概念,盡管也有數組和對象的引用的概念,但它的管理全部交給系統管理,這樣限制了用戶的資源的訪問,但是也給java系統帶來安全性和穩定性。JAVA語言讓編程者無法找到指針來直接訪問內存無指針,並且增添了自動的內存管理功能,從而有效地防止了c語言中指針操作失誤,如野指針所造成的系統崩潰。但也不是說JAVA沒有指針,虛擬機內部還是使用了指針,只是外人不得使用而已。這有利於Java程序的安全
4.封裝
在java中引入了package的概念,使面向對象和面向組件開發更加方便,而在c語言中沒有package概念,需要其他方式來實現。Java都能夠實現面向對象思想(封裝,繼乘,多態)。而由於c語言為了照顧大量的C語言使用者,而兼容了C,使得自身僅僅成為了帶類的C語言,多多少少影響了其面向對象的徹底性!JAVA則是完全的面向對象語言,它句法更清晰,規模更小,更易學。它是在對多種程序設計語言進行了深入細致研究的基礎上,據棄了其他語言的不足之處,從根本上解決了c語言的固有缺陷。
5.數據類型及類
Java是完全面向對象的語言,所有函數和變數部必須是類的一部分。除了基本數據類型之外,其餘的都作為類對象,包括數組。對象將數據和方法結合起來,把它們封裝在類中,這樣每個對象都可實現自己的特點和行為。而c語言允許將函數和變數定義為全局的。
6.自動內存管理
Java程序中所有的對象都是用new操作符建立在內存堆棧上, Java自動進行無需內存回收操作,不需要程序員進行刪除。而c語言中必須由程序貝釋放內存資源,增加了程序設計者的負扔。Java中當一個對象不被再用到時,無用內存回收器將給它加上標簽以示刪除。JAVA里無用內存回收程序是以線程方式在後台運行的,利用空閑時間工作。
7. 字元串:
C語言不支持字元串變數,在c語言程序中使用Null終止符代表字元串的結束,在Java中字元串是用類對象(strinR和stringBuffer)來實現的,這些類對象是Java語言的核心!
Java沒有函數,作為一個比c語言更純的面向對象的語言,Java強迫開發人員把所有例行程序包括在類中,事實上,用方法實現例行程序可激勵開發人員更好地組織編碼。
我覺得這篇文章寫的很好,就摘錄給你看了,希望可以幫助到樓主
❼ Java和c語言的區別
C語言是底層的語言,
java可以看作是在C上面封裝起來的一種語言,就像建一座高樓一樣,C語言更像磚塊,沙石等這些基礎的東西,而java可以看作是磚塊和沙石這些東西組合起來的一面可以搬來搬去的牆。
❽ c語言和java的區別是什麼
c語言是面向過程語言 現在基本是不用的 學了c以後也要學面向對象的c# java就是面向對象語言 學c 一般適合搞電腦端的開發 java偏向搞機器代碼
❾ C語言和JAVA有什麼區別
區別來如下:源
1、設計思路不同:C語言是面向過程的語言,執行效率高;Java是面向對象的語言,執行效率比C語言低;
2、通用性不同:C語言不能跨平台;java可以跨平台直接移植,只要有安裝Java虛擬機(JVM)就可以了;
3、語法不同:
(1)、基本數據類型不同:
c語言是int short long char float double 還有一些特殊類型 結構體,指針,聯合體等,數組,字元串 ;
java 是byte int short long float double char boolean ,而且c語言的基本類型的位數和操作系統和機器相關,而java 是固定的;
(2)、文件組織方式不一樣:c語言會把全局變數和方法的聲明,放在一個文件裡面,叫做頭文件,而java 是以類來組織文件的;
4、應用領域不同:C語言主要用於驅動開發、操作系統、內核開發,嵌入式(單片機)、交換機、路由器等網路設備的開發;java主要是企業應用開發,包括伺服器端開發、嵌入式領域、大數據技術、網站領域等。