2018 java 基礎須知的基礎

辦法

為了不必重複的書寫某段相同邏輯的代碼,就將這一段代碼提出來,那麼這種提取辦法稱為辦法

辦法的重載(重要)

在一類中,呈現了辦法名一起而參數列表不同的辦法

1.在同一個類中,不答應存在辦法簽名

(辦法稱號和一個參數列表(辦法的參數的次序和類型)組成)一起的辦法

2.在調用辦法的時分遵從的是最附近的匹配準則---就是說,類型能否主動轉換且

轉化最附近的值

3.在辦法重載的時分,儘量重載全部的情況

辦法的傳參問題:

2018 java 基礎須知的基礎

在這裡相信有許多想要學習Java的同學,大家可以關注小編頭條號,私信【資料】即可免費領取一整套系統的Java學習教程!

關於根本類型的數據而言,在傳參的時分傳遞的是實際數據;關於引證類型,在傳參的時分

傳的是地址。

面向目標與面向進程

面向進程:要點重視流程中的每一個動作、進程。

面向目標:在流程中要點重視目標。只需是找到了這個目標,就具有了這個目標身上的全部功用。

類與目標的聯絡將這一類事物的特徵界說為特點,將事物的行為界說為辦法,類是目標的歸納結構辦法

創立目標需求調用對應辦法的結構辦法。

---每一個類中都至少有結構辦法。假如沒有手動添加,那麼jvm在編譯的時分添加無參結構。假如手動添加,jvm就不再添加了結構辦法與類名同名並且沒有返回值類型。結構辦法能夠重載。

this關鍵字

this在本類中調用本類中的特點或許是辦法的。

this句子---this(參數)---表明調用本類中其他的對應辦法的結構辦法---this句子有必要

放在結構函數的榜首行部分代碼塊 在辦法頂用{}包起來的代碼塊---部分代碼塊。 ---用於約束變量的運用規模和生命週期,

以便於進步棧內存的運用率

匿名目標

沒有姓名的目標---只能在創立的時分來運用一次。

面向目標的特徵:封裝,承繼,多態(、籠統)

封裝將某些邏輯或許代碼提取成某種對相應的辦法,這個提取的進程是封裝

比如說:將特點設置為私有的,然後經過供給對外的辦法來獲取或許設置這個特點值,

長處:進步代碼的複用性,進步代碼的安全性(數據的合法性)承繼 發現一些類中有部分一起的特點和辦法,將這些共有的特點和辦法提取到了一個新的類中

讓這個新的類和本來的類發生聯絡(聯絡),這種聯絡就稱之為承繼。運用extends關鍵字

新的類稱之為子類(派生類),本來的類就稱之為父類(超類,基類)。子類能夠經過承繼運用父類中的一部分特點和辦法。

super關鍵字

指在子類中表明父類目標的引證,用於調用父類中的辦法和特點辦法的重寫在父字類中存在辦法簽名完全相同的辦法。稱之為辦法的重寫(掩蓋)。

兩等兩小一大----重寫的辦法要對子類可見

2018 java 基礎須知的基礎

1.辦法簽名一起

2.假如父類中的辦法的返回值類型是根本類型/void,那麼子類在重寫這個辦法的時分

返回值類型也有必要一起。子類的辦法的返回值類型和父類辦法的返回值類型有必要一起

3在重寫的時分,子類重寫的辦法的權限潤飾符的規模要大於等於父類中辦法的權限

潤飾符的規模 A a = new B(); //a 目標是運用向上造型的辦法來創立的。a的聲明類為A類,那麼A就通知了a目標有一個m辦法能夠運用,並且通知a目標m辦法能夠在任何地辦法

運用a.m();//在履行這個辦法的時分看的是詳細的創立類。創立a目標用的類是B。那麼在履行m辦法的時分看的也是B,然而B類卻約束了m辦法的運用規模只是是本類中。

---A類聲明的時分說是任何地方可用,實際運用的時分卻辦法只能在本類中--對立了

4.假如子類辦法的返回值類型是引證類型,那麼子類在重寫辦法的時分,重寫的辦法的返回值類型是父類辦法返回值類型自身或許是父類辦法返回值類型的子類

5子類不能拋出比父類更多的反常---規模不能更大,並且指的是編譯時反常多態

編譯時多態:辦法的重載運轉時多態:辦法的重寫,向上造型 ---依據承繼 ---- 承繼是運轉時多態的條件static 潤飾變量,辦法,代碼塊,以及內部類。

