1. 程式人生 > >java與C++的異同

java與C++的異同

不同點:

1.java為解釋性語言(原始碼通過java編譯器編譯成位元組碼交由JVM解釋執行),C/C++為編譯型語言(原始碼經過編譯和連結後生成可執行的二進位制編碼).

注:java的執行速度比C/C++的執行速度慢,java能夠跨平臺執行,C/C++不可以。

2.java純面向物件(所有程式碼在類中實現,除基本型別外,所有型別都為類),C++兼具面向過程和麵向物件程式設計的特點。

注:java不存在全域性變數或者全域性函式,C++可以定義全域性變數和全域性函式。

3.java中沒有指標的概念,防止了C++語言中操作指標可能引起的系統問題,使程式變得更加安全。

4.java不支援多繼承(java引入了介面的概念,可以同時實現多個介面,也具有多型性) 
C++支援多繼承

5.C++需要開發人員去管理對記憶體的分配,包括申請和釋放。(釋放資源的程式碼放在解構函式中) 
java自己提供了垃圾回收器來實現垃圾的自動回收,不需要顯示的管理記憶體的分配。(java不存在解構函式,引入了finalize()方法,當垃圾回收將要釋放無用記憶體時,會首先呼叫該方法)

6.C++支援運算子過載;java不支援運算子過載

7.C++支援預處理,java沒有前處理器,不支援預處理功能(包括標頭檔案和巨集的定義)

注:java提供了import 機制與C++的前處理器功能類似。

8.C++支援預設的函式引數,java不支援預設函式引數。

9.C++支援goto語句,java不支援goto語句(java中goto是保留關鍵字)。

注:goto語句也稱為無條件轉移語句,其一般格式如下: 
goto 語句標號; 其中語句標號是按識別符號規定書寫的符號, 放在某一語句行的前面,標號後加冒號(:)。語句標號起標識語句的作用,與goto 語句配合使用。 
如: label: i++; 
loop: while(x<7);

10.C++支援自動強制型別轉換,java不支援強制型別轉換(java需要開發人員顯示的強制型別轉換)。

注:java引入泛型的概念,更好的處理型別的問題。

11.java具有平臺無關性。(每種型別分配固定的長度) 
C++具有平臺性。(同一種類型在不同的平臺分配的長度不同)

12.java包含一些標準庫,用於完成特定的任務,同時這些庫簡單易用,能夠大大的縮短開發週期。(提供了訪問資料庫的JDBC庫,用於實現分散式物件的RMI等標準庫) 
C++依靠一些非標準的,由其他廠商提供的庫。