Java面試基礎知識總結

基礎部分:

基礎語法

  1. 標識符

  2. 常量與變量

    通過final關鍵詞修飾變量,變量賦值後,不能再修改
    Java平臺無需顯式的管理內存中的對象,當JRE確定對象不再被使用時將自動銷燬該對象釋放內存空間,這個過程,稱爲垃圾回收
    當變量超出作用範圍,變量引用會被刪除,一個沒有任何引用的對象將被垃圾回收器回收
    可以通過置變量引用爲null,來顯式的聲明刪除對對象的引用,但僅是聲明,並不會立即釋放內存
    同一對象可能有多個引用
    垃圾回收器會在合適的時間,自動的,週期性的,釋放沒有引用對象佔用的內存(基於CPU、內存使用情況分析)

  3. 數據類型
    在這裏插入圖片描述
    布爾型值具體內存佔用由具體虛擬機決定
    oracle 1字節8位 openjdk 4字節 = int
    代碼中,顯式的固定的數據值,爲字面量

    long長整型數值。長整型必須以“L”大寫字母L爲後綴,避免與“1”數字1混淆

    byte b = 4;
    //byte b2 =128;     //提示類型不匹配
    short s = 5;
    //short s2 = 32768;     //提示類型不匹配
    

    值傳遞
    所有基本類型變量不與其他變量共享值,基本數據類型爲值傳遞,而非引用傳遞。因此當被"引用"的值改變時,不會影響"引用"其值的變量
    String類型變量雖然爲對象,但依然爲值傳遞
    即,8+1類型變量,均爲值傳遞

    轉換

    基本數字類型之間可以轉換

    • 小轉大 可以直接轉換(int to double)

    • 大轉小 必須聲明強制轉換(double to int) 向小範圍轉換時,可能造成數據錯誤或丟失

  4. 運算符

當判斷8個基本數據類型的關係時,使用等式與關係運算符;返回布爾類型結果
&& ||具有短路性
優先級表:
優先級

  1. 流程控制語句

    • if-then, if-then-else, switch

      if(表達式) {
          //then代碼塊
      } else {
          //else代碼塊
      }
      

      Switch支持整數/枚舉/字符串作爲表達式;當匹配case中表達式時,執行相應代碼塊;並順次執行之後的全部case分支直到break語句。當均不匹配時執行default

    • for, while, do-while

    • break, continue, return

  2. 方法

    組成:修飾符、方法返回類型、方法參數列表、方法體

    方法簽名

    類中不能存在方法簽名相同的方法,方法簽名是類中一個方法區別於另一個的特徵

    方法簽名:方法名稱,方法參數列表(方法參數數量,相應位置的參數類型)決定;與方法的各種修飾符,返回類型,參數名稱等無關

    • Parameter 方法聲明定義中的參數(形參)

    • Argument 方法被調用時實際傳入的參數(實參)

      tips:8+1類型是傳遞值

    方法重載

    允許具有相同名稱,但不同參數列表的,方法存在。解決了方法功能相同,但必須使用不同命名的缺陷

    this

    表示當前對象的引用;可以通過this,在實例方法或構造函數中引用當前對象的成員變量

    所有實例方法,都隱式包含一個引用當前對象的變量,名稱爲this。當方法引用類的實例變量時,編譯器隱式的使用this獲取當前對象的實例變量(編譯器自動傳入this對象引用)

  3. 數組

    • 數組是按順序存放單一類型長度固定,的容器對象

    • 數組中的每一個項,稱爲元素

    • 數組一旦創建,就不能更改長度,即,如需增/刪數組元素而改變數組長度,必須創建一個新數組

    • 通過[index]索引訪問數組元素

    • 通過length成員常量****(而非方法),獲取數組長度

      //靜態創建
      int[] intArray2 = {10,20,30};
      int[] intArray2 = new int[]{10,20,30};
      //動態創建
      int[] a = new int[100];
      for(int i = 0;i<a.length;i++){
          a[i] = i;
      }
      
  4. 註解

    聲明文檔註釋:使用時可查看註釋信息

    /** documentation
    * 文檔註釋,可生成API文檔
    */
    

文檔註釋

關鍵字:

