可分為:
RuntimeException:
執行時異常(戰之過,程式設計師的過錯),也叫做unchecked Exception, 非編譯期異常(編譯器檢查不出來,只有執行時才能顯現出來的異常,叫做非編譯異常,或者執行時異常,一般是由於程式設計師邏輯錯誤引起的,如空指標異常,陣列越界異常等,所以稱之為戰之過)
Exception中除了RuntimeException之外的所有異常,比如IOException,SQLException等
非執行時異常(非戰之過),也叫做檢查異常(check Exception) ,編譯異常(編譯期可以檢查出來的異常,不需要執行就可以檢測到的異常,比如IOException,SQLException,等預期之內的異常,因為可以預料到,因此是必須檢查的異常,所以,也叫做check Exception)
常見的,IOException,SQLException,等所有繼承與Exception,但是不繼承與RuntimeException的,都屬於非執行時異常,是必須在編寫程式的時候就要throw的
所有繼承與RuntimeException的,都是程式設計師邏輯錯誤引起的異常,比如空指標異常等,是unchecked Exception
注意,只能被static或者default之一修飾,如果被static和default同時修飾,就會報錯 private: 只在本類內部具有可見性
public: 在所有地方都可見
特殊記憶:
protected(3個可見性): 本類,子類,包內
default(2個可見性): 比protected訪問性差,只有在本類和包內可見,對子類不可見
protected和deault就差一個對子類的可見性,protected比default開放,所以protected對子類是可見的
只有private不具有包內可見性,其餘的,都至少有兩種訪問許可權
private,dafault,protected,public的訪問許可權,分別為 1,2,3,4
對子類,只有public和protected是可見的,private和default是不可見的 InputStream , OutputStream , 輸入流,輸出流 的區分方法:
檔案傳輸的時候,相當於File 與 程式 之間的一個對話, input和output都是相對於程式本身來說的:
如果說從檔案中讀取內容,以程式作為參考系,就是輸入,也就是需要輸入流InputStream
反之,如果說向檔案中寫入內容,以程式作為參考系,就是輸出,也就是需要輸出流OutputStream
基本型別間的相互轉換:
char->int
byte-> short -> int ->long
long->float->double
或者 long->double
boolean不可以轉換成其他基本型別
serialize 將java物件序列化為二進位制檔案
Math.round()有兩個API,一個是: int round(float f),另一個是long round(double d) ,注意返回值
round的計算方式是 +0.5 然後向下取整:
Math.round(a) == Math.floor(a+0.5); java沒有指標的概念
java不支援操作符過載
操作符過載就是把操作符(比如'+,-,*,/'這些運算子)賦於新的意義。C++支援操作符過載
String a = new String("string1");
a += "well"; 的執行過程
a = new StringBuffer(a).append("well").toString; abstract方法必須被實現
final使用前必須初始化,且 final變數的初始化只有三種方式: 宣告時初始化 ,或者建構函式中初始化,或者在程式碼塊中初始化,不能在普通方法中對final進行使用前的初始化 由-n = ~n + 1 可知,~n = -n -1 ,所以~j = -11
公共類,如果是公共內部類的話,是不需要與檔名相同的 default不能修飾變數,可以修飾方法,但是也不能顯示的寫在方法前面 for迴圈中會丟擲異常,然後進入finally塊,然後直接停止執行被呼叫的test()方法,進入到呼叫方法的catch()語句,而不會繼續進行for迴圈 Vector和Stack是List,而不是Set Semaphore 是訊號量,用於限制一個資源的最大同時訪問執行緒個數
CyclicBarrier(屏障): 讓多個執行緒到達一個屏障(同步點)的時候被阻塞,直到最後一個執行緒到達了,屏障才會開啟,幾個執行緒再同時執行
CountDownLatch: 倒數鎖: 一個執行緒,在等待另外的一組執行緒完成後才能開始執行
CyclicBarrier與CountDownLatch的區別:
CyclicBarrier是所有執行緒都等待,然後一起執行,就像小學生放學
CountDownLatch是等所有執行緒都執行完某一個動作,然後才允許另外的執行緒執行
CountDownLatch的計數器只能使用一次,而CyclicBarrier中的計數器可以通過reset()重置
Counter不是併發程式設計的同步器 1,只有靜態內部類才能有靜態方法
2,靜態內部類(不論是靜態內部類中的普通方法還是靜態方法)不能訪問外部類中的非靜態屬性
3,抽象方法不能有方法體