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++依靠一些非標準的,由其他廠商提供的庫。