Java与C/C++的比较(转)
原文鏈接:Java和c++比較
總結一下Java的小知識,只是想稍微提醒一下自己這些基礎的東西,放在這里,隨時可以閱覽和添加一下,以免走錯了方向。
1.面向對象程序設計
面向對象程序設計語言可以直觀的反映客觀世界的真實表象,使軟件開發人員可運用人類認識事物所采用的一般思維方式來進行軟件開發,與自然語言差距最小,是當今軟件開發與應用的主流技術。Java是純面向對象的編程語言。
2.幾個概念
a.JavaApplication–用來開發命令行程序、窗體程序、服務器端程序等。
b.JavaApplet–是一種嵌入到Web頁面的網絡應用程序,由瀏覽器內部的Java解釋器來解釋運行,這個其實我覺得現在用得很少。
c.JavaServlet–運行于Web服務器端的Java程序,可以與客戶端的Applet或者HTML頁面進行交互。
d.JSP–用于生成動態網頁,基于Servlet技術,在HTML文件中加入Java程 序片段(Scriptlet)和JSP標記。可實現程序與頁面格式控制的分離。
3. 多線程機制
a.線程又被稱為輕量進程,是比傳統進程更小的并且可以并發執行的單位。多個線程可以共用一個內存區域,共享同一組系統資源,其間通信和切換的系統開銷要遠遠小于進程。
b.Java環境本身就是多線程的,若干個線程運行,負責必要的無用單元回收,系統維護等系統級操作;
c.Java提供了一個Thread類和一組內置方法對線程進行實時并發控制。
4.Java與C/C++的比較
1) 概述
Java其實也是由C++發展而來,保留了C++的大部分內容,其編程方式類似于C++,但是摒棄了C++的諸多不合理之處,從根本上解決了C++的固有缺陷。使得Java句法更清晰,規模更小,更易學,同時更趨于健壯性,安全性和平臺無關性。
a.全局變量:C++將函數和變量定義為全局的,而不加封裝,增加了程序的負擔 ,并且往往會由于使用不當而造成系統的崩潰。
b.Java是完全面向對象的語言,類將方法和數據封裝在其內,不能在所 用的類之外定義程序的全局變量,只能通過在一個類中定義public static的變量來實現一個全局變量,使得其它類可以訪問和修改該變量。這種完善的包裝保證了系統的安全性。
2) goto語句
a.goto語句一般用于無條件轉移子程序和多結構分支技術,是C++中的合法語句,造成了程序結構的混亂,不易理解。
b.Java不提供goto語句,使得程序更簡潔易讀,增強了程序的健壯性。
3) 指針
a.指針是C++語言中最靈活也最容易出錯的數據類型,易出現由于指針誤操作而導致的系統崩潰,同時指針操作內存時也經常出錯。
b.Java沒有指針的概念,更有利于程序的安全。
4) 內存管理
a.C++語言中必須通過程序釋放內存資源,增加了程序設計者的負擔,再次釋放已釋放的內存塊或釋放未分配的內存塊會造成系統崩潰,忘記釋放不再使用的內存塊也會逐漸耗盡系統資源。
b.Java自動進行內存回收操作,當一個對象不再被用到時,無須使用內存回收器,只需要給它加上標簽以示刪除。無用內存的回收器在后臺運行,利用空閑時間工作,保證了系統資源的完整性,避免了內存管理不周而引起的系統崩潰。
5) 數據類型的一致性
a.在C++語言中,不同的平臺上,編譯器對簡單數據類型分別分配不同的字節數,導致了代碼數據的不可移植性。
b.在Java中,采用基于IEEE標準的數據類型,無論任何硬件平臺上對數據類型的位數分配總是固定的。
6) 類型轉換
a.在C++中,會出現數據類型的隱含轉換,涉及到自動強制類型轉換,使得不安全因素大大增加。
b.Java中系統要對對象的處理進行嚴格的相容性檢查,防止不安全的轉換。如果需要,必須由程序顯式進行強制類型轉換。
7) 頭文件
a.在C++語言中使用頭文件聲明類的原型和全局變量及庫函數等,使得在大系統中對頭文件的維護非常困難。
b.Java不支持頭文件,類成員的類型和訪問權限都封裝在類中,運行時 系統對訪問進行控制,防止非法訪問。
8) 結構和聯合
a.C++中用結構和聯合來表示一定的數據結構,其成員的公有性帶來了安全隱患。
b.Java不支持結構和聯合,通過類把數據結構及對該數據的操作封裝在類中。
9) 預處理
a.C++在編譯過程中都有一個預編譯階段,即預處理器,為開發人員提供了方便,但也增加了編譯的復雜性。
b.Java允許預處理,但不支持預處理器功能,提供import語句實現類似 的功能。
10) 多重繼承
a.C++支持多重繼承,允許許多父類派生一個子類,雖然功能強大,但使用復雜,而且會引起許多麻煩,編譯程序實現也很不易。
b.Java不支持多重繼承,但允許一個類實現多個接口,即實現了C++的多重繼承功能,又避免了C++的缺陷。
11) 操作符重載
a.操作符重載被認為是C++的突出特征。
b.為了保持Java語言盡可能的簡單,Java不支持操作符重載。
12) 函數
a.在C中,代碼組織在函數中,函數可以訪問程序的全局變量; C++增加了類,提供了類方法,但由于C++仍然支持C,所以C++程序中仍然可以使用C的函數,結果導致函數和方法混合使用,使得程序比較混亂 。
b.Java沒有函數。作為一種比C++更純的面向對象的語言,強迫開發人員把所有例行程序包括在類中,可以更好的組織編碼。
13) 字符串
a.C++不支持字符串變量,使用“Null”終止符代表字符串的結束。
b.Java字符串類作為Java語言的一部分定義,而不是作為外加的延伸部分,在整個系統中建立字符串和訪問字符串元素的方法是一致的。
?
轉載于:https://www.cnblogs.com/gaopeng527/p/5259446.html
總結
以上是生活随笔為你收集整理的Java与C/C++的比较(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【BZOJ】1070: [SCOI200
- 下一篇: 使用maven一步一步构建spring