《Head first JAVA》知識(shí)總結(jié)

  1. 對象存放的位置是
  2. 可以把變量想象成杯子,主數(shù)據(jù)類型的變量直接以字節(jié)的形式存放其中,引用變量是防止遙控器(指向?qū)嶋H存放地址)
  3. 數(shù)組也是對象
  4. java通過拷貝的方式進(jìn)行值傳遞,就是將杯子復(fù)制一份。所以如果入?yún)橹鲾?shù)據(jù)類型,則變量在方法結(jié)束之后不發(fā)生改變;如果入?yún)橐米兞浚玫膶ο髸?huì)改變(復(fù)制的是引用值,指向同一個(gè)對象)
  5. 實(shí)例變量有默認(rèn)值,局部變量沒有,因此局部變量必須初始化
  6. List & ArrayList
    List:創(chuàng)建時(shí)要確定大??;通過指定位置的方式存入對象
    ArrayList:創(chuàng)建時(shí)不用確定大??;通過add()存放對象
  7. ArrayList只能存放Object,因此輸入的數(shù)據(jù)會(huì)被包裝成Object,當(dāng)從ArrayList取出時(shí),需要強(qiáng)制轉(zhuǎn)換,才能回到原本類型。
  8. 對于繼承,子類的方法需要不低于父類方法的開放權(quán)限,如父類是protected,子類為protected,public,不能為private。
  9. 子類可以繼承和實(shí)現(xiàn)接口class C extends A implements B
  10. 構(gòu)造函數(shù)沒有返回類型,構(gòu)造函數(shù)可以重載(一個(gè)類可以有多個(gè)構(gòu)造函數(shù)應(yīng)對應(yīng)不同入?yún)⒘斜恚瑯?gòu)造函數(shù)的開放權(quán)限可以是公有或者私有。
  11. super()是調(diào)用父類構(gòu)造函數(shù)的唯一方法(默認(rèn)存在),必須位于函數(shù)方法塊內(nèi)的第一行,因此構(gòu)造函數(shù)在執(zhí)行時(shí)的首要任務(wù)時(shí)執(zhí)行父類的構(gòu)造函數(shù)()
  12. this()是只能存在于構(gòu)造函數(shù)中,是從某個(gè)構(gòu)造函數(shù)調(diào)用同類的另一個(gè)構(gòu)造函數(shù),必須位于第一行。所以每個(gè)構(gòu)造函數(shù)只能選擇this()或者super()中的一種
  13. 靜態(tài)方法 & 非靜態(tài)方法
    靜態(tài)方法:不涉及到實(shí)例變量;用類的名詞進(jìn)行調(diào)用
    非靜態(tài)方法:涉及實(shí)例變量;用引用對象的名詞進(jìn)行調(diào)用
  14. 靜態(tài)變量(用state標(biāo)記)存在于類中,被類的所有實(shí)例共享,在任何靜態(tài)方法執(zhí)行或者類實(shí)例化之前完成初始化。
  15. 如果類只有靜態(tài)方法,將構(gòu)造函數(shù)標(biāo)為private從而避免被初始化。
  16. 對于可能出現(xiàn)異常的方法,必須進(jìn)行處理,否則程序終止。處理的方法有:
  • 在方法聲明中拋出(throw)異常,拋出的是一個(gè)異常對象
  • 在方法塊中利用try...cathc對異常進(jìn)行處理,try中包含可能出現(xiàn)異常的程序
  1. 編譯器會(huì)對首個(gè)符合條件的異常塊(catch塊)進(jìn)行處理,因此catch塊的順序遵循從下到上的原則,即先子類再父類異常。
  2. 內(nèi)部類可以使用外部類的所有方法和變量,包括私有的屬性
  3. 序列化(serializable)是全有或者全無的(一旦某個(gè)環(huán)節(jié)序列化失敗則全部失效),可以通過transient跳過某些無法序列化的變量
  4. 將對象寫入文件
FileOutputStream filestream = new FileOutputStream("filename"); //寫入文件
ObjectOutputStream os = new ObjectOutputStream(filestream); //對象序列化
os.writeObject(Object one);
os.close()
image.png
  1. 從文件中讀取對象
FileInputStream filestream = new FileInputStream("filename"); //讀取文件
ObjectInputStream os = new ObjectInputStream(filestream); //對象反序列化
os.readObject();
os.close()
  1. 父類實(shí)現(xiàn)序列化,則子類也自動(dòng)序列化;父類無法序列化不代表子類無法序列化。
  2. 靜態(tài)變量不會(huì)被序列化
  3. 啟動(dòng)新線程
Runnable threadJob = new Runnable();
Thread mythread = new Thread(threadJob);
mythread.start();
  1. Runnable中只有一個(gè)run()函數(shù),用于說明線程的具體工作。
  2. 用指定類型的ArrayList作為函數(shù)入?yún)r(shí),無法傳入子類的ArrayList集合(這是與單個(gè)對象作為入?yún)⒌膮^(qū)別),如定義入?yún)锳rrayList<Animal>,卻傳入ArrayList<Dogs>,會(huì)在運(yùn)行期間報(bào)錯(cuò)。處理方法有
  • 泛型方法 public < T extends Animals> void fun(ArrayList<T> list)
  • 萬用字符 public void fun(ArrayList<? extends Animal> list)
    泛型方法通過T extends Animals指明可以輸入Animal的子類,萬用字符則利用? extends Animal規(guī)定不讓任何對象加入集合中,從而使得ArrayList<Dogs>也能作為入?yún)ⅰ?/li>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容