1. 程式人生 > >Java面試筆試-002-Java與C/C++有何異同

Java面試筆試-002-Java與C/C++有何異同

微信公眾號:JavaWeb架構師

描述

1)Java為解釋型語言。

其執行過程為:程式原始碼經過Java編譯器編譯成位元組碼,然後 由JVM解釋執行。而C/C++為編譯型語言,原始碼經過編譯和連結後生成可執行的二進位制代 碼。因此,Java的執行速度比C/C+ +慢,但是Java能夠跨平臺執行,而C/C++不能。

2)Java為純面嚮物件語言。

所有程式碼(包括函式、變數等)必須在類中實現,除基本數 據型別 (包括int、float等)外,所有型別都是類。此外,Java語言中不存在全域性變數或全域性函式,而C++兼具面向過程和麵向過程程式設計的特點,可以定義全域性變數和全域性函式。

3)Java語言中沒有指標的概念。

這有效防止了 C/C++語言中操作 指標可能引起的系統問題,從而使程式變得更加安全。

4)Java語言不支援多重繼承。

但是Java語言引入了介面的概念,可以同時實現多個介面。由於介面也具有多型特性,因此在Java語言中可以通過實現多個介面 來實現與C++語言中多重繼承類似的目的。

5)Java語言提供了垃圾回收器來實現垃圾的自動回收。

在C++語言中,需要開發人員去管理對記憶體的分配(包括申請與釋放),而Java語言 提供了垃圾回收器來實現垃圾的自動回收,不:要程式顯式地管理記憶體的分配。在C++語言 中,通常都會把釋放資源的程式碼放到解構函式中,Java語言中雖然沒有解構函式,但卻引入了 一個finalize()方法,當垃圾回收器將要釋放無用物件的記憶體時,會首先呼叫該物件的finalize ()方法,因此,開發人員不需要關心也不需要知道物件所佔的記憶體空間何時會被釋放。

6)其它。

1.C++語言支援運算子過載,而Java語言不支援運算子過載。

2.C++語言支援預處理,而 Java語言沒有前處理器,雖然不支援預處理功能(包括標頭檔案、巨集定義等),但它提供的import 機制與 C++中的前處理器功能類似。

3.C++支援預設函式引數,而 Java 不支援預設函式引數,C/C++支援goto 句,而Java不提供goto語句(但Java中goto是保留關鍵字)。

4.C/C+ + 支援自動強制型別轉換,這會導致程式的不安全;而Java不支援自動強制型別轉換,必須由 開發人員進行顯式地強制型別轉換。

5.C/C++中,結構和聯合的所有成員均為公有,這往往會導致安全性問題的發生,而Java根本就不包含結構和聯合,所有內容都封裝在類裡而。

6.Java具有平臺無關性,即對每種資料型別都分配固定長度,例如,int型別總是佔據32 位,而C/C++卻不然,同一個資料型別在不同的平臺上會分配不同的位元組數。

7.Java提供對註釋文件的內建支援,所以原始碼檔案也可以包含它們自己的文件。通過一個單獨的程式,這些文件資訊可以提取出來,並重新格式化成HTML。

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

常見面試題

下列說法中,錯誤的有( )。
A. Java面嚮物件語言容許單獨的過程與函式存在。
B. Java面嚮物件語言容許單獨的方法存在。
C. Java語言中的方法屬於類中的成員(member)
D).Java語言中的方法必定隸誠於某一類(物件),呼叫方法與過程或函式相同。

答案:A、B、C。見上面講解。

其它

原始碼下載:

關注下方微信公眾號,
回覆:
JavaMB.code

完整教程PDF版本下載