JAVA基礎知識歸納(一)

最近總有槓精在Q羣跟我槓JAVA的一些細枝末節的基礎知識,故出一系列“科普文”來怒懟槓精

JAVA switch語句表達式支持類型
支持類型大致有六種:
int
char
byte
short
String(java 7才允許)
枚舉
常見的boolean與實數性不支持

JAVA何種情況下需要強制類型轉換

  1. 父類轉換爲子類時
  2. 基本數據類型由精度高向精度低轉換時
    (精度排序由低到高:byte short char int long float double)

JAVA static 方法與普通方法的區別

  • static方法被稱爲靜態方法,調用類中的靜態方法時,不需要將此類進行實例化就可以直接調用,static方法不可以調用this對象,也不可以調用類中的非靜態方法與非靜態屬性,而非static方法則可以調用static方法,static方法或屬性屬於整個類不屬於某個實例
    生存週期:全局

main方法爲什麼必須是靜態(static)的

  • 因爲main方法由JAVA虛擬機來調用,訪問靜態方法是不需要將類實例化,
    且如果main方法不聲明爲靜態的,JVM就必須創建main類的實例,
    因爲構造器可以被重載,JVM就沒法確定調用哪個main方法。故main方法必須爲靜態的

main方法可以有幾個

  • 在同一個類中main方法有且只有一個,在一個完整的項目中每個類都可以有一個main方法,但只有一個main方法被執行。

方法重載與重寫的區別

  • 重載在同一類中,重寫在不同類中。 重載是在統一類中聲明多個不同參數或不同定義的同名方法
    重寫是父類與子類之間的多態性,若子類中有與父類完全相同(具有相同的方法名、返回類型和參數表)的方法,則子類中的新方法將覆蓋父類中的舊方法

abstract(抽象類)與interface(接口)的關係
相同點:

  1. 都無法被直接實例化
  2. 一個類如果繼承並要實現一個接口/抽象類的話,就必須對其中的抽象方法進行實現,否則依然得聲明爲抽象類
  3. 接口是特殊的抽象類,比抽象的概念更進一步

不同點:

  1. 接口子類由implements來繼承,子類可以繼承多個接口
  2. 抽象類子類由extends關鍵字來繼承,只能繼承一個
  3. 接口不可聲明構造器
  4. 抽象類可以聲明構造器
  5. 抽象類可以有普通方法、靜態方法與抽象方法
  6. 接口中方法默認由public abstruct修飾爲抽象方法,不可私有,從jdk8開始(在這之前不可以)也支持有普通方法,但必須由default來修飾,也是從jdk8開始支持靜態方法的定義

易錯處:

  • abstract方法必須在abstract類中,而abstract類中不一定全都是abstract方法,他可以有普通方法

槓精擡槓處:

  • 接口不是(戰術後仰.jpg)抽象類,爲什麼也有抽象方法…
  • 爲什麼看上面相同點

普通方法與抽象方法區別

  • 普通方法可以被子類重寫也可以不被重寫
  • 抽象方法必須被子類重寫,除非該子類也是抽象類
  • 抽象方法沒有方法體
  • 普通方法有方法體

目前只能想到這些,如有謬誤或者補充,可在評論處發言

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章