面試 Java 基礎八股文十問十答第十二期

面試 Java 基礎八股文十問十答第十二期

作者:程序員小白條,個人博客

相信看了本文后,對你的面試是有一定幫助的!關注專欄后就能收到持續更新!

?點贊?收藏?不迷路!?

1)創建一個對象用什么關鍵字?對象實例與對象引用有何不同?

關鍵字: 在Java中,使用new關鍵字來創建一個對象。

對象實例與對象引用的區別:

  • 對象實例(Object Instance): 表示在內存中實際存在的對象,擁有自己的狀態和行為。
  • 對象引用(Object Reference): 是指變量,用來指向對象實例在內存中的位置。它本身并不包含對象的實際數據,只是指向對象的地址。

2)成員變量與局部變量的區別有哪些

成員變量(Member Variables):

  • 成員變量屬于類,不在方法中聲明。
  • 它們在類的任何地方都可見,可以被類中的任何方法、構造函數或者塊訪問。
  • 每個對象的成員變量在內存中獨立存在,每個對象都有一組自己的成員變量副本。

局部變量(Local Variables):

  • 局部變量聲明在方法、構造函數或者塊中,并且在這些區域內可見。
  • 它們在方法、構造函數或塊執行時創建,執行完畢后消失。
  • 局部變量在棧內存中分配。

3)成員變量和局部變量的區別

主要區別:

  • 成員變量是類的一部分,每個對象都有自己的一份,而局部變量存在于方法、構造函數或塊中,只在執行時才分配內存,方法執行完畢后就會被銷毀。
  • 成員變量可以擁有訪問修飾符(public、private、protected、default),而局部變量不可以。
  • 成員變量在默認情況下會被初始化,而局部變量不會,必須在使用之前顯式初始化。

總結:
成員變量用于描述對象的狀態,局部變量用于臨時存儲數據或執行計算。成員變量與對象的生命周期相關聯,而局部變量的生命周期只存在于其所在的方法、構造函數或塊中。

4)在Java中定義一個不做事且沒有參數的構造方法的作用

在Java中定義一個不做事且沒有參數的構造方法(無參構造方法)的作用主要有兩個:

  1. 提供默認構造方法: 如果在類中沒有顯式定義任何構造方法,Java會默認提供一個無參構造方法。這使得可以通過new關鍵字創建對象而不需要提供參數。
  2. 子類調用父類無參構造方法: 如果一個類沒有顯式聲明任何構造方法,而其子類又沒有調用父類其他構造方法,那么子類在構造時會默認調用父類的無參構造方法。

5)在調用子類構造方法之前會先調用父類沒有參數的構造方法,其目的是?

在Java中,當創建一個子類對象時,在調用子類的構造方法之前,會隱式調用父類的無參數構造方法。這個過程的目的是確保父類的初始化完成,子類在構造過程中可以正確地使用從父類繼承的屬性和行為,保證繼承關系的正確性。

6)一個類的構造方法的作用是什么?若一個類沒有聲明構造方法,改程序能正確執行嗎?為什么?

作用: 類的構造方法用于初始化對象,在創建對象時執行必要的初始化操作,如設置初始狀態、分配資源等。

沒有聲明構造方法的情況:
如果一個類沒有顯式聲明任何構造方法,Java會提供一個默認的無參構造方法。但如果類中有顯式聲明了構造方法,而沒有默認的無參構造方法,則在創建對象時必須調用其中的一個已聲明的構造方法,否則編譯會報錯。

程序能否正確執行:

  • 若一個類沒有顯式聲明任何構造方法,Java會提供一個默認的無參構造方法,因此程序可以正確執行。
  • 若一個類有顯式聲明了構造方法,但沒有默認的無參構造方法,并且在創建對象時沒有調用已聲明的構造方法,則編譯會報錯,程序無法執行。

原因:
Java要求在對象創建時必須執行構造方法以完成對象的初始化工作。如果類沒有顯式聲明構造方法,則會提供默認的無參構造方法。但如果類有顯式聲明了構造方法,而沒有默認的無參構造方法,而在創建對象時又沒有調用已聲明的構造方法,則無法完成對象的初始化,因此編譯會報錯。

7)構造方法有哪些特性?

構造方法的特性包括:

  1. 與類同名: 構造方法的名稱必須與類的名稱完全相同。
  2. 無返回類型: 構造方法沒有返回類型,甚至沒有void關鍵字。
  3. 用于對象初始化: 構造方法用于在創建對象時執行必要的初始化操作。
  4. 可以有參數: 構造方法可以接受參數,這些參數用于初始化對象的屬性。
  5. 默認構造方法: 如果類沒有顯式聲明構造方法,Java會提供一個默認的無參構造方法。
  6. 重載: 一個類可以有多個構造方法,通過參數的不同來進行構造方法的重載。

8)靜態變量和實例變量區別

靜態變量(類變量):

  • 屬于類,而不是類的實例。
  • 使用static關鍵字聲明。
  • 所有對象共享同一份靜態變量。
  • 在類加載時初始化,不依賴于對象的創建。

實例變量(成員變量):

  • 每個對象都有一份獨立的實例變量。
  • 不使用static關鍵字聲明。
  • 每個對象的實例變量值可以不同,它們屬于對象的狀態。

9)靜態變量與普通變量區別

靜態變量:

  • 屬于類,使用static關鍵字聲明。
  • 在類加載時初始化,不依賴于對象的創建。
  • 所有對象共享同一份靜態變量。

普通變量(非靜態變量):

  • 屬于對象,不使用static關鍵字聲明。
  • 在對象創建時初始化,每個對象有自己的一份普通變量。
  • 每個對象的普通變量值可以不同,它們屬于對象的狀態。

10)靜態方法和實例方法有何不同?

靜態方法:

  • 使用static關鍵字聲明。
  • 可以直接通過類名調用,不需要創建對象。
  • 不能訪問實例變量,只能訪問靜態變量。

實例方法:

  • 沒有使用static關鍵字聲明。
  • 必須通過對象調用,需要先創建對象。
  • 可以訪問實例變量和靜態變量。

總結:
靜態方法主要用于不依賴于實例變量的操作,而實例方法通常用于依賴于對象狀態的操作。靜態方法在類加載時初始化,而實例方法需要通過對象調用。

開源項目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

前后端總計已經 700+ Star,1W+ 訪問!

?點贊?收藏?不迷路!?

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

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

相關文章

代碼隨想錄day27:貪心part1,基礎篇

