Java是純面向對象的,C不是面向對象的,是純面向過程的(C++是面向對象的,不純)。
如果妳以前用過dos下的壹些軟件,妳就會知道c寫的是什麽。
C使用的大部分數據都在堆棧中,所以可以通過靈活的指針使用堆棧中的數據。C最大的優點是效率高,工控程序都是用C寫的,缺點是復雜,容易出錯,所謂成功也是指針。還有,雖然C是所有語言的基礎,但是現在需要C的工作真的太少了。但是做C的錢不會少。
Java是面向對象的,符合人的思維,容易理解,容易控制。因為大多數Java數據都在堆中,所以效率很低。但是Java不容易出錯,它的垃圾收集器解決了很多C程序員關於釋放資源的苦惱。Java的跨平臺特性是C無法企及的,所以很多服務器程序都是用Java寫的。
首先要明確壹點,Java是由C++發展而來的,保留了c++的大部分內容,類似於c++。
但是語法更清晰,更小,更容易學。它是對各種編程語言的徹底而詳細的研究。
的基礎上,摒棄了其他語言的缺點,從根本上解決了c++的固有缺陷,產生了
壹種全新的完全面向對象的語言。
Java和c++之間的相似之處多於不同之處,但是這兩種語言之間有幾個主要的不同之處,這使得Java更容易使用。
學習,而且編程環境更簡單。
限於篇幅,我們不能在這裏完整地列出差異,只列出比較顯著的差異:
1.指針
Java沒有指針,增加了自動內存管理功能,有效防止
停止C/c++語言中指針操作錯誤導致的系統崩潰,比如指針掛起。
Bi-W操作返回壹個對象的引用,類似於c++中的引用;在c++中,
返回壹個指向對象的指針。在Java中沒有指針,妳不會遇到以下情況
聲明:
我的工作?> my work();
沒有指針的程序不能訪問不屬於它們的內存,這就消除了對c++的需求
中等?壹些常見錯誤,有利於Java程序的安全性。
2.多重遺傳
C++支持多重繼承,這是c++的壹個特性,它允許多個父類發送類。
生壹個班。多重繼承的功能雖然很強,但是使用起來比較復雜,會造成很多問題。
懊惱,編個程序實現不容易。Java不支持多重繼承,但允許壹個
類繼承多個接口(interface),實現了c++多重繼承的功能,避免了c++的問題
很多缺陷。
3.數據類型和類
Java的FJ使用壹種可以與整數集成的布爾類型(bo01ean)。它有兩個值:真或假。
Java是壹種完全面向對象的語言,所有的函數和變量都必須是類的壹部分。除了基本數據類型(例如
控件類型浮點型),其余的都作為類對象,包括中和數組。對象將數據(適當的山)和方法。
(方法.d)將它們組合起來,封裝在類中,使每個對象都能實現自己的特性和行為。和c++
允許函數和變量被定義為全局的。
另外,Java取消了C/C++中的結構和組合,使得編譯器更加簡單。
4.自動內存管理
Java程序中的所有對象都是用new運算符構建在堆棧上的,這與c++類似。
新的操作員。下面的語句通過Readkcy類創建壹個對象,然後調用該對象的工作端。
方法:
用“arraydleyus rk
m?work=new Readkey()
m!work.work()g
這個簡單的代碼片段強調了Ja和C 10之間的壹些主要區別。在C 10中,語句如下?
Key "y work在堆棧結構上創建Readkcy的壹個實例。JaM不支持基於堆棧的對象。
所以這條語句創建了壹個名為“ywork”的變量,其中包含了對象Readk。對7的引用。
Javs自動回收無用的內存,不需要程序員刪除。而C 10必須由程序來解釋。
放內存資源增加程序員的負拋。在Java中,當壹個對象不再被使用時,就沒有內存收集器。
它將被標記為刪除。垃圾收集器在後臺運行,在空閑時間工作。
5.運算符重載
Java不支持運算符重載。運算符重載被認為是C 10的壹個顯著特征,盡管這個類在Java中很大。
PJ在機體上實現了這樣的功能,但操作者重載的便利性仍然喪失了。Java語言不支持操作。
運算符重載是為了讓Java語言盡可能簡單。
6.預處理功能
Java允許預處理。因此,不支持預處理功能。C/C在編譯過程中有壹個預編輯階段。
段,稱為預處理程序。預處理器為開發人員提供了方便,但增加了編譯的復雜度。困境
沒有預處理器,但是提供了壹個類似於C 10預處理器功能的介紹語句(I“port”)。
7.Java不支持默認函數參數,而C 10支持。
在C語言中,代碼被組織在函數中,這些函數可以訪問程序的全局變量。C 10增加了類,提供了類。
算法是壹個與類相關聯的函數,與Java類方法非常相似。然而,由於C 10仍然是
但是支持C,所以不能阻止C 10開發者使用函數。結果,函數和方法的混合使用使得程序比較。
混亂。
Java沒有函數。作為壹種比C 10更純粹的面向對象語言,Java迫使開發者把所有。
常規包含在類中。事實上,用方法實現例程可以激勵開發人員更好地組織編碼。
8弦
C和C 10不支持字符串變量。在C和C 10程序中,空終止符用來表示字符串的結。
Bundle,在Java中,字符串是通過類對象(strinR和stringBuffer)實現的,這是Java語言。
的核心,用類對象實現字符串有以下優點:
(1)整個系統中構建字符串和訪問字符串元素的方法是壹致的;
(2)JBOY3樂隊陽性字符串類被定義為Java語言的壹部分,而不是附加的擴展;
(3)Java字符串進行運行時空檢查,可以幫助消除壹些運行時錯誤;
(4)字符串可以用“十”串接。
數組”goto語句
“可怕的”goto語句是C和c++的“遺物”,從技術上講是語言的合法部分。
語句造成程序結構混亂,不易理解。goto語句應用於無條件轉移子程序和多結構分析。
支持技術。
出於多種原因,Java不提供goto語句。雖然它將goto指定為關鍵字,但不支持它的使用。
使用使程序簡潔易讀。
L0。類型轉換
C和C中有時會出現數據類型的隱式轉換,這就涉及到自動強制類型轉換的問題。例子
比如在C 10中,妳可以給壹個整數變量賦壹個浮點值,去掉它的尾數。Java在C 10中不支持自動強。
如果需要,系統類型轉換必須由程序顯式強制轉換。
11.其他人
(1)break和continue可以標記為跳出它所標識的塊。比如:
inTlJ
char a;
郊遊;
{ for(I =:I < 5;我十)
for(j = 0;j<3i j++)
{if((a=(char)system.in.read())
休息郊遊;
}}
2)析構函數是void finalize map () {}
Java不保證調用這個函數,所以不能依靠它來保證所寫代碼的正常運行。
(3)與packa8e壹起組織相關課程。比如把自己的類組織成packaBe;
pack8e my cla 5s e 55
(4) extaNs用於表示繼承(派生)關系,如;
ne類書?clas 5-打開擴展名?班級?名稱47
(5)虛函數用ab列ra修飾,而不是V加ual。
(6)提供創建完全虛擬的類(接口)的方法;
公共接口intl〔facenamEt//抽象方法)
使用接口,您可以為虛擬類定義協議,而不用考慮具體的實現。壹個類可以實現多個接口,同壹個接口。
它也可以由多個類實現。使用imNemen賄賂來實現該接口,例如:
公共類名implmen比int6rfacena好。
(7)不正常。用於捕獲異常事件並增強系統的容錯能力。
嘗試{//可能生成異常的代碼。
}catch(exceptionType name){
//處理中
其中exceptionType表示異常類型,如Arith。