java與C++的區別

首先應該清楚,Java 是由 C++發展而來的,保留了 C++的大部份內容,其編程方式相似於 C++。但 Java 的句法更清晰、規模更小、更易學。Sun 公司對多種程序設計語言進行了深刻研究,並摒棄了其餘語言的不足之處,最終退出了 Java。正是這樣,Java 從根本上解決了 C++的固有缺陷,造成了一種新的徹底面向對象的語言。

Java 和 C/C++的類似之處多於不一樣之處,有 C 基礎的讀者,學習 Java 會更容易。相比較而言,Java 的編程環境更爲簡單。因篇幅所限,這裏不能徹底列出不一樣之處,僅列出一些比較顯著的區別。

指針
Java 沒有指針的概念,從而有效地防止了在 C/C++語言中,容易出現的指針操做失誤(如指針懸空所形成的系統崩潰)。在 C/C++中,指針操做內存時,常常會出現錯誤。在Java 中沒有指針,更有利於 Java 程序的安全。

多重繼承
C++支持多重繼承,它容許多父類派生一個子類。也就是說,一個類容許繼承多個父類。儘管多重繼承功能很強,但使用複雜,並且會引發許多麻煩,編譯程序實現它也很不容易。因此 Java 不支持多重繼承,但容許一個類實現多個接口。可見,Java 既實現了 C++多重繼承的功能,又避免了 C++的許多缺陷。

數據類型
Java 是徹底面向對象的語言,全部方法和數據都必須是類的一部分。除了基本數據類型以外,其他類型的數據都做爲對象型數據。例如對象型數據包括字符串和數組。類將數據和方法結合起來,把它們封裝在其中,這樣每一個對象均可實現具備本身特色的行爲。而 C++將函數和變量定義爲全局的,而後再來調用這些函數和變量,從而增長了程序的負擔。此外,Java 還取消了 C/C++中的結構和聯合,使編譯程序更簡潔。

自動內存管理
Java 程序中全部的對象都是用 new 操做符創建在堆棧上的,這個操做符相似於 C++的「new」操做符。Java 自動進行無用內存回收操做,不須要程序員進行刪除。當 Java 中一個對象再也不被用到時,無須使用內存回收器,只須要給它加上標籤以示刪除。無用內存的回收器在後臺運行,利用空閒時間工做。而 C++中必須由程序釋放內存資源,增長了程序設計者的負擔。

操做符重載
Java 不支持操做符重載,操做符重載被認爲是 C++的突出特徵。在 Java 中雖然類能夠實現這樣的功能,但不支持操做符重載,這樣是爲了保持 Java 語言儘量簡單。

預處理功能
C/C++在編譯過程當中都有一個預編譯階段,即預處理器。預處理器爲開發人員提供了方便,但增長了編譯的複雜性。Java 容許預處理,但不支持預處理器功能,由於 Java 沒有預處理器,因此爲了實現預處理,它提供了引入語句(import),它與 C++預處理器的功能相似。

Java 不支持缺省函數參數,而 C++支持。
在 C 中,代碼組織在函數中,函數能夠訪問程序的全局變量。C++增長了類,提供了類算法,該算法是與類相連的函數,C++類方法與 Java 類方法十分類似。因爲 C++仍然支持 C,因此 C++程序中仍然可使用 C 的函數,結果致使函數和方法混合使用,使得 C++程序比較混亂。

Java 沒有函數,做爲一個比 C++更純的面向對象的語言。Java 強迫開發人員把全部例行程序包括在類中。事實上,用方法實現例行程序可激勵開發人員更好地組織編碼。

字符串
C 和 C++不支持字符串變量,在 C 和 C++程序中使用「Null」終止符表明字符串的結束,在 Java 中字符串是用類對象(String 和 StringBuffer)來實現的,在整個系統中創建字符串和訪問字符串元素的方法是一致的。Java 字符串類是做爲 Java 語言的一部分定義的,而不是做爲外加的延伸部分。此外,Java 還能夠對字符串用「+」進行鏈接操做。

goto 語句
「可怕」的 goto 語句是 C 和 C++的「遺物」。它是該語言技術上的合法部分,引用 goto語句形成了程序結構的混亂,不易理解。goto 語句通常用於無條件轉移子程序和多結構分支技術。Java 不提供 goto 語句,其雖然指定 goto 做爲關鍵字,但不支持它的使用,這使程序更簡潔易讀。

類型轉換
在 C 和 C++中,有時出現數據類型的隱含轉換,這就涉及了自動強制類型轉換問題。例如,在 C++中可將一個浮點值賦予整型變量,並去掉其尾數。Java 不支持 C++中的自動強制類型轉換,若是須要,必須由程序顯式進行強制類型轉換。
html

異常 
JAVA中的異常機制用於捕獲例外事件,加強系統容錯能力 
try{//可能產生例外的代碼 
}catch(exceptionType name){ 
//處理 
}
其中exceptionType表示異常類型。而C++則沒有如此方便的機制。
程序員

相關文章
相關標籤/搜索