Java基礎篇常見面試問題總結

文章目錄

  • 1. 你是怎樣理解 OOP面向對象?
  • 2. 重載與重寫區別
  • 3. 接口與抽象類的區別
  • 4. 深拷貝與淺拷貝的理解
  • 5. 什么是自動拆裝箱? int和 Integer有什么區別
  • 6. ==和 equals()區別
  • 7. String類 能被繼承嗎為什么用 final修飾
  • 8. final、finally、finalize區別

1. 你是怎樣理解 OOP面向對象?

面向對象是利于語言對現實事物進行抽象。面向對象具有以下特征:

  • 繼承:繼承是從已有類得到繼承信息創建新類的過程
  • 封裝:封裝是把數據和操作數據的方法綁定起來,對數據的訪問只能通過已定義
    的接口
  • 多態性:多態性是指允許不同子類型的對象對同一消息作出不同的響應

2. 重載與重寫區別

  • 重載發生在本類,重寫發生在父類與子類之間
  • 重載的方法名必須相同,重寫的方法名相同且返回值類型必須相同
  • 重載的參數列表不同,重寫的參數列表必須相同
  • 重寫的訪問權限不能比父類中被重寫的方法的訪問權限更低
  • 構造方法不能被重寫

3. 接口與抽象類的區別

  • 抽象類要被子類繼承,接口要被類實現
  • 抽象類可以有構造器、接口不能有構造器
  • 抽象類:可以有成員變量;接口:只能聲明常量

4. 深拷貝與淺拷貝的理解

深拷貝和淺拷貝就是指對象的拷貝,一個對象中存在兩種類型的屬性,一種是基本數據類型,一種是實例對象的引用。

  • 淺拷貝是指,只會拷貝基本數據類型的值,以及實例對象的引用地址,并不會復
    制一份引用地址所指向的對象,也就是淺拷貝出來的對象,內部的類屬性指向的
    是同一個對象
  • 深拷貝是指,既會拷貝基本數據類型的值,也會針對實例對象的引用地址所指向
    的對象進行復制,深拷貝出來的對象,內部的類執行指向的不是同一個對象

5. 什么是自動拆裝箱? int和 Integer有什么區別

  • 裝箱:將基本類型轉換成包裝類對象
  • 拆箱:將包裝類對象轉換成基本類型的值

java 為什么要引入自動裝箱和拆箱的功能?

主要是用于 java集合中,List list=new ArrayList();
list 集合如果要放整數的話,只能放對象,不能放基本類型,因此需要將整數自動裝箱成對象。

區別:

  • Integer是 int的包裝類,int則是 java的一種基本數據類型
  • Integer變量必須實例化后才能使用,而 int變量不需要
  • Integer實際是對象的引用,當 new一個 Integer時,實際上是生成一個指針指向此對象;而 int則是直接存儲數據值
  • Integer的默認值是 null,int的默認值是 0

6. ==和 equals()區別

  1. ==
    • 如果比較的是基本數據類型,那么比較的是變量的值
    • 如果比較的是引用數據類型,那么比較的是地址值(兩個對象是否指向同一塊內
      存)
  2. equals
    • 如果沒重寫 equals方法比較的是兩個對象的地址值
    • 如果重寫了 equals方法后我們往往比較的是對象中的屬性的內容
    • equals 方法是從 Object類中繼承的,默認的實現就是使用==

很多類(如 String, Integer 等)都重寫了 equals() 方法,以提供邏輯上的比較。

7. String類 能被繼承嗎為什么用 final修飾

  • 不能被繼承,因為 String類有 final修飾符,而 final修飾的類是不能被繼承的
  • String 類是最常用的類之一,為了效率,禁止被繼承和重寫。
  • 為了安全。String類中如果方法可以重寫,可能被植入惡意代碼,破壞程序。Java的安全性也體現在這里。

