Java 基礎總結

2021-08-03 19:41:34 字數 2350 閱讀 4710

1、物件導向的三大特性?

三大特性是:封裝、繼承、多型  

封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。

封裝是物件導向的特徵之一,是物件和類概念的主要特性。 簡單的說,乙個類就是乙個封裝了資料以及操作這些資料的**的邏輯實體。在乙個物件內部,某些**或某些資料可以是私有的,不能被外界訪問。通過這種方式,物件對內部資料提供了不同級別的保護,以防止程式中無關的部分意外的改變或錯誤的使用了物件的私有部分。

繼承是指可以讓某個型別的物件獲得另乙個型別的物件的屬性的方法。它支援按級分類的概念。繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。 通過繼承建立的新類稱為「子類」或「派生類」,被繼承的類稱為「基類」、「父類」或「超類」。繼承的過程,就是從一般到特殊的過程。要實現繼承,可以通過「繼承」(inheritance)和「組合」(composition)來實現。繼承概念的實現方式有二類:實現繼承與介面繼承。實現繼承是指直接使用基類的屬性和方法而無需額外編碼的能力;介面繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力;

所謂多型就是指乙個類例項的相同方法在不同情形有不同表現形式。多型機制使具有不同內部結構的物件可以共享相同的外部介面。

這意味著,雖然針對不同物件的具體操作不同,但通過乙個公共的類,它們(那些操作)可以通過相同的方式予以呼叫。父類引用子類,呼叫不同子類物件的方法,重寫。

override是重寫(覆蓋)了乙個方法,以實現不同的功能。一般是用於子類在繼承父類時,重寫(重新實現)父類中的方法。

重寫(覆蓋)的規則:

1、重寫方法的引數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是過載.

2、重寫方法的訪問修飾符一定要大於被重寫方法的訪問修飾符(public>protected>default>private)。

3、重寫的方法的返回值必須和被重寫的方法的返回一致;

4、重寫的方法所丟擲的異常必須和被重寫方法的所丟擲的異常一致,或者是其子類;

5、被重寫的方法不能為private,否則在其子類中只是新定義了乙個方法,並沒有對其進行重寫。

6、靜態方法不能被重寫為非靜態的方法(會編譯出錯)。

overload是過載,一般是用於在乙個類內實現若干過載的方法,這些方法的名稱相同而引數形式不同。

過載的規則:

1、在使用過載時只能通過相同的方法名、不同的引數形式實現。不同的引數型別可以是不同的引數型別,不同的引數個數,不同的引數順序(引數型別必須不一樣);

2、不能通過訪問許可權、返回型別、丟擲的異常進行過載;

3、方法的異常型別和數目不會對過載造成影響;

2、執行緒中sleep()和wait()的區別

sleep是執行緒被呼叫時,佔著cpu去睡覺,其他執行緒不能占用cpu,os認為該執行緒正在工作,不會讓出系統資源,wait是進入等待池等待,讓出系統資源,其他執行緒可以占用cpu,一般wait不會加時間限制,因為如果wait的執行緒執行資源不夠,再出來也沒用,要等待其他執行緒呼叫notifyall方法喚醒等待池中的所有執行緒,才會在進入就緒序列等待os分配系統資源, 

sleep是靜態方法,是誰掉的誰去睡覺,就算是在main執行緒裡呼叫了執行緒b的sleep方法,實際上還是main去睡覺,想讓執行緒b去睡覺要在b的**中掉sleep

sleep(100l)是占用cpu,執行緒休眠100毫秒,其他程序不能再占用cpu資源,wait(100l)是進入等待池中等待,交出cpu等系統資源供其他程序使用,在這100毫秒中,該執行緒可以被其他執行緒notify,但不同的是其他在等待池中的執行緒不被notify不會出來,但這個執行緒在等待100毫秒後會自動進入就緒佇列等待系統分配資源,換句話說,sleep(100)在100毫秒後肯定會執行,但wait在100毫秒後還有等待os呼叫分配資源,所以wait100的停止執行時間是不確定的,但至少是100毫秒。

陣列、arraylist、list三者區別

一、 陣列  

優點:在記憶體中時連續的,速度較快,操作簡單。  

缺點:定義陣列時要定義其長度,不是很靈活,過長過短都會造成問題。不方便進行資料的新增、插入和移除。 

二、集合arraylist  

優點:命名空間system.collections下的一部分。大小是動態擴充與收縮的。在宣告arraylist物件時不需要指定它的長度。arraylist繼承了ilist介面,可以很方便的進行資料的新增、插入和移除.  

缺點:當向集合插入不同型別的資料後(arraylist將資料當作object儲存),在進行資料處理時容易出現型別不匹配的錯誤,使用時需要進行型別轉換處理,存在裝箱與拆箱操作,造成效能大量損耗的現象。    

三、泛型list  優點:與集合arraylist類似且繼承ilist介面,在宣告list集合時也要宣告集合內部資料的物件型別,避免了裝箱和拆箱的問題。   

java基礎總結

float 賦值時後邊加f 如 float ff 1.2f 靜態變數 宣告時前邊 static 如static int x 0 資料型別轉換 低精度可以直接轉換成高精度,高精度轉換成低精度 需要顯示型別轉換 int x 50 float y x 顯示轉換 int a int 45.23 foreac...

Java基礎總結

1.string的理解 string s hello world 宣告的內容 乙個指向物件的引用,名為 s 可以指向型別為string的任何物件,目前指向 hello world 這個string型別的物件 string string s 明了另外乙個只能指向string物件的引用,名為string...

Java基礎總結

jdk 1.8 1.hashtable hashtable hash new hashtable 1.key value均不能為空,否則nullpointerexception。2.put相同的key,value值替換,返回原value。3.方法被synchronized修飾,保證執行緒安全,影響效...