更新時間:2022-06-07 11:12:04 來源:動力節(jié)點 瀏覽1374次
動力節(jié)點小編來給大家進行Java基礎(chǔ)教程部分知識點總結(jié)。
基本類型:基本類型的變量“持有”一個值;引用類型:引用類型的變量“指向”一個對象。
基本數(shù)據(jù)類型是CPU可以直接進行運算的類型。Java中的基本數(shù)據(jù)類型有:
整數(shù)類型:byte short int long
浮點類型:浮點雙
字符類型:字符
布爾類型:布爾
==判斷兩個變量或?qū)嵗欠裰赶蛲粋€內(nèi)存空間,equals判斷兩個變量或?qū)嵗欠裰赶蛲粋€內(nèi)存空間
==比較內(nèi)存地址并等于內(nèi)容
跳出當(dāng)前循環(huán),繼續(xù)提前結(jié)束這個循環(huán),繼續(xù)執(zhí)行下一個循環(huán)。
面向?qū)ο?/p>
面向?qū)ο缶幊淌且环N通過對象的方式將現(xiàn)實世界映射到計算機模型的編程方法。
類是一個對象模板,它定義了如何創(chuàng)建一個實例。Instance是一個對象實例,是根據(jù)類創(chuàng)建的。
基本類型的參數(shù)傳遞是指調(diào)用者的值的拷貝,雙方后續(xù)修改互不影響;引用類型的參數(shù)傳遞指的是同一個對象,任何一方修改該對象都會影響另一方。
構(gòu)造函數(shù)用于初始化實例。如果一個類沒有定義構(gòu)造函數(shù),編譯器會自動為我們生成一個默認(rèn)構(gòu)造函數(shù)。如果定義了構(gòu)造函數(shù),編譯器將不再自動創(chuàng)建默認(rèn)構(gòu)造函數(shù)。注意:在Java中,對于任何類的構(gòu)造函數(shù),第一行語句必須是調(diào)用父類的構(gòu)造函數(shù)。如果父類的構(gòu)造函數(shù)沒有顯式調(diào)用,編譯器會自動為我們添加一個super()。
方法名相同,但參數(shù)不同,稱為方法重載。方法重載的目的是功能相似的方法使用相同的名稱,這樣更容易記憶,更容易調(diào)用。
在繼承關(guān)系中,如果子類定義了與父方法簽名相同的方法,則稱為override。
繼承是面向?qū)ο缶幊讨幸环N非常強大的機制,可以重用代碼。Java只允許一個類繼承一個類,所以一個類只有一個父類。只有對象是特殊的。它沒有父類。子類不能訪問父類的私有字段或私有方法。子類不會繼承父類的任何構(gòu)造方法。子類的默認(rèn)構(gòu)造方法是編譯器自動生成的,不是繼承的。
多態(tài)性意味著對于一種方法調(diào)用,它執(zhí)行的真正方法取決于運行時方法的實際類型。多態(tài)有一個非常強大的功能,就是在不修改父類的代碼的情況下,允許添加更多類型的子類來實現(xiàn)功能擴展。
用 abstract 裝飾的類是抽象類。無法實例化抽象類。將方法聲明為抽象意味著它是一個抽象方法,并且不實現(xiàn)任何方法語句。抽象類本身被設(shè)計為僅用于繼承。抽象類可以強制子類實現(xiàn)其定義的抽象方法,否則編譯會報錯。因此,一個抽象的方法實際上相當(dāng)于定義一個“規(guī)范”。
非抽象方法可以定義在抽象類中。
如果抽象類沒有字段且所有方法都是抽象方法,則可以將其重寫為接口。所謂接口就是比抽象類更抽象的純抽象接口,因為它甚至不能有字段。因為接口定義的所有方法默認(rèn)都是public abstract,所以這兩個修飾符不需要寫出來。
一個類可以實現(xiàn)多個接口。
在接口中可以定義默認(rèn)方法,實現(xiàn)類不能覆蓋默認(rèn)方法。默認(rèn)方法的目的是當(dāng)你需要向接口添加方法時,它涉及到修改所有子類。如果添加了默認(rèn)方法,那么子類不需要完全修改,只需要在需要重寫的地方重寫新方法。
final修飾類可以防止繼承;
final修飾的方法可以防止被重寫;
最終的裝飾屬性必須在創(chuàng)建對象時初始化,以后不能修改。
靜態(tài)修飾的成員變量和方法,從屬于類
公共變量和方法從屬于對象
靜態(tài)方法不能調(diào)用非靜態(tài)成員,編譯會報錯
實例對象之所以可以訪問靜態(tài)字段,只是因為編譯器可以根據(jù)實例類型自動將其轉(zhuǎn)換為類名和靜態(tài)字段。建議使用類名訪問靜態(tài)字段。
方法中定義的變量稱為局部變量,局部變量的作用域從變量聲明開始,到對應(yīng)的塊結(jié)束。方法參數(shù)也是局部變量。
字符串由字符串內(nèi)部的 char [] 數(shù)組表示,
Java 字符串的一個重要特性是它們是不可變的。
public class Main {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
從比較結(jié)果來看,兩者都是正確的。這是因為java編譯器在編譯時會自動將所有相同的字符串作為對象放入常量池中。當(dāng)然,S1 和 S2 的引用是相同的。
所以這個 = = 比較返回 true 是一個巧合。換一種方式, = = 比較會失敗:
public class Main {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "HELLO".toLowerCase();
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
為什么是真假?原因是 to lowercase(),它將 S2 指向一個變?yōu)樾懙淖址?/p>
StringBuilder 是一個變量對象,可以預(yù)先分配緩沖區(qū),這樣在 StringBuilder 中添加字符時,不會創(chuàng)建新的臨時對象。
StringBuffer 是 Java 早期 StringBuilder 的線程安全版本。它通過同步保證了多線程操作StringBuffer是安全的,但是同步會導(dǎo)致執(zhí)行速度的下降。
自動裝箱和拆箱只發(fā)生在編譯階段,以減少代碼編寫;
裝箱和拆箱會影響代碼的執(zhí)行效率,因為編譯出來的類代碼嚴(yán)格區(qū)分了基本類型和引用類型。此外,在自動拆箱過程中可能會報告 NullPointerException。
Java使用enum定義枚舉類型,編譯器編譯為final class XXX extends enum { }
enum枚舉類型是引用類型;
每個枚舉類型的常量在JVM中只有一個唯一的實例,所以可以直接用==來比較。
定義的枚舉類型總是繼承自java.lang.enum,不能被繼承;
只能定義 enum 的實例,但不能通過 new 運算符創(chuàng)建 enum 的實例;
Throwable是異常系統(tǒng)的根,繼承自object。Throwable 有兩個系統(tǒng):錯誤和異常。Error表示嚴(yán)重錯誤,程序一般無能為力。異常是運行時錯誤,可以被捕獲和處理。
Java的反射意味著程序可以在運行時獲取一個對象的所有信息。因為JVM會為每個加載的類創(chuàng)建一個對應(yīng)的類實例,并在實例中保存該類的所有信息,包括類名、包名、父類、實現(xiàn)的接口、所有方法、字段等,如果我們得到一個類實例,我們可以通過這個類實例獲取該實例對應(yīng)的類的所有信息。這種通過類實例獲取類信息的方法稱為反射。
注釋是一種用作注釋的“元數(shù)據(jù)”。注解的本質(zhì)是一個繼承注解接口的接口。
泛型的本質(zhì)是對類型進行參數(shù)化(不創(chuàng)建新類型,通過泛型指定的不同類型來控制參數(shù)具體限制的類型)。也就是說,在使用泛型的過程中,將操作的數(shù)據(jù)類型指定為參數(shù)。這種參數(shù)類型可以用在類、接口和方法中,分別稱為泛型類、泛型接口和泛型方法。
以上就是關(guān)于“Java基礎(chǔ)部分知識點總結(jié)”的介紹,大家如果想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門到精通,細致全面,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對大家能夠有所幫助。
相關(guān)閱讀