java基礎知識整理

2021-07-29 17:52:29 字數 2781 閱讀 4028

一。構造方法,構造**塊,靜態**塊,靜態方法的區別:

public class hellob extends helloa 

public hellob()

static

}

構造**塊:是給所有的物件進行初始化,也就是說,所有的物件都會呼叫乙個**塊。只要物件一建立。就會呼叫這                   個**塊。

建構函式: 是給與之對應的物件進行初始化。它具有針對性。

靜態**塊:靜態塊用於初始化類,為類的屬性初始化。每個靜態**塊只會執行一次。由於jvm在載入類時會執行靜態**塊,所以靜態**塊先

於主方法執行。

靜態方法: 被呼叫時候才執行(靜態**塊是自動執行的),

靜態方法可以直接通過類名呼叫,任何的例項也都可以呼叫,因此靜態方法中不能用this和super關鍵字,不能直接訪問所屬類的例項變數和例項方法

1.執行順序:(優先順序從高到低。)靜態**塊》mian方法》構造**塊》構造方法。其中靜態**塊只執行一次。構造**塊在每次建立物件是都會執行。

2. 構造**塊的功能:(可以把不同構造方法中相同的共性的東西寫在它裡面)。例如:比如不論任何機型的電腦都有開機這個功能,此時我們就可以把這個功能定義在構造**塊內。

二:成員變數與靜態變數的區別:

1.  成員變數所屬於物件。所以也稱為例項變數。

靜態變數所屬於類。所以也稱為類變數。

2.  成員變數存在於堆記憶體中。

靜態變數存在於方法區中。

3.  成員變數隨著物件建立而存在。隨著物件被**而消失。

靜態變數隨著類的載入而存在。隨著類的消失而消失。

4.  成員變數只能被物件所呼叫 。

靜態變數可以被物件呼叫,也可以被類名呼叫。

三:final關鍵字特點

1:這個關鍵字是乙個修飾符,可以修飾類,方法,變數。

2:被final修飾的類是乙個最終類,不可以被繼承。

3:被final修飾的方法是乙個最終方法,不可以被覆蓋。

4:被final修飾的變數是乙個常量,只能賦值一次。

四:抽象類特點

1:抽象方法只能定義在抽象類中,抽象類和抽象方法必須由abstract關鍵字修飾(可以描述類和方法,不可以描述變數)。

2:抽象方法只定義方法宣告,並不定義方法實現。

3:抽象類不可以被建立物件(例項化)。

4:只有通過子類繼承抽象類並覆蓋了抽象類中的所有抽象方法後,該子類才可以例項化。否則,該子類還是乙個抽象類。

注意:抽象類不可以與以下關鍵字共存。

1).private :因為乙個abstract方法需要被重寫,所以不能修飾為private;

2).final:因為乙個abstract方法需要被重寫。被final修飾的方法是不能被重寫的,所以不能同final共存;

3).static:因為乙個abstract方法沒有方法體。靜態方法需要對方法體執行內容分配空間,

所以不能同static共存;(abstract 是沒有實現的,不能產生物件,而是static是屬於類的,類本身是已經存在的物件)

4).synchronized: 是同步的,然而同步需要具體的操作才能同步,但, abstract是只有宣告沒有實現的

(即,使用synchronized關鍵字的是需要有具體的實現同步的操作的,但是使用abstract

是只有宣告而沒有實現的,這樣就產生了衝突)

5).native:他們本身的定義就是衝突的,native宣告的方法是移交本地作業系統實現的,

而abstract是移交子類物件實現的,同 時修飾的話,導致不知道誰實現宣告的方法

五:介面(inte***ce).

1. 介面中的成員都有固定的修飾符。

成員變數:public static final

成員方法:public abstract

2. 介面中有抽象方法,說明介面不可以例項化。介面的子類必須實現了介面中所有的抽象方法後,

該子類才可以例項化。否則,該子類還是乙個抽象類。

3. 類與類之間存在著繼承關係,類與介面中間存在的是實現關係。

繼承用extends ;實現用implements

抽象類和介面的區別:

1:抽象類只能被繼承,而且只能單繼承。

介面需要被實現,而且可以多實現。

2:抽象類中可以定義非抽象方法,子類可以直接繼承使用。

介面中都是抽象方法,需要子類去實現。

3:抽象類使用的是 is a 關係。

介面使用的 like a 關係。

4:抽象類的成員修飾符可以自定義。

介面中的成員修飾符是固定的。全都是public的。

六.arraylist與linkedlist與vector區別:

arraylist:底層的資料結構是陣列,執行緒不同步,arraylist替代了vector,查詢元素的速度非常快。

linkedlist:底層的資料結構是鍊錶,執行緒不同步,增刪元素的速度非常快。

vector:底層的資料結構就是陣列,執行緒同步的,vector無論查詢和增刪都巨慢。

Java基礎知識整理2

1.public string trim 乙個字串s通過呼叫方法trim 得到乙個字串物件,該字串物件是s去掉前後空格後的字串 2.public string substring int start,int end 字串物件呼叫該方法獲得乙個當前字串的子串,該子串是從當前字串的start處擷取到en...

JAVA反射基礎知識整理

2.1 class類 獲取class物件的三種方式 方式一 通過object類中的getobject 方法 person p new person class c p.getclass 方式二 通過 類名.class 獲取到位元組碼檔案物件 任意資料型別都具備乙個class靜態屬性,看上去要比第一種...

Java集合基礎知識整理

長度區別 陣列長度固定,集合長度可變 內容不同 陣列只能是同一型別元素,集合可以儲存不同型別元素 元素的資料型別不同 陣列可以儲存基本型別和引用型別,集合只能儲存引用型別 物件 集合繼承關係圖 是所有collextion集合類的超類,是乙個抽象類 基本功能 public static void ma...