靜態變量:

static潤飾的變量稱之為靜態變量,或許也叫類變量。類在榜首次運用的時分加載。靜態變量在類加載的時分加載到了辦法區中的靜態區,並且在靜態區中給予了默許值。靜態變量是先於目標而存在的。能夠不經過目標來調用靜態變量而是經過類來調用,當然也能夠用目標來調用。因為本類的全部目標存儲的是該靜態變量在靜態區中的地址,所以目標同享靜態變量。

static:潤飾變量、辦法、代碼塊以及內部類。靜態變量在類加載的時分加載到辦法區中的靜態區,會在靜態中初始化。靜態變量是先於目標呈現的,所以一般習慣上都是經過類名來調用靜態變量。靜態變量是被這個類的全部目標所同享的。靜態辦法跟著類的加載而加載到靜態區,可是在靜態區中只存儲而不履行,在被調用的時分到棧內存中履行。靜態辦法也是先於目標而存在的,所以習慣上也是經過類名來調用靜態辦法。靜態辦法中不能直接運用本類中非靜態的辦法或許對錯靜態的特點。靜態辦法能夠重載,能夠被承繼,父子類中也能夠存在辦法簽名一起的靜態辦法,可是這不是重寫!---一旦父子類中存在了辦法簽名一起的辦法,要麼都是靜態的要麼都對錯靜態的。靜態代碼塊在類榜首次真實運用(創立目標/調用辦法)的時分履行一次。留意履行次序

final潤飾數據、辦法以及類final潤飾數據的時分,稱之為常量---界說好之後值不行改動。---關於根本類型而言指的是實際值不行變,而關於引證類型而言,指的是地址不行變,可是特點或許元素值能夠改final潤飾的辦法稱之為終究辦法。---不能夠被重寫。---能夠重載,能夠被承繼final潤飾的類稱之為終究類---不能被承繼

finally---在反常機制中運用,用於完結一些有必要要做的事務

abstract 發現每一個子類都對父類中的某個辦法做了重寫,那麼此刻父類中的辦法再聲明辦法體就沒有意義了,全部能夠將父類的這個辦法聲明為籠統辦法,用abstract潤飾。

而籠統辦法有必要放在籠統類中。籠統類也是用abstract潤飾籠統類不能創立目標,有結構辦法。---所謂的籠統類不能創立目標是指的是

不能用java語言創立,jvm在運轉的時分底層用C語言來創立這個目標一個類承繼了籠統類之後有必要重寫其間全部的籠統辦法,除非這個類自身也是籠統類

籠統類中能夠沒有籠統辦法,可是不管是否含有籠統辦法,籠統類都不能用於創立目標。

籠統類中能夠界說一般的辦法或許特點嗎?--能夠---只需是一個一般類中能夠界說的東西在籠統類中也能夠界說

籠統類能夠是終究類嗎?---不能---籠統類有必要被子類承繼,然後子類中重寫其間的籠統辦法,可是終究類不被承繼

實體類和籠統類之間有什麼區別?---籠統類不能用於創立目標;籠統類中能夠含有籠統辦法;籠統類必定不能是終究類

籠統辦法能夠重載嗎?---能夠---籠統辦法之間能夠重載,籠統辦法也能夠和實體辦法重載

籠統辦法能夠用static潤飾嗎?---不能夠

籠統辦法能夠用final潤飾嗎?---不能夠

籠統辦法能夠用private潤飾嗎?---不能夠

籠統辦法能夠是默許的嗎?---能夠---要求籠統類和子類有必要同包

籠統類中的結構函數能夠是私有的嗎?---能夠---任何一個類的結構函數都能夠私有化

接口:接口中界說的辦法,用interface關鍵字來聲明一個接口

用implements讓類和接口之間發生聯絡,這種聯絡稱之為完結。一個類完結了接口之後有必要完結這個接口中全部的籠統辦法,除非這個類自身也是籠統

類接口不能實例化,那麼有結構辦法嗎?---沒有---接口不是類---每一個接口編譯完結之後也會發生一個class文件

在java中,接口和類之間是多完結的聯絡---一個類能夠完結多個接口

接口和籠統類的異同點有哪些?

都不能創立目標,都能夠有籠統辦法,實體類在承繼了籠統類或許是完結了接口之後有必要完結其間的籠統辦法,除非這個類也是籠統類。

