1. 程式人生 > >C++與JAVA的區別

C++與JAVA的區別

 

 

通常,我們聊到Java,第一印象“面向物件”,“沒有指標,編寫效率高,執行效率較低”。更深入、專業一點就談論 “java記憶體自動回收(GC垃圾回收機制),多執行緒程式設計”。** 
java的三大特性是封裝、繼承和多型。**

總結如下:

1、 JAVA的應用在高層,C++在中介軟體和底層

2、 JAVA離不開業務邏輯,而C++可以離開業務為JAVA們服務

3、 java語言給開發人員提供了更為簡潔的語法;取消了指標帶來更高的程式碼質量;完全面向物件,獨特的執行機制是其具有天然的可移植性。

4、 java 是執行在JVM上的,之所以說它的可移植性強,是因為jvm可以安裝到任何的系統

5、 c++不是不能在其他系統執行,而是c++在不同的系統上執行,需要不同的編碼(這一點不如java,只編寫一次程式碼,到處執行)。java程式一般都是生成位元組碼,在JVM裡面執行得到結果。

6、 java 在web 應用上具有c++ 無可比擬的優勢

7、 java在桌面程式上不如c++實用,C++可以直接編譯成exe檔案,指標是c++的優勢,可以直接對記憶體的操作,但同時具有危險性 。(操作記憶體的確是一項非常危險的事情,一旦指標指向的位置發生錯誤,或者誤刪除了記憶體中某個地址單元存放的重要資料,後果是可想而知的)。

8、 垃圾回收機制的區別。c++用解構函式回收垃圾,java自動回收(GC演算法),寫C和C++程式時一定要注意記憶體的申請和釋放。

9、 java 豐富的外掛是java 發展如此迅速的原因 
10、 java 很大的沿襲了c++的一些實用結構 
11、 對於底層程式的程式設計以及控制方面的程式設計,c++很靈活,因為有控制代碼的存在。

Java並不僅僅是C++語言的一個變種,它們在某些本質問題上有根本的不同:

(1)Java比C++程式可靠性更高。有人曾估計每50行C++程式中至少有一個BUG。姑且不去討論這個數字是否誇張,但是任何一個C++程式設計師都不得不承認C++語言在提供強大的功能的同時也提高了程式含BUG的可能性。Java語言通過改變語言的特性大大提高了程式的可靠性。

(2)Java語言不需要程式對記憶體進行分配和回收。Java丟棄了C++ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符過載、多繼承、自動的強制型別轉換。特別地,Java語言不使用指標,並提供了自動的廢料收集,在Java語言中,記憶體的分配和回收都是自動進行的,程式設計師無須考慮記憶體碎片的問題。

(3)Java語言中沒有指標的概念,引入了真正的陣列。不同於C++中利用指標實現的“偽陣列”,Java引入了真正的陣列,同時將容易造成麻煩的指標從語言中去掉,這將有利於防止在c++程式中常見的因為陣列操作越界等指標操作而對系統資料進行非法讀寫帶來的不安全問題。

(4)Java用介面(Interface)技術取代C++程式中的多繼承性。介面與多繼承有同樣的功能,但是省卻了多繼承在實現和維護上的複雜性。


Java和C++各有各的優勢,無需爭論那種語言好,哪種語言不好,能夠存在就一定有它的優勢,只要你決定了要學程式設計就紮實的學好,程式語言都是相同的,學會一種,其他的學起來就很容易了。

加油!

轉自:http://blog.csdn.net/lcr_happy/article/details/69802689

   http://blog.csdn.net/foreverhuylee/article/details/38590751