8. final、finally、finalize區別

  1. final
    final 是一個關鍵字,用于限定變量、方法、和類的行為:

    • 變量:當 final 修飾一個變量時,這意味著該變量一旦被初始化之后,其值就不能再被修改(即常量)。
    • 方法:final 修飾的方法不能被子類重寫。
    • 類:final 修飾的類不能被繼承。
  2. finally
    finally 是一個塊,通常與try和catch塊一起使用,在異常處理中起到關鍵作用。finally 塊中的代碼段總是會執行,無論try塊中的代碼是否拋出異常。這使得finally塊非常適合用于清理資源,比如關閉文件流或數據庫連接。
    例如:

try {// 嘗試執行的代碼,可能會拋出異常
} catch (Exception e) {// 處理異常
} finally {// 清理代碼,無論是否發生異常都會執行
}
  1. finalize
    finalize 用于對象被垃圾回收前的清理工作,但不建議使用。因為它是不可預測的,通常也不是必須的,而且可能導致性能問題。
@Override
protected void finalize() throws Throwable {try {// 清理資源等操作} finally {super.finalize();}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12876.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12876.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12876.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C語言】6.C語言VS實用調試技巧(1)

文章目錄 1.什么是 bug2.什么是調試(debug)?3.Debug 和 Release4.VS調試快捷鍵4.1 環境準備4.2 調試快捷鍵 5.監視和內存觀察5.1 監視5.2 內存 1.什么是 bug bug現在一般是指在電腦系統或程序中,隱藏著的一些未被發現的缺陷或問題…

Git使用(3):版本管理

一、查看歷史 編寫一個java類進行測試 選擇Git -> Show Git Log查看日志。 第一次修改推送到遠程倉庫了,所以有origin(遠程倉庫地址),第二次修改只提交到本地倉庫所以沒有。 二、版本回退 1、本地回退 在要回退的版本上右鍵&a…

XLSX文件刪除了怎么找回?8個恢復方法,太實用了!

U盤作為一種便攜的存儲設備,隨之而來的數據丟失問題也讓人頭疼。尤其是當U盤中的XLSX文件(Excel 2007及以后版本的默認文件格式)被誤刪除或丟失時,如何高效找回這些數據成為了許多人關注的焦點。 本文將從XLSX文件的特性、U盤格式…

C++set關聯式容器

Cset 1. 關聯式容器 vector、list、deque、forward_list(C11)等STL容器,其底層為線性序列的數據結構,里面存儲的是元素本身,這樣的容器被統稱為序列式容器。而map、set是一種關聯式容器,關聯式容器也是用來存儲數據的&#xff0…

深度盤點在當今經濟形勢下資深項目經理或PMO的或去或從

在當今經濟形勢下,資深項目經理(Project Manager)或項目管理辦公室(PMO)的去向和選擇受到多種因素的影響。以下是對他們可能面臨的或去或從的深度盤點: 1、發展去向 1. 深化專業領域:在經濟形勢…

Linux程序開發(一):Linux基礎入門安裝和實操手冊

Tips:"分享是快樂的源泉💧,在我的博客里,不僅有知識的海洋🌊,還有滿滿的正能量加持💪,快來和我一起分享這份快樂吧😊! 喜歡我的博客的話,記得…

CSAP_MAT_BOM_MAINTAIN 返回消息處理

CSAP_MAT_BOM_MAINTAIN是創建修改BOM的函數,但這個函數的返回參數中沒有消息返回。 需要在調用前使用函數: CALL FUNCTION CALO_INIT_APIEXPORTINGdata_reset_sign EXCEPTIONSlog_object_not_found 1log_sub_object_not_found 2other_e…

QT筆記 - QPainter 填充環形區域(甜甜圈)

以矩形為例: QPainter painter(this);// painter.setPen(Qt::blue);// painter.setFont(QFont("Arial",30));// painter.drawText(rect(),Qt::AlignCenter,"Hello Qt!!!");QRect rect QRect(50, 50, 400, 400);QRect box QRect(100, 100, 105…

TS-抽象類和靜態成員

目錄 1,抽象類1,為什么需要抽象類2,抽象成員3,設計模式-模板模式 2,靜態成員1,什么是靜態成員2,設計模式-單例模式 1,抽象類 1,為什么需要抽象類 有時,某個…

Java面試八股之Java中有哪些原子類,原理是什么

Java中有哪些原子類,原理是什么 AtomicInteger 和 AtomicLong: 用于對整數(int)和長整數(long)進行原子操作。 原理:它們內部封裝了一個整型或長整型變量,并通過使用Unsafe類提供…

HarmonyOS - 記一次HSP異常堆棧無法定位問題

問題背景 HSP混淆打包之后無法定位異常堆棧,問題堆棧為: MyModules/build/default/cache/default/defaultCompileArkTS/esmodule/release/MyModules/src/main/ets/d/r.ts:1:1 問題原因: 導致無法定位問題的原因是,混淆時開啟了代碼…

OpenHarmony 實戰開發——ArkUI容器類API介紹

容器類,顧名思義就是存儲的類,用于存儲各種數據類型的元素,并具備一系列處理數據元素的方法。在 ArkUI 開發框架中,容器類采用了類似靜態的語言來實現,并通過 NAPI 框架對外提供。通過對存儲位置以及屬性的限制&#x…

關于數據結構B+TREE 和 HASH的整理

一、BTREE BTree是一種樹數據結構,是B-Tree的變種,屬于n叉排序樹,每個節點通常有多個孩子。 BTree是和B-Tree相比,BTree的所有的數據都會出現在葉子節點上,并且葉子節點會形成一個單向鏈表,非葉子節點僅僅…

C++map容器關聯式容器

Cmap 1. 關聯式容器 vector、list、deque、forward_list(C11)等STL容器,其底層為線性序列的數據結構,里面存儲的是元素本身,這樣的容器被統稱為序列式容器。而map、set是一種關聯式容器,關聯式容器也是用來存儲數據的&#xff0…

日期問題,

日期問題 ac代碼 #include <cstdio> #include <iostream>using namespace std;int days[13] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check_valid(int year, int month, int day) {if (month 0 || month > 12) return false;if (day 0) …

【開發】模型部署筆記

目錄 模型量化 模型量化 1、模型量化優點 低精度模型表示模型權重數值格式為FP16&#xff08;半精度浮點&#xff09;或者INT8&#xff08;8位定點整數&#xff09;&#xff0c;但是目前低精度往往就指代INT8。常規精度模型則一般表示模型權重數值格式為FP32&#xff08;32位…

求數組最大值

#include <bits/stdc.h> using namespace std; int main(){int a[4]{1,2,3,4};cout<<*max_element(a,a4);return 0; }

策略模式詳解

策略模式 1 概述 先看下面的圖片&#xff0c;我們去旅游選擇出行模式有很多種&#xff0c;可以騎自行車、可以坐汽車、可以坐火車、可以坐飛機。 作為一個程序猿&#xff0c;開發需要選擇一款開發工具&#xff0c;當然可以進行代碼開發的工具有很多&#xff0c;可以選擇Idea進…

JavaScript的跳轉傳參方式

在JavaScript中&#xff0c;頁面跳轉并傳遞參數通常可以通過幾種不同的方式來實現。下面是一些常見的方法&#xff1a; 1.URL參數&#xff08;Query String&#xff09; 這是最常見的方式&#xff0c;通過在URL的末尾添加參數來實現。例如&#xff1a; javascriptwindow.loc…

gitlab webhook觸發jenkins任務

配置jenkins 安裝gitlab插件 配置jenkins job 選擇gitlab webhook觸發 在高級中生成token 代碼倉設置 新增webhook 配置webhook 測試連接 缺點&#xff0c;不能帶gitLab事件的參數&#xff01;&#xff01;&#xff01;