籠統類中能夠有結構函數,能夠有一般特點和實體辦法;接口中沒有結構函數,只能界說籠統辦法和靜態常量。籠統類之間是單承繼,接口之間是多承繼,以及接口和類之間是多完結。籠統類中的籠統辦法只需不是private就行,而接口中的辦法只能是public。

籠統類能夠承繼籠統類,籠統類也能夠完結接口

廢物分代收回機制 棧內存中的數據用完之後當即開釋所佔內存。辦法區存的是類的信息,只加載一次。廢物分代收回機制針對的是堆內存。

堆內存中存儲的是目標,目標在用完之後不必定會當即收回,而是會在某個不定的時刻被收回掉。內存運用到達警戒線的時分會發動收回器(GC ---garbage collector)進行收回。

System.gc(); --- 表面上是調用GC來收回廢物,可是實際上只是起了一個通知性的效果---GC不必定會幹。

將堆內存分為了新生代和老生代。將新生代分為了伊甸園區和倖存區。一個目標剛剛創立的時分是放到伊甸園區。經過一次收回,假如這個目標仍然存在,則挪到倖存區。在倖存區中經過了屢次收回,假如這個目標仍然存在,則挪到老生代。老生代的掃描頻率要遠遠低於新生代。老生代的目標一旦發生收回,可能會導致程序的卡頓乃至崩潰。

API --- Application Programming Interface --- 應用程序接口

Object String Pattern 數學類 日期類 包裝類 --- 3.5 --- 4

反常 調集 映射 --- 3

File IO 線程 套接字 --- 4

反射 jdk8的一部分特性 --- 1

String String是一個終究類。字符串是一個常量;字符串是被同享的。

反常是java中一套用於問題的反應和處理的機制

總結:重寫和重載有什麼區別?

重載是在同一個類中,辦法名一起而參數不桶的辦法。辦法的重載只和辦法簽名有關,

和潤飾符、返回值類型、反常沒有聯絡。辦法的重載是一種編譯時多態。

重寫在父子類中存在了辦法簽名完全一起的非靜態辦法。辦法重寫的時分需求遵從兩等兩小一大

五個準則。

辦法簽名一起

當父類的返回值是void/根本類型,那麼子類的返回值有必要和父類的返回值一樣子類重寫辦法時,子類潤飾符的權限有必要大於等於父類潤飾符權限子類的拋反常時,不能超過父類拋出的反常數。

Collection

調集頂級接口。---泛型---用於規則調集中元素的類型---因為泛型的約束,調集中只能存儲

目標。

List---列表有序---確保元素的存入次序---經過下標來操作其間的元素---答應元素重複---List中的元素是有序可重複的。

ArrayList ---次序表

依據數組。內存空間接連。默許初始容量為10,每次擴容是在上一次容量的基礎上添加一半---依據右移10 -》15-》,增刪元素相對較慢,查詢元素相對較快。是線程不安全的列表

ArrayList的底層完結---用數組完結次序表

LinkedList---鏈表

依據節點(Node)完結的。Node是一個靜態內部類。內部空間不接連的。增刪元素相對較快,

查詢元素相對較慢。是線程不安全的列表

Vector---向量 最早的列表---依據數組。默許初始容量是10.每次默許擴容一倍---依據三元表達式----是線程安全的列表

Enumeration ---迭代器---經過指針的移動來遍歷每一個元素

Stack---棧

遵從後進先出/先進後出的準則。將元素放入棧中---入棧/壓棧,將元素從棧中取出---出棧/彈棧。最先放入棧中元素---棧低元素,最終放入棧中的元素---棧頂元素

在這裡相信有許多想要學習Java的同學,大家可以關注小編頭條號,私信【資料】即可免費領取一整套系統的Java學習教程!

總結:

1.List和數組有什麼區別?---長度,元素的數據類型、內存

2.Arraylist和LinkedList在增刪元素的功率上誰塊一些?

3. 在功率平衡點的時分,數據量相對較大的情況下,即便相對查詢較多,為什麼喜愛運用LinkedList?---內存

Set---散列調集元素不行重複,元素是無序的。

Hashset底層是依據HashMap----HashMap中保持了一個數組,數組的每一個方位稱之為一個

桶,每一個桶中保持了一個鏈表。一個元素依據其哈希碼進行運算,依據運算之後的結果均勻的分到這些桶中。當用了75%(加載因子)的桶的時分,會進行擴容,桶的數量會添加一倍。已有元素

會從頭核算哈希碼從頭散佈,這個進程稱之為rehash操作。

2018 java 基礎須知的基礎


分享到:


相關文章: