java是c語言嗎
怎麼說呢?Java是獨立,就是說C的庫不會被Java識別。但Java的class運行在JVM上的。那個是C語言寫的。
『貳』 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語言開發,這樣就碉堡了,可以解決很多應用問題
『叄』 學習Java和C語言是一回事嗎
從發展前景、未來主導看,C語言更有前途一些。因為C語言是繼機器碼、匯編回之後第一個底層的答與自然語言接近的語言,兼顧高效率與易理解,
所以做底層的主流語言C的地位永遠不會改變。java是面向對象的高級語言,主要目的是容易理解和編寫代碼,那麼將來肯定會出現更加人性化
的高級語言來取代它。這個結論從C語言出現的幾十年但一直居於編程語言排行榜的前三名就可以證明。從優勢和就業來看,java目前好一點,
java是面向對象的高級語言,所以應用軟體主要使用它,相比較C擅長的底層開發,應用軟體的市場更大一些,所以也更容易就業一些,但是如果C學的非常好的話,就業非常容易。
『肆』 Java和C語言有什麼區別
這個問題很多人問我了,你可以在網路知道上搜索,有很多都是我敲的,並且都是最佳答案。今天我就再幫一次兄弟,不過回答保證更為精準。
這個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因為封裝了很多功能,所以幾乎開發效率相當高。
『伍』 JAVA語言和C語言有什麼區別
C語言和 Java的主要區別:面向過程/面向對象、編譯型/混合型、不同的應用場景。只要閱讀二者的入門資料就清楚了。時間足夠的話,先學C再學Java;時間不夠直接上 Java。一個合格的程序員當然是要會C語言的,不過真正必須用到C語言的領域主要是嵌入式開發和操作系統等偏底層的開發。題主所提到的開發場景(Web開發、移動開發)並不是C語言的強項。而選擇 Java 的話,首先要把這門編程語言的基礎打牢,了解面向對象編程的基本思想。然後選擇 Java 的其中一個應用領域繼續深入學習,比如 Web 後台或者安卓開發。Web開發,即題主所說的「做網站」。網站開發分前端和後台,這兩個方向精通其一即可。簡單粗暴地理解,前端是呈現給用戶的網頁界面以及交互操作,運行在用戶的瀏覽器上;而後台負責存取和處理數據,運行在伺服器上。前端和 Java 沒有多大關系,需要學習的是 HTML、CSS 和 JavaScript。學完 JavaScript 基礎之後,再上手一種前端框架,Vue、React、Angular 都可。後台的話,編程語言可選 PHP 或者 Java。選擇 Java 的話,就必須掌握一種主流的 Ja
『陸』 C語言和Java的區別
首先從概念上說,Java是一種廣泛使用的計算機編程語言,擁有跨平台、面向對象、泛型版編程的特性。權c語言是一門面向過程、抽象化的通用程序設計語言。Java的面向對象的特性使得用它編程比用C語言要簡單很多。而且Java脫胎於C語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,所以Java相對C語言來說更簡單易用。
其次從適合人群上來說,名企在招聘Java技術人才時一般會要求大專以上學歷,所以想找Java類工作,學歷是個檻;而C語言行業對於學歷並不那麼看重,C語言開發工程師學歷要求中大專學歷佔比較高。
第三從就業機會上來說,Java由於具有跨平台性、安全性、健壯性等特性,廣泛應用於企業級應用開發、網頁開發、游戲開發等領域,就業面相對較廣,而C語言退守到系統級別語言,成為軟體工業的基礎,地位穩定,廣泛應用於底層開發,嵌入式、VR/AR、網路安全等領域都需要用到C語言。
最後從薪資待遇來看,從職友集數據可知,Java開發類人才的平均薪資在一萬以上,C語言工程師的平均薪資在8千到一萬之間。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有什麼區別
區別來如下:源
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主要是企業應用開發,包括伺服器端開發、嵌入式領域、大數據技術、網站領域等。
『玖』 java是c語言還是C++編寫的
由於C 缺少垃圾回收系統,還有可移植的安全性、分布程序設計、和多線程功能,Sun公司(現已經被Oracle公司並購)想要一種易於移植到各種設備上的平台。Sun公司的程序James Gosling,Bill Joe本來打算試圖修改和擴展C 的功能,後來他們放棄這一決定,轉而開發出了一種新的語言——Oak,這就是Java的前身。當時,Oak並沒有引起人們的注意,直到1994年,隨著互聯網和3W的飛速發展,他們用Java編制了HotJava瀏覽器,得到了Sun公司首席執行官Scott McNealy的支持,得以研發和發展。因為Oak之前已經被人注冊過,1995年Oak更名為Java。Java的得名還有段小插曲呢,一天,Java小組成員正在喝咖啡時,議論給新語言起個什麼名字的問題,有人提議用Java(Java是印度尼西亞盛產咖啡的一個島嶼),這個提議得到了其他成員的贊同,於是就採用Java來命名此新語言。很快Java被工業界認可,許多大公司如IBM Microsoft.DEC等購買了Java的使用權,並被美國雜志PC Magazine評為1995年十大優秀科技產品。從此,開始了Java應用的新篇章。
java語言有一套自己的語言規范,從理論上講用任何成熟的語言都可以開發出java。最開始開發的時候是用C先寫的內核(也有人說是C++,但是從誕生時間上來說這不可能,不過後期版本倒是可能會有C++參與設計),然後用java寫的大多的類。Java的運行離不開JVM(java虛擬機),Java語言是解釋執行的,Java源代碼先編譯成位元組碼(bytecode),然後再由JVM解釋位元組碼執行。不同的操作系統上面JVM有不同的實現機制,以確保java能夠「一次編譯,到處執行」,這也是java能夠跨平台的原因。因為C\C++和操作系統的兼容性較好,能夠進行一些底層操作,大部分的JVM都是C和C++寫的。
『拾』 java與c語言有什麼區別
這個問題我只能大概的說一下,具體區別只有在你以後用的時候去比較了。
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則沒有
class A: protected B, public C (C++)
class A extends B (Java)
Java有super關鍵字,指代父類對象,通常被用於調用父類的構造方法或一般方法
C++則沒有super關鍵字
兩者都有this,指代當前對象
Java有package的概念,可以將類組織起來,便於打包和部署,也有利於類的安全。C++沒有這個概念,一個類可以被任意類訪問
Java applet可以被嵌入HTML文檔中,然後由Web瀏覽器下載和執行
Java API有對網路通訊的特別支持
C++則無內置網路功能
C++程序員必須顯式地實現動態內存管理,在析構函數中用delete運算符或free( )函數釋放對象和其他動態分配的數據空間,否則會造成「內存泄露」
而在Java中,垃圾收集是自動的。當對象的最後一個引用變數被釋放掉,這個對象就成為垃圾收集器的候選對象了
因此Java不支持析構函數
finalize( )方法主要被用來釋放先前打開的非內存資源,如文件句柄
Java源代碼被編譯成位元組碼(.class文件),位元組碼是一種只有JVM才能識別的二進制低級代碼,它與具體的處理器無關,要由安裝在OS之上的JVM解釋執行,轉換成相應平台的機器碼,因此Java是體系結構中立和跨平台的
而C++直接被編譯成底層平台的二進制機器碼,由CPU執行,是平台相關的
因此,當解釋執行時,Java程序速度更慢
Java語言支持多線程,允許並發線程的同步與互斥操作
C++則沒有這種內在機制
Javadoc.exe可以將Java程序的內容和結構轉換成HTML格式的文檔
C是面向過程的,C++和JAVA是面向對象的
主要是差別對象的概念
JAVA和C++人說的比較多的主要的是有沒有指針的差別
java簡單易學但效率不高!
c++相反有點麻煩效率高!
還有就是Java的可移植性好!能實現跨平台,即一次編寫到處適用!
C 是面向過程的程序設計語言。C++是面向對象的程序設計語言,不過C++語言保持了對C語言的兼容,也就說是在C++程序可以不用修改的插入C語言代碼。 JAVA也是面向對象的程序設計語言,主要是實現平台無關性,它的出現主要為了實現對一種智能終端的編程(有人設想在不遠的將來,你的冰箱有可能自己知道裡面的東西已經不多,按著你的需要向應的供貨商進行訂購。在你上班的時候也可以通過互聯網開啟你家裡的微波爐,回到家就好吃的東西
還有JAVA主要應用於上層,用戶使用JAVA不需要知道網路協議的細節,只需要知道如何調用相關介面就是了
C和C++主要應用於網路底層,用C和C++的程序員必須對協議有相關認識~