java學習中一些基礎知識(二)


        由於要上班了,而從事的方面與這不是很相關,但是又不准備放棄已有的知識,希望能夠打牢一個基礎,所以還是繼續深入的學習這部分內容,由於各種原因,進度還是很慢,希望在下一階段能夠更好的去學!

51.向下轉型,必須做類型檢查; 52.包含抽象方法的類都是抽象類,抽象類不能實例化對象(可以聲明不包含抽象方法的類來阻止類的實例化,同時如果要實例化可以使用一個匿名類馬上聲明抽象類的方法),如果繼承了抽象類卻沒有定義抽象方法則子類也為抽象類;繼承extends 53.接口實現implements,實現接口必須全部實現其方法,使用接口可以避免方法不在繼承結構中的某個類時使用,能實現多個接口,接口可以繼承接口(避免出現同樣的方法); 54.在接口定義的域都不能是空的final; 55.如果想從外部類的非靜態(static)方法之外得到內部類的對象,必須指明這個對象的類型:OuterClass.InnerClasss,內部類可以訪問外圍類所有成員內部類需要對外部類的引用(外部類.this),外部類要初始化內部類則必須在外部類的實例.new來使用; 56.構造方法必須與類名相同,且不能有返回值;普通方法可以與類名相同,但是要有返回類型或者聲明為void;java中非靜態方法可以調用靜態方法,靜態方法不能直接調用非靜態方法(可以通過對象引用) 57.try(正確代碼)-catch(捕獲異常;不能捕獲error和RuntimeExeception)-finally(不管catch是否執行都會執行當try中沒退出java虛擬機時) 58.內部類向上轉型為基類,或者轉型為接口,能夠隱藏實現細節,所得到的僅僅是指向基類或接口的引用(從實現接口的對象得到對接口的引用與向上轉型為這個對象的基類效果相同) 59.內部類:定義在方法和定義域中;匿名的內部類;嵌套類(static):創建嵌套類的對象不需要通過外圍類,不能從嵌套類中訪問非靜態的外部類;內部類可以置於接口中,並且能實現接口; 60.內部類的繼承有特殊的語法,且導出類不再對外圍類有聯系;內部類的覆蓋;局部內部類與匿名內部類基本相同,前者需要一個構造器而后者通過實例初始化。 61.java容器類包括:Set queue Map List;java中提供的容器都是自動增長類型。使用容器時可以預先指定類型,派生類可以向上轉型成基類同時也能加入,把運行時錯誤轉成編譯期時的;如果不需要每個元素的索引可以使用for each 62.Collection:List必須 按照插入的順序來保存元素,而Set中不能有重復的元素,queue按照排隊規則來確定元素的順序;Map通過鍵值對來關聯(ArrayList則是通過數字與元素的關聯來使用);創建具體類的對象時應該將他轉型接口,然后其他的都使用這個對象; 63.Collection中不同容器有不同實現,實際使用時要考慮;每一個Collection的類都能使用for each去遍歷;可以接收一個數組,一個相同的容器內容,和用“,”分割開的參數列表;當把Arrays.List當做List輸出,則底層為數組不能添加元素; 64.Arrays.<>asList與Collections.addAll()的區別在多層繼承時,前者子類的派生類無法向上轉型到子類的基類,而需要指定類型;后者相對來比較靈活; 65.ArrayList隨機訪問;LinkedList快速插入與刪除; 66.JAVA中的迭代器只能單向移動:1.    使用Iterator()方法要求容器返回一個Iterator,並准備返回序列第一個元素;2.next()方法獲取下一個元素;3.hasnext()檢查是否還有接下去的元素;3.remove()方法刪除返回的元素 67.listIterator()專門為List容器提供的迭代器工具,實現了一些更強大的功能;LinkedList可以向上轉型成Queue先進先出,安全的傳輸;Stack先進后出,注意與內置的棧存在命名沖突; 68.異常的處理:在異常出現后並被捕獲后會將異常的代碼在區別與正常的執行順序的地方執行;自定義的異常通過繼承異常類然后重載構造器來實現自定義的構造器;異常的記錄日志java.util.logging;將可能出現異常的代碼放在try{代碼塊}中,用catch(Exception e) {友好的提示,和打印出錯內容}catch不一定被執行,finally{}一定執行 69.異常的說明:庫開發人員向客戶端開發人員告知可能會拋出的異常throws去訪問;捕獲所有的異常:捕獲基類的異常;getMessage()用來得到有關異常的信息;打印軌跡printStackTrance();重新拋出異常:fillInStackTrace()會成為異常新的點;有些異常被拋出后必須被catch;runtimeexception()是可以不被處理的。 70.finally內部從哪里返回沒有影響;java中可能會出現異常丟失的情況由finally引起所以編程的時候要注意;異常繼承過程中父類的異常可能不會出現在子類中,與接口的繼承相反入口變小了;而且不允許將異常作為函數重載;異常處理時要把范圍小的異常放在前面,把范圍大的放在后面;throws 在方法定義階段拋出異常,throw則是拋出異常的對象,用於在方法內輸出信息給捕獲,同時throw只能拋出一個異常類型; 71.在構造階段出錯也要考慮拋出異常,而這時用運行中的異常則會出現問題;要用try-finally塊去處理;異常匹配可以用基類去匹配;並且是從最近的處理程序去尋找;finally提供異常的出口,做資源的清理;良好的編程習慣捕獲的異常必須的到處理; 72.自定義異常的方法,通過繼承java.lang.Exception來聲明異常;在方法適當位置生成自定義異常的實例,並用throw拋出;在方法的聲明部分用throws來聲明方法可能會拋出的異常;重寫方法需要拋出和父類一樣的異常,或者不拋出異常;異常類有兩個構造器,一個是默認構造器,一個是帶錯誤信息(字符串的); 73.java支持的異常模式是終止行,當異常被拋出時,程序終止,如果需要執行,則需要將業務邏輯寫在finally里;在捕獲異常后可以重新拋出,給上一級全部異常的信息,后續的catch將不被執行;要更新新拋出異常的地點需要使用fillInStackTrace()這個方法,而前一個異常將會被jvm回收; 74.對於構造階段就可能出現異常並且需要清理的需要使用嵌套的try,來進行捕獲和處理; 75.String作為參數只改變引用,而不改變參數值;如果知道字符串的長度,且需要用toString()循環的話使用StringBuilder()會更好。 76.String用於操作少量數據,StringBuilder用來操作單線程緩沖區下的大量數據,StringBuffer用來多線程緩沖區下大量數據;速度的話StringBuilder>StringBuffer; 77.Object類提供了toString()方法,有時候碰到String對象會發生無意識遞歸,自動強制類型轉換,若要打印內存地址,需要使用到父類的Object.toString()方法


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com