Java基礎知識匯總(一)

Java基礎知識

一.final 與 Static

  • public static final 類常量窿吩,在類內(nèi)部多個方法中可用茎杂,若為public 在其他類當中也可用
  • 靜態(tài)數(shù)據(jù)區(qū)不屬于堆,當然更不屬于對象纫雁,在靜態(tài)數(shù)據(jù)區(qū)
  • 如果編譯器能夠在編譯階段確定某變量的值煌往,那么編譯器就會把該變量當做編譯期常量來使用
  • 靜態(tài)方法在類加載的時候就存在了,它不依賴于任何實例
  • 只能訪問所屬類的靜態(tài)字段和靜態(tài)方法轧邪,方法中不能有 this 和 super 關(guān)鍵字

二.java緩存池

1. 涉及知識點

  • 自動裝箱與拆箱
  • 聲明方法及值的比較
  • 整型(I刽脖,S,L忌愚,Character曲管,Byte有緩存池,浮點型沒有
  • 緩存池的大小

2. 參考文章

三.String 以及 StringPool

1.涉及知識點

  • 生成的過程硕糊,new的話若pool里沒有院水,會自動添加到pool但是返回的還是堆里的地址
  • 向string pool添加的過程
  • 常量計算
  • intern方法的使用
  • 不會被GC回收
  • 字符串是常量,字符串池中的每個字符串對象只有唯一的一份简十,可以被多個引用所指向檬某,避免了重復創(chuàng)建內(nèi)容相同的字符串;通過字面值賦值創(chuàng)建的字符串對象存放在字符串池中螟蝙,通過關(guān)鍵字new出來的字符串對象存放在堆中恢恼。
String a = "hello";
string b = "lo";
System.out.println(a == "hel"+b); //false  在運行時通過連接計算出的字符串是新創(chuàng)建的,因此是不同的
System.out.println(a == "hel"+"lo");//true  由常量表達式計算出的字符串是在編譯時進行計算,然后被當作常量
/**
* string 與 final
* final修飾的b相當于常量胰默,是在編譯時就確定的场斑,所以b和d指向的是StringPool當中的同一個字符串
* 所以在計算c的時候,相當于常量表達式九三得到的值初坠,所以也是StringPool當中的“hello2”和簸,與a相同
* 而e則是在棧中通過連接新建的字符串
*/
public static void name() {
        String a = "hello2";  
        final String b = "hello";
        String d = "hello";
        String c = b + 2;  
        String e = d + 2;
        System.out.println((a == c));
        System.out.println((a == e));
    }
  • string 不可變,線程安全
  • stringBuffer 線程安全碟刺,內(nèi)部使用 synchronized 進行同步
  • stringBuider 線程不安全

2.參考文章

四.參數(shù)傳遞

1. 涉及知識點

  • java的傳參是call by value
  • 對于基本數(shù)據(jù)類型锁保,是在棧里復制一份
  • 對于對象的引用,在棧里復制的是對象的引用,形參可以修改對象當中的參數(shù)爽柒,當指向新的對象吴菠,則與原實無關(guān)

2. 參考文章

五. 繼承

1.涉及知識點

  • super調(diào)用父類同名變量及方法,顯示調(diào)用父類構(gòu)造器
  • 父類的構(gòu)造器調(diào)用以及初始化過程一定在子類的前面
  • 父類和子類的class文件都載入到內(nèi)存浩村,當父類和子類有Static時做葵。先初始化Static,再初始化子類的Static心墅,再初始化父類的其它成員變量->父類構(gòu)造方法->子類其它成員變量->子類的構(gòu)造方法酿矢。
  • 如果是final方法,private 方法怎燥,static方法瘫筐,則不會進行動態(tài)綁定,知道調(diào)用哪一個方法
  • 其他方法會進行動態(tài)綁定铐姚,則會根據(jù)類型選擇合適的方法
  • 成員變量進行初始化過程如下:默認初始化-> 顯示初始化 -> 構(gòu)造方法初始化
  • 靜態(tài)代碼塊 > 構(gòu)造代碼塊 > 構(gòu)造方法
  • 先進行父類初始化策肝,然后進行子類初始化
  • 父類(靜態(tài)變量、靜態(tài)語句塊)
  • 子類(靜態(tài)變量隐绵、靜態(tài)語句塊)
  • 父類(實例變量之众、普通語句塊)
  • 父類(構(gòu)造函數(shù))
  • 子類(實例變量、普通語句塊)
  • 子類(構(gòu)造函數(shù))

2.參考文章

六.重寫與重載

1.知識點

  • this.show(O)
  • super.show(O)
  • this.show((super)O)
  • super.show((super)O)
  • 其中若B繼承A,然后有A a2 = new B(); 則a2保存的是B的引用峭跳,但是a2的類型是A帘睦,this指向的也是A

2.文章

習題解答
隱藏與覆蓋
隱藏與覆蓋最好的解釋版本

七.equals()與hashCode()

1.知識點

  • 對于基本類型,== 判斷兩個值是否相等坦康,基本類型沒有 equals() 方法。
  • 對于引用類型诡延,== 判斷兩個變量是否引用同一個對象滞欠,而 equals() 判斷引用的對象是否等價。
  • 檢查是否為同一個對象的引用肆良,如果是直接返回 true筛璧;
  • 檢查是否是同一個類型,如果不是惹恃,直接返回 false夭谤;
  • 將 Object 對象進行轉(zhuǎn)型;
  • 判斷每個關(guān)鍵域是否相等巫糙。
  • 在覆蓋 equals() 方法時應當總是覆蓋 hashCode() 方法朗儒,保證等價的兩個對象散列值也相等。

7.clone

1.知識點

  • 克隆方法用于創(chuàng)建對象的拷貝,為了使用clone方法醉锄,類必須實現(xiàn)java.lang.Cloneable接口重寫protected方法clone乏悄,如果沒有實現(xiàn)Clonebale接口會拋出CloneNotSupportedException.
  • 在克隆java對象的時候不會調(diào)用構(gòu)造器
  • java提供一種叫淺拷貝(shallowcopy)的默認方式實現(xiàn)clone,創(chuàng)建好對象的副本后然后通過賦值拷貝內(nèi)容恳不,意味著如果你的類包含引用類型檩小,那么原始對象和克隆都將指向相同的引用內(nèi)容,這是很危險的烟勋,因為發(fā)生在可變的字段上任何改變將反應到他們所引用的共同內(nèi)容上规求。為了避免這種情況,需要對引用的內(nèi)容進行深度克隆卵惦。
  • 使用 clone() 方法來拷貝一個對象即復雜又有風險阻肿,它會拋出異常,并且還需要類型轉(zhuǎn)換鸵荠。Effective Java 書上講到冕茅,最好不要去使用 clone(),可以使用拷貝構(gòu)造函數(shù)或者拷貝工廠來拷貝一個對象蛹找。

2. 文章

clone講解

八.反射

1.知識點

  • 反射的核心是 JVM 在運行時才動態(tài)加載類或調(diào)用方法/訪問屬性姨伤,它不需要事先(寫代碼的時候或編譯期)知道運行對象是誰
  • Java反射的主要功能
    • 在運行時判斷一個對象所屬的類,instanceof
    • 在運行時構(gòu)造任意類的對象庸疾,使用Class對象的newinstance方法構(gòu)造Object對象
    • 判斷一個類所具有的成員變量和方法乍楚,getMethods,getDeclaredMethods届慈,getFields徒溪,getDeclaredMethods
    • 在運行時調(diào)用任意一個對象的方法

九.泛型

1.知識點

  • 什么是泛型以及泛型的好處:操作的數(shù)據(jù)類型被指定為一個參數(shù),這種參數(shù)類型可以用在類金顿、接口和方法中臊泌,分別被稱為泛型類、泛型接口揍拆、泛型方法渠概。
  • 類型擦除: Java 的泛型在編譯器有效,在運行期被刪除嫂拴,也就是說所有泛型參數(shù)類型在編譯后都會被清除掉
    • 泛型數(shù)組初始化時不能聲明泛型類型
    • instanceof()不允許使用泛型參數(shù)
    • 泛型的class都是相同的播揪,例如:
    List<String> ls = new ArrayList<String>();  
    List<Integer> li = new ArrayList<Integer>();  
    System.out.println(ls.getClass() == li.getClass());  //true
  • 類型參數(shù)并不能用來創(chuàng)建對象或是作為靜態(tài)變量的類型
  • 泛型的限定通配符以及非限定通配符 PECS原則,帶有超類的通配符可以向泛型當中寫入筒狠,帶有子類型限定的通配符可以從泛型對象讀取
  • 利用類型參數(shù)創(chuàng)建實例的做法編譯器不會通過

2.相關(guān)文章

十.注解

1.知識點

  • 定義該Annotation時使用了@Retention和@Target兩個系統(tǒng)元注釋辩恼,其中@Retention注釋指定Test注釋可以保留多久雇庙,@Target注釋指定Test注釋能修飾的目標(只能是方法)
  • 僅僅使用注釋來標識程序元素對程序是不會有任何影響的谓形,這也是Java注釋的一條重要原則
  • 標記Annotation 程序通過判斷該Annotation來決定是否運行指定方法,沒有任何成員變量
  • 元數(shù)據(jù)Annotation 簡化事件編程
  • 注解更像是一種特殊的接口状共,注解的屬性定義方式就和接口中定義方法的方式一樣套耕,而應用了注解的類可以認為是實現(xiàn)了這個特殊的接口

2.相關(guān)文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市峡继,隨后出現(xiàn)的幾起案子冯袍,更是在濱河造成了極大的恐慌,老刑警劉巖碾牌,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件康愤,死亡現(xiàn)場離奇詭異,居然都是意外死亡舶吗,警方通過查閱死者的電腦和手機征冷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來誓琼,“玉大人检激,你說我怎么就攤上這事「孤拢” “怎么了叔收?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長傲隶。 經(jīng)常有香客問我饺律,道長,這世上最難降的妖魔是什么跺株? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任复濒,我火速辦了婚禮,結(jié)果婚禮上乒省,老公的妹妹穿的比我還像新娘巧颈。我一直安慰自己,他們只是感情好袖扛,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布洛二。 她就那樣靜靜地躺著,像睡著了一般攻锰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妓雾,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天娶吞,我揣著相機與錄音,去河邊找鬼械姻。 笑死妒蛇,一個胖子當著我的面吹牛机断,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绣夺,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼吏奸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了陶耍?” 一聲冷哼從身側(cè)響起奋蔚,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烈钞,沒想到半個月后泊碑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡毯欣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年馒过,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酗钞。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡腹忽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出砚作,到底是詐尸還是另有隱情窘奏,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布偎巢,位于F島的核電站蔼夜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏压昼。R本人自食惡果不足惜求冷,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窍霞。 院中可真熱鬧匠题,春花似錦、人聲如沸但金。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冷溃。三九已至钱磅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間似枕,已是汗流浹背盖淡。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凿歼,地道東北人褪迟。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓冗恨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親味赃。 傳聞我的和親對象是個殘疾皇子掀抹,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容