Java語言的特點
1. Java為純面向對象的語言,能夠直接反應現實生活中的對象,容易理解,編程更容易。
2.跨平台,java是解釋性語言,編譯器會把java代碼變成中間代碼,然后在JVM上解釋執行,由於中間代碼和平台無關因此,java語言可以跨平台執行,具有很好的移植性。
3.Java提供了很多內置的類庫,簡化了開發人員的程序設計工作,縮短了項目的開發時間。例如,Java語言提供了對多線程的支持,提供了對網絡通信的支持,最重要的是提供了垃圾回收器,這使得開發人員從對內存的管理中解脫出來。
4.提供了對Web應用開發的支持。例如,Applet,Servlet和JSP可以用來開發Web程序;Socket、RMI可以用來開發分布式應用程序的類庫。
5.具有很好的安全性和健壯性。Java提供了一個防止惡意代碼攻擊的安全機制(數組邊界檢測和Bytecode校驗等)。Java的強類型機制、垃圾回收器、異常處理和安全檢查機制使得java語言編寫的程序有很好的健壯性。
6.去除了C++語言中難以理解、容易混淆的特性,例如頭文件、指針、結構、單元、運算符重載、虛擬基礎類、多重繼承等,使得程序更加嚴謹、簡潔。
Java與C/C++有什么異同
相同點:都是面向對象語言;都用了面向對象思想(封裝、繼承、多台等);都有很好的可重用性。
不同點:
1.Java為解釋性語言,其運行過程為:程序源代碼經過Java編譯器編譯成字節碼,然后由JVM解釋執行。而C/C++為編譯型語言,源代碼經過編譯和鏈接后生成可執行的二進制代碼。因此,Java的執行速度比C/C++慢,但是Java能夠跨平台執行,而C/C++不能。
2.Java為純面向對象語言,所有代碼(包括函數、變量等)必須在類中實現,除基本數據類型(包括int、float等)外,所有類型都是類。此外,Java語言中不存在全局變量或全局函數,而C++兼具面向對象和面向過程變成的特點,可以定義全局變量和全局函數。
3.與C/C++語言相比,Java語言中沒有指針的概念,這有效防止了C/C++語言中操作指針可能引起的系統問題,從而使程序變得更加安全。
4.與C++語言相比,Java語言不支持多重繼承,但是Java引入了接口的概念,可以同時實現多個接口。由於接口也具有多態特性,因此在Java語言中可以通過實現多個接口來實現與C++語言中多重繼承類似的目的。
5.在C++語言中,需要開發人員去管理對內存的分配(包括申請與釋放),而Java語言提供了垃圾回收器來實現垃圾的自動回收,不需要程序顯式地管理內存的分配。在C++語言中,通常都會把釋放資源的代碼放到析構函數中,Java語言中雖然沒有析構函數,但卻引入了一個finalize()方法,當垃圾回收器將要釋放無用對象的內存時,會首先調用該對象的finalize()方法,因此,開發人員不需要關心也不需要知道對象所占的內存空間何時會被釋放。
6.C++語言支持運算符重載,而Java語言不支持運算符重載。
7.C++語言支持預處理,而Java語言沒有預處理器。Java雖然不支持預處理功能(頭文件、宏定義等),但它提供的import機制和C++中的預處理器功能類似。
8.C++支持默認函數參數,而Java不支持。
9.C++支持goto語句,而Java不提供goto語句(但Java中goto是保留關鍵字)。
10.C++支持自動強制類型轉換,這會導致程序的不安全;Java不支持自動強轉,必須由開發人員進行顯式地強制類型轉換。
11.C++中結構和聯合的所有成員均為公有,這回導致安全性問題的發生,而Java根本就不包含結構和聯合,所有的內容都封裝在類里面。
12.C++同一個數據類型在不同的平台上會分配不同的字節數,Java對每種數據類型都分配固定長度,例如,int類型總是占據32位。
13.Java提供對注釋文檔的內建支持,
14.Java包含了一些標准庫,用於完成特定的任務。例如,Java提供了用於訪問數據庫的JDBC庫,用於實現分布式對象的RMI等標准庫。而C++則依靠一些非標准的、由其他廠商提供的庫。
15.Java有反射機制,允許程序在運行時進行自我檢查,同時也允許對其內部的成員進行操作。C++沒有提供這樣的特性。