Java中容易遺漏的小知識點( 一 )(為了和小白一樣馬上要考試的兄弟準備的,希望小白和大家高過不掛)
筆者csdn博客同文地址:https://blog.csdn.net/weixin_45791445/article/details/106597515
我是小康小白,一個平平無奇的Java小白。熱愛有趣的文字,生活和遠方。
個人博客:https://blog.csdn.net/weixin_45791445
小白最近快考試了,複習的順便總結一下一些小白認為容易忘記的知識點,希望能幫助到大家。
小白的總結系列二,三已上線Java中容易遺漏的常用的知識點( 二 )(為了和小白一樣馬上要考試的兄弟準備的,希望小白和大家高過不掛)
Java中容易遺漏的常用的知識點( 三 )(為了和小白一樣馬上要考試的兄弟準備的,希望小白和大家高過不掛)
-
Java代碼運行機制
1. 編寫源代碼 得到的是以“.java”為擴展名的源文件,源文件名應與該文件中被修飾為public的類名相同。 2. 編譯(使用cmd命令編譯時使用的命令是javac 文件名.java。使用的javac編輯器) 編譯后的文件叫做類文件。得到的是以“.class”為擴展名的字節碼文件。 這裏出現的錯誤叫編譯時錯誤。 然後使用java命令運行,命令格式為:java 項目名(注意這裏沒有後綴)) 3.類裝載ClassLoader 4.字節碼(byte-code)校驗 5. 解釋 6. 運行 這裏出現的錯誤叫運行時錯誤。
-
在一個簡單的Java程序中有一個獲以上的類組合而成。其次在一個可以獨立運行的Java程序中有且只有一個main()方法,它是程序運行的開端。程序的主體被包含在類中,這個起始的地方被稱為main方法。main方法之前必須加上public,static,void。static表示
-
switch中的控製表達式必須為char,int,short或byte類型的。case後面的常量表達式必須和控製表達式的類型相同。(書上)
書上這一節後面的習題中有個選項說支持long類型是錯誤的。
switch表達式後面的數據類型只能是byte,short,char,int四種整形類型,枚舉類型和java.lang.String類型(從java 7才允許),不能是boolean類型。至於四種基本類型的包裝類是由於有自動拆箱的操作所以支持(實際)
-
instanceof是對象運算符,用來判定一個對象是否屬於莫個指定的類(或其子類)的實例。
-
邏輯運算符分為標準邏輯運算符(!& ^ |)和條件邏輯運算符(&& ||)
-
byte:1字節,short:2字節,int:4字節,long:8字節,float:4字節,double:8字節,char:2字節,boolean:書上此處為空。
switch的格式
do-while的格式(最後要加一個”;”)
foreach
- 運算符優先級
- 在判斷語句中的i++和–j是一個完整的獨立語句,先進行自加或者自減后再進行比對。
(下面是debug測試) - outer標籤
outer標籤是什麼,上面的文章講的很詳細。
小白在這裏補充一下break outer;和continue outer;的區別
break outer;是直接完全的跳出到outer標籤標記的循環外面。
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200608102636433.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTc5MTQ0NQ==,size_16,color_FFFFFF,t_70#pic_center =500×500)
continue outer;的作用並非完全跳出外層循環,而是跳出outer標籤標記循環的本次循環,直接進行此循環的下一次循環;
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200608102735262.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTc5MTQ0NQ==,size_16,color_FFFFFF,t_70#pic_center =500×500)
12. 構造方法
-
類是對象模板,只有實例化之後才可以使用。new運算符用於創建一個類的實例並返回對象的引用。
默認構造方法對成員變量的初始化原則如下:
對於整型成員變量,默認初值是0;對與浮點型,默認初值是0.0;對於boolean類型,默認初值是false;對於引用型,默認值是null。 -
this關鍵字
this可以出現在類的構造方法和非static修飾的成員方法(即實例方法)中,this代表實例對象自身,可以通過this來訪問實例對象的成員變量或調用成員方法。
類方法中不可以使用this
由於類方法可以通過類名字直接調用,這時可能還沒有任何對象產生,因此指代對象實例本身的this關鍵字不可以出現在類方法中。 -
1)public訪問權限最具有開放性,可以用來修飾類、類與接口的成員(包括成員變量、成員方法) 。由public類修飾的類或類成員可被任何類訪問。 2)protected可以用來修飾類的成員變量或方法。具有protected訪問特性的類成員可以被本類、 本包中的其他類訪問,也可以被其他包中的子類繼承,它的可訪問性低於public,高於默認。 3)如果在定義類、接口、成員變量、成員方法時沒有指定訪問權限控制符,他們的權限就為默認權 限。具有默認權限的類、接口、成員變量、成員方法,只能被本類和同一個包中的其他類、接口及成員方 法引用,因此默認權限也被稱為包權限。 4)私有訪問控制符private用來聲明類的私有成員,它提供了最高的保護級別。用private修飾的 成員變量或方法只能被該類自身所訪問和修改,而不能被任何其他類(包括該類的子類)來獲取和引用。
Java文件名應與修飾為public的類名相同。且Java文件中只能有一個public修飾的類
特殊情況:
只有被修飾為public訪問權限的成員變量和方法才可以被不同包的其他類使用,修飾為protected的成員變量和方法可以被不同包的子類繼承,訪問。不同包的其他類禁止訪問修飾為private和默認權限的成員變量和方法。
-
super關鍵字
子類在繼承父類時,可能會出現變量隱藏、方法覆蓋(overriding)等現象。變量隱藏指子類的成員變量與父類成員同名,此時,父類的成員變量被隱藏。方法覆蓋指子類的方法與父類的方法名相同,方法的返回值類型、入口參數的數目、類型、順序均相同,只是方法實現的功能不同,此時父類的方法被覆蓋。如果子類需要調用或訪問父類被隱藏的變量或被覆蓋的方法,可以使用super關鍵字實現。
當用子類的構造方法創建一個子類對象時,子類的構造方法總會顯式或隱式地先調用父類的某個構造方法。如果子類的構造方法沒有明顯地指明調用父類的哪個構造方法,Java會默認調用父類的無參構造方法;子類也可以通過super關鍵字顯式調用父類指定的構造方法,具體調用哪個構造方法需要根據super()的參數類型決定。 -
Java中的子類對象可以向上轉換為父類對象(也稱上轉型對象),允許將子類的實例賦值給父類的引用,也允許一個父類的引用指向子類對象。
但是反過來,一個父類對象的類型未必可以向下轉換成子類對象,因為子類具有的信息,父類未必包含,這種轉換是不安全的。只有當父類引用實際上指向一個子類對象時,才可以進行這種轉換。 -
實例變量依附於對象,在使用new關鍵字創建對象時,Java運行系統為每個對象分配一個內存空間,不同的實例變量佔用不同的內存區域。類變量依附於類(而非對象),對於類變量來說,Java運行系統為類的類變量分配公共的存儲空間,該類的每個實例對象共享同一類變量的存儲空間。因此,每個對象對類變量的修改都會影響其他實例對象。
(1)類變量可以通過類名直接訪問,而不需要創建對象。
(2)任何一個對象對類變量的修改,都是在同一內存單元上完成的。因此,每個對象對類變量的修改都會影響其他實例對象。聲明為static的方法稱為類方法(或稱靜態方法),與此相對,沒有static修飾的成員方法則為實例方法。類方法的本質是該方法屬於整個類,而不是屬於某個實例,可以不創建實例,直接通過類名調用。 類方法的使用具有以下特點:
(1)類方法可以通過類直接調用,而不需要創建實例對象。例如:Java Application的入口main()方法就被聲明為static類方法,可以不需要創建任何實例對象對調用。
(2)類方法屬於整個類,被調用時可能還沒有創建任何對象實例,因此類方法內只可以訪問類變量,而不能直接訪問實例變量和實例方法。
(3)類方法中不能使用this關鍵字,因為靜態方法不屬於任何一個實例。 -
抽象類和抽象方法(為什麼會有抽象類?)
語法:abstract class <類名> [extends<父類>][implements<接口名>]{ <類主體> }
如果一個類A需要繼承抽象類,則該類必須實現抽象類中定義的所有抽象方法。否則,該類也必須修飾為抽象類。也就是說,抽象類的子類如果僅實現父類的部分抽象方法,子類也必須聲明為抽象類。
為什麼會有抽象類和抽象方法?
有時候,我們沒有足夠的信息去描述一個具體的對象,這樣就不能用正常的類來描述它,那麼這時候就需要抽象類了。抽象方法沒有方法體,為什麼呢?小白的理解是我們只知道這個對象有這樣的一種方法(或者理解為” 行為 “),但不知到它的這種方法能夠干什麼,就沒有寫具體的方法主體。因此,抽象類不能實例化(創建的人都不知道它具體是什麼,怎麼實例成一個具體的對象)
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200607181353317.png#pic_center =240×240)
- 接口
接口(interface)是Java所提供的另一種重要結構。接口是一種特殊的類,但接口與類存在着本質的區別。類有成員變量和成員方法,而接口卻只有常量和抽象方法,也就是說接口的成員變量必須初始化,同時接口中的所有方法必須聲明為abstract方法。
語法:
[接口修飾符] interface〈接口名〉[extends〈父類接口列表〉] { 接口體 }
用implements子句表示類實現某個接口。一個類可以同時實現多個接口,接口之間用逗號“,”分隔。 在類體中可以使用接口中定義的常量,由於接口中的方法為抽象方法,所以必須在類體中加入要實現接口方法的代碼,如果一個接口是從別的一個或多個父接口中繼承而來,則在類體中必須加入實現該接口及其父接口中所有方法的代碼。 在實現一個接口時,類中對方法的定義要和接口中的相應方法的定義相匹配,其方法名、方法的返回值類型、方法的訪問權限和參數的數目與類型信息要一致。
接口繼承中出現的方法重名和常量重名
(1)方法重名 如兩個方法完全一樣,只保留一個。 如果兩個方法有不同的參數(類型或個數),那麼子接口中包括兩個方法,方法被重載。 若兩個方法僅在返回值上不同,出現錯誤。
(2)常量重名 兩個重名常量全部保留,並使用原來的接口名作為前綴。
- 內部類:
Java支持在一個類中聲明另一個類,這樣的類稱為內部類(InnerClass),而包含內部類的類稱為內部類的外部類(OuterClass)。內部類一般用來實現一些沒有通用意義的功能邏輯。
eaducoder裏面老用。小白表示心累ಥ_ಥಥ_ಥ。
一個類把內部類看成是自己的成員,外部類的成員變量在內部類中仍然有效,內部類可以直接使用外部類中的成員變量和方法,即使他們是private的,這也是內部類的一個好處。
- 匿名類(小白表示從未用過,但寫一下吧。萬一考呢。)
使用類創建對象時,Java允許把類體與對象的創建組合在一起。也就是說,類創建對象時,除了構造方法還有類體,此類體被稱為匿名類。
實戰:
一個匿名類:
Student3 liu = new Student3() {
void speak() {
System.out.println("這是匿名類中的方法");
}
};// 匿名類體結束
重點來了
- 泛型
泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。這種參數類型可以用在類、接口和方法的創建中,分別稱為泛型類、泛型接口、泛型方法。
1)泛型類聲明:
創建一個簡單的泛型是非常容易的。首先,在一對尖括號(< >)中聲明類型變量,以逗號間隔變量名列表。在類的實例變量和方法中,可以在任何類型的地方使用那些類型變量。
格式:
class 泛型類名<泛型列表>{
類體
}
泛型類聲明時並不指明泛型列表是什麼類型的數據,可以是任何對象或接口,但不能是基本類型數據。泛型列表處的泛型可以作為類的成員變量的類型、方法的類型以及局部變量的類型。
2)使用泛型類聲明對象:
使用泛型類聲明對象時,必須指定類中使用泛型的具體具體類名,如: Chorus<Student,Button> model model = new Chorus<Student,Button>();
3)泛型接口:
格式:
Interface 泛型接口名<泛型列表>{
接口體
}
小白沒想到書上對於泛型講的這麼多。(唉,不禁為我的菜雞感覺億點悲傷。)
小白實戰中常用的是:
在創建arraylist或者list集合時加泛型
ArrayList<String> listTest = new ArrayList<String>();
這樣限定了創建集合的類型。對於此小白的理解時泛型是在創建list或者arrayList集合時指定集合中的元素是同一種類型。例如你在創建時指定了創建的list集合中只能有String類型的變量,那麼你向其中添加數據時,如果不是String類型的數據,程序在編譯時就會報錯。如果不是用泛型這種錯誤只有在程序運行時才會報錯。而且,泛型讓我們在get獲得集合中的數據時,無需因為類型不同需要強轉而煩惱。
當你向加了泛型的語句中加入不同數據類型的數據時是會報錯的。但如果不加,這種錯誤就只能在程序運行是才報錯。
這次先寫到這裏小白明天接着寫。
Java中容易遺漏的常用的知識點( 二 )(為了和小白一樣馬上要考試的兄弟準備的,希望小白和大家高過不掛)
Java中容易遺漏的常用的知識點( 三 )(為了和小白一樣馬上要考試的兄弟準備的,希望小白和大家高過不掛)
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200607181353317.png#pic_center =240×240)
小白的總結系列二已上線Java中容易遺漏的常用的知識點( 二 )(為了和小白一樣馬上要考試的兄弟準備的,希望小白和大家高過不掛)
兄弟們,小白編寫不易。希望各位兄弟們,點贊評論收藏加關注。小白在此謝謝各位老爺們,也祝福和我一樣面臨考試的兄弟們高分通過。
對於白嫖的兄弟們,
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面
※網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!
※想知道最厲害的網頁設計公司"嚨底家"!
※別再煩惱如何寫文案,掌握八大原則!
※產品缺大量曝光嗎?你需要的是一流包裝設計!