文章目錄 day27:貪心part1,基礎篇455.分發餅干376.擺動序列53.最大子數組和 day27:貪心part1,基礎篇 455.分發餅干 循環結束條件注意餅干比孩子多的情況 class Solution {public int findContentChildren(int[] g, int[] s) {A…

C++:非靜態成員默認初始化

C11之前只有常靜態成員變量才能進行默認初始化,其它變量初始化時總要進行繁瑣的過程 class A{int a; public:A():a(10){} };C11開始支持非靜態成員的默認初始化,默認初始化和初始化參數列表同時初始化一個變量時會使用初始化參數列表,不進行…

JavaScript new、apply call 方法

new、apply、call、bind JavaScript 中的 apply、call和 bind 方法是前端代碼開發中相當重要的概念,并且與 this 的指向密切相關 new new 關鍵詞的主要作用 就是執行一個構造函數、返回一個實例對象 根據構造函數的情況,來確定是否可以接受參數的傳遞…

Huggingface初上手即ERNIE-gram句子相似性實戰

大模型如火如荼的今天,不學點語言模型(LM)相關的技術實在是說不過去了。只不過由于過往項目用到LM較少,所以學習也主要停留在直面——動眼不動手的水平。Huggingface(HF)也是現在搞LM離不開的工具了。 出于…

最新 DataGrip 2023.3.4 下載安裝激活 + 永久免費

文章目錄 DataGrip簡介同類產品對比使用技巧不足實戰 下載安裝激活Stage 1 : 官網下載Stage 2 : 下載工具Stage 3-1 : windows為例Stage 3-2 : mac為例常見問題部分小伙伴 Mac 系統執行腳本遇到如下錯誤:解決方法: 執行腳本做了啥?和收費版區…

基于springboot+vue的可盈保險合同管理系統

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

XUbuntu22.04之如何找到.so庫所在的軟件包?(二百一十六)

簡介: CSDN博客專家,專注Android/Linux系統,分享多mic語音方案、音視頻、編解碼等技術,與大家一起成長! 優質專欄:Audio工程師進階系列【原創干貨持續更新中……】🚀 優質專欄:多媒…

Vue中的事件總線(EventBus)是什么?它有什么優點和缺點?

作為一名使用Vue的前端開發者,有時候會聽到事件總線(EventBus)這個名詞。但可能是我入行比較晚,我在Vue網站中并沒有看到過事件總線的介紹,在項目中也沒有使用過。那究竟什么是事件總線?事件總線可以解決什么問題? 事…

element-plus表格合并

要實現這樣的表格, 怎么做呢? 甚至是這種三級的呢? 官網的案例也是通過這個方法進行配置的,也就是說表格長什么樣,關鍵在怎么處理的方法上。 這是官網的方法,可參考拓展: const arraySpanMeth…

一款云滲透工具 - Sea Moon

SeaMoon - 月海 什么是月海 🌕 月出于云卻隱于海 月海(Sea Moon) 是一款 FaaS/BaaS 實現的 Serverless 網絡工具集,期望利用云原生的優勢,實現更簡單、更便宜的網絡功能。 月海之名取自于蘇軾的《西江月頃在黃州》,寓意月海取自…

【JVM】JVM相關機制

1. JVM內存區域劃分 1.1 內存區域劃分簡介 內存區域劃分:實際上JVM也是一個進程,進程運行時需要向操作系統申請一些系統資源(內存就是典型的資源),這些內存空間就支撐著后續Java程序的運行,而這些內存又會…

Python環境搭建:一站式指南

在當前AIGC技術蓬勃發展的背景下,Python作為人工智能領域最受青睞的編程語言之一,成為我們必須掌握的技能。因此,搭建一個適合自己的Python環境成為了每個Python開發者的首要任務。本文將為您提供一站式的Python環境搭建指南,幫助…

PythonOpenCV隨機粘貼圖像

import cv2 import numpy as np import random # 讀取兩個圖像 image1 cv2.imread(image1.jpg) image2 cv2.imread(image2.jpg) # 將image1轉換為灰度圖像 gray_image1 cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY) # 創建掩碼,黑色部分為0,非黑色部…

Python自動發郵件

我經常需要用手機看服務器的運行情況,所以就寫一個腳本,通過郵件把服務器運行情況發送給我,直接手機可以查看煉丹狀態。事實證明還是很有用的,所以撰寫一篇博文將腳本分享給大家。這里用到smtplib和email兩個python包。 import s…

力扣精選算法100道——顏色分類(雙指針和三指針倆種方法解決此題)

目錄 🚩了解題意 🚩算法分析 第一種方法:雙指針 🚩代碼實現一 第二種方法:三指針 🚩代碼實現二 🚩了解題意 本題將整數0,1,2代表紅白籃,nums中的整數并…

仿牛客網項目---私信列表和發送列表功能的實現

這篇文章我們來講一下我的這個項目的另外一個功能&#xff1a;私信列表和發送列表功能。 先來設計DAO層。 Mapper public interface MessageMapper {// 查詢當前用戶的會話列表,針對每個會話只返回一條最新的私信.List<Message> selectConversations(int userId, int of…

【激光SLAM】基于已知位姿的構圖算法 (Grid-based)

文章目錄 地圖分類概念 覆蓋柵格建圖算法柵格地圖的特征數學描述假設 算法流程激光雷達的逆觀測模型 計數(Count Model)建圖算法概念數學描述觀測模型地圖估計 地圖分類 概念 地圖即為環境的空間模型。環境地圖是機器人進行定位和規劃的前提。定位可以用特征地圖&#xff08;…

可穿戴設備相關Python包【待更】

提供7個python 包。 1 2 3 4 5 6 7 pyActigraphyGitHub - ghammad/pyActigraphy: Python-based open source package for actigraphy data analysisActiGraph ActiGraph GitHub

基礎內容哦!!!吳恩達deeplearning.ai:利用計算圖求導(反向傳播)

以下內容有任何不理解可以翻看我之前的博客哦&#xff1a;吳恩達deeplearning.ai專欄 文章目錄 一個小型神經網絡的例子利用計算圖逐步計算價值函數J利用計算圖求出價值函數的導數 計算圖是深度學習中的一個關鍵概念&#xff0c;它也是Tensorflow等編程框架自動計算神經網絡導…

Linux之sed命令詳解及實踐

1、定義 sed全稱是&#xff1a;stream editor 流編輯器 對文件的操作無非就是”增刪改查“&#xff0c;**sed命令就是實現對文件的”增刪改查“。** **man sed//man 的解釋** 用于過濾和轉換文本的流編輯器 2、功能 Sed 主要用來自動編輯一個或多個文件、簡化對文件的反復…