面向對象:

  1. 面向對象思想

  2. 類與對象

    創建一個對象的基本過程:

    • 聲明 Bicyle bicycle

      聲明一個名稱爲bicycle,引用Bicycle類型對象的變量。僅聲明瞭一個可以引用指定類型對象的變量,聲明並不會創建一個對象,必須爲其分配一個對象引用才能使用

    • 實例化 Bicycle bicycle = new

      new操作符通過爲新對象分配內存,並返回該內存的引用來實例化一個類

    • 初始化Bicycle bicycle = new Bicycle(5)

      new操作符同時,調用構造函數完成對象的初始化,並把初始化數據寫入內存

      對象創建過程

  3. 成員變量與局部變量 與靜態

    創建對象時,在堆空間爲對象開闢空間,保存屬性數據。因此,類的每一個對象擁有獨立內存空間以及屬性數據
    類中,static修飾的變量,稱爲靜態變量或類變量
    類的靜態變量置於方法區,而非堆空間
    即,其與所在類相關,但不與類的任何對象相關
    即,其不基於類的對象而存在
    類的私有靜態變量/常量,類的每一個對象均可訪問
    類的公有靜態變量/常量,全局可訪問

    • 類中,實例級方法單向訪問方法靜態方法/變量/常量

    • 類中,靜態方法無法訪問實例級方法/變量/this等

    靜態代碼塊僅在所在類被加載時執行,且僅執行一次,無論類實例化次數

    優先執行靜態代碼塊,靜態代碼塊中的變量是局部變量

  4. 匿名對象

  5. 封裝

    • 基於封裝思想,實體類中封裝的屬性數據,通過對外提供,訪問器(getter/setter)實現
  6. this關鍵字

  7. 構造方法

  8. 繼承

  9. 多態

  10. 抽象類

  11. 接口

  12. 內部類

集合:

高級知識

  1. 線程

  2. JDK

  3. 反射

  4. JVM

    jvm結構:

    Stack(棧):創建線程的同時,創建該線程的棧空間,存儲執行方法的局部變量表(包括:基本數據類型字面量,以及對象的引用);操作棧(調用方法的引用)等

    Heap(堆):存儲創建的對象實例,GC主要工作的地方

    Method Area(方法區):線程共享的,存儲每一個類的結構信息(包括:類中的屬性/方法等元數據),常量池,靜態變量/常量,方法/構造函數的執行代碼

  5. GC

  6. IO和NIO、AIO

版本特性

Java 8

  • 函數式編程
  • Lambda表達式
  • 接口的默認方法(默認方法 在接口中有具體的實現 default
    在接口中方法前面加上修飾符default 編譯器會認爲 該方法並非抽象方法 可以在接口中寫實現
  • 集合Stream API
  • 新的Time API
  • 多重註解
  • Optional空引用處理

Java 9 & 10 & 11

  • JShell互交式編程
  • 增強集合stream API
  • 增強集合工廠方法
  • 增強Optional方法
  • 編譯器類型推導變量
  • 新字符串加強處理方法
  • 接口私有成員變量
  • No-Op垃圾回收器
  • …………………

梗概

變量 變量的聲明,命名規範
基本數據類型 8 + 1基本數據類型,默認值,範圍,大小等
整數類型 基本整數類型,long類型後綴
轉義符 特殊含義字符輸出的處理
常量 常量的聲明,命名規範
數組 數組的類型,,創建方法,索引,長度,引用傳遞
字面量 基本類型的字面量,值傳遞與引用傳遞
變量的作用範圍 域,實例變量,類變量,類常量,局部變量,參數,默認值
算術運算符 取模,字符串拼接
等式與關係運算符 基本類型使用 == 判斷值是否相等
條件運算符 布爾表達式執行條件,短路特性
運算符優先級 建議使用()括號強調有限順序
基本數據類型轉換 大範圍到小範圍的強制轉換
註釋 單行,多行,文檔
If then else 表達式值與執行的代碼塊
switch 支持的類型,支持字符串,固定項,break,適應場景
While 表達式
For 聲明方法,循環的過程
foreach 適應場景,優缺點
Break 終止的範圍
Return 方法的退出,有/無返回值的聲明

Classes and Objects Summary

---- Content
面向對象中的類;聲明,命名規範;單繼承
屬性 命名規範;提供getter/setter方法,及方法的命名規範;Boolean類型屬性getter方法命名
方法 方法的名稱規範;聲明;參數列表;方法簽名;方法重載;返回值;
構造函數 聲明;有參/無參;約束;
參數 形參/實參;可變長度的參數;命名規範;值傳遞/引用傳遞;
對象 對象的基本創建過程;使用方法;this關鍵詞
垃圾回收器 Java平臺處理對象的特點;對象資源釋放的時機與時間
訪問級別修飾符 頂級/成員級修飾符;修飾目標的可見範圍;
靜態變量 聲明;使用場景;特點;與類實例的關係;使用方法;命名
靜態方法 聲明;使用場景;特點;與類實例變量/方法的關係;
常量 基本類型與引用類型常量各種的特點;命名;
靜態塊 作用;加載;執行順序
靜態內部類 聲明創建方法;作用;使用場景
枚舉 聲明;使用場景
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章