【不定期更新】本文主要介紹了Java學習前期的一些概念問題,包括“面向對象和麵向過程的區別”、“C++和Java的不同之處”等等,適合初學者學習。 ...
【後端面經-Java】Java基本概念
目錄1. 面向對象和麵向過程
1.1 概念
- 面向過程:將一個事件拆分為小步驟,每個步驟封裝為一個函數,通過對函數的線性調用來實現一個大事件;
- 面向對象:先對一個事件需要用到的實體類進行抽象,封裝成類,通過對類的實例化對象進行操作,實現這個事件過程。特點是:封裝、繼承、多態。
1.2 優缺點對比
如下表所示:
2. C++和Java的區別
從某種意義上,Java是在C++的基礎上,取其精華去其糟粕,進行改進之後得到的一門語言,因此,Java和C++都是面向對象的語言,大量的語法都是相通的,但是既然是C++2.0
版本,總是會有所不同的。下麵就來總結一下Java和C++的區別。
2.1 "去其糟粕"——Java同學,你對C++的這些東西有什麼意見?
指針
大家學習C++的過程中,都被指針折磨過,包括什麼數組指針、指針數組之類的,Java不支持指針,避免了指針越界、指針類型不匹配等問題。多重繼承
所謂多重繼承,就是一個子類繼承多個父類(奉先吾兒,是你嗎?)。支持多重繼承對於程式結構來說並不友好,因此Java不支持多重繼承,但是可以通過介面來實現多重繼承的效果。操作符重載
C++的操作符重載,指的是一個操作符可以在不同的類中使用重載方式定義不同的含義,Java也不支持操作符重載,避免運算中的模糊性。goto語句
C++中的goto語句,可以跳轉到任意位置,這樣的話,程式的結構就會變得混亂,Java不支持goto語句。結構體
和聯合
C++能夠使用結構體
和聯合
實現自定義的類型集合,而Java不支持結構體
和聯合
,Java中的數據類型只包括基本數據類型
和引用數據類型
。隱性類型轉換
C++在運算過程中,不同類型的數據可以進行隱性轉換,而Java不支持隱性類型轉換,需要進行強制類型轉換。預處理器
C++使用預處理引入一些庫文件,但是Java並不支持,Java可使用import進行引入,但是import是在編譯階段進行的。預設參數的函數定義
C++的函數定義允許預設參數,但是Java不允許。
2.2 改進之處————Java同學,你的這個論文,,,創新點是什麼?
垃圾回收機制
C++需要程式員手動進行記憶體的申請和釋放,而Java使用垃圾回收機制,自動進行記憶體的申請和釋放,避免了記憶體泄漏的問題。完全面向對象
C++是面向對象語言,但是承襲於C語言,依然保留著面向過程的特點,但是Java是完全面向對象的語言,沒有面向過程的特點。跨平臺
——解釋性語言
C++是編譯型語言,編譯產生可執行文件,程式在不同的平臺上需要重新編譯;Java是解釋性語言,程式在編譯之後,會生成位元組碼文件,這些位元組碼文件可以在不同的平臺上運行。
面試模擬
Q:面向過程和麵向對象的區別是什麼?
A: 面向過程指的是一個功能的實現拆分為多個小步驟,先行調用這些小步驟實現功能,邏輯簡單,適用於小型項目,但是代碼復用率低、維護成本高,不適合大型項目開發,而面向對象則是在功能實現上先抽象出多個類,通過對類的實例化對象進行操作實現功能,復用性高,更容易維護,但是開發較為複雜,且構建類將會占用更大的記憶體空間。
Q:C++和Java的區別
A:Java去除了C++中的指針、多重繼承、結構體、聯合、預處理等容易導致程式複雜性問題的特點,添加了自動垃圾回收機制,可靠性更高,並且Java是完全面向對象的編程語言。此外,C++是編譯型語言,一次編譯只能在當前平臺運行,而Java則是解釋性語言,編譯之後產生的不是可執行文件,而是位元組碼,在不同平臺通過JVM轉換為可執行文件,具有跨平臺性。