課本知識總結
第七章 內部類與異常類
- 外嵌類:包含內部類的類稱爲內部類的外嵌類
- 兩者關係:
- 內部類的外嵌類的成員變量在內部類中仍然有效,內部類中的方法也能夠調用外嵌類中的方法。
- 內部類的類體中不能夠聲明類變量和類方法。外嵌類的類體中能夠用內部類聲明對象,做爲外嵌類的成員。
- 內部類僅供它的外嵌類使用,其餘類不能夠用某個類的內部類聲明對象。
- 內部類能夠修飾爲static內部類
- static內部類不能操做外嵌類中的實例成員變量
- 內部類對應的字節碼文件名字格式:外嵌類名$內部類名
- 匿名類:一個子類去掉聲明後類體
- 若是某個方法的參數是接口類型,那麼可使用接口名和類體組合建立一個匿名對象傳遞給方法的參數,類體必需要重寫接口中的所有方法。
- 異常類:即程序運行時可能出現的一些錯誤
- try-catch語句(處理異常),格式以下:
try {
包含可能發生異常的語句
}
catch(ExceptionSubClass e) {
...
}
catch(ExceptionSubClass e) {
...
}
- 自定義異常類
一個方法在聲明時可用相應的異常類建立對象,並使用throw關鍵字拋出該異常對象,致使該方法結束執行。java
程序必須在try-catch塊語句中調用可能發生異常的方法,其中catch的做用就是捕獲throw關鍵字拋出的異常對象。正則表達式
- 語法格式:
assert booleanExpression;
assert booleanExpression:messageException;
- 啓用斷言語句:
java -ea mainClass
關閉斷言語句:當使用Java解釋器直接運行應用程序時,默認地關閉斷言語句數組
第十章 輸入、輸出流
- 構造File對象
- File(String filename);
- File(String directoryPath,String filename);
- File(File dir,String filename);
- 文件屬性
- 建立目錄:public boolean mkdir();
- 建立文件:public boolean createNewFile();
- 刪除當前文件:file.delete();
- 使用Runtime類執行可執行文件
- 使用步驟:
- 設定輸入流的源
- 建立指向源的輸入流
- 讓輸入流讀取源中的數據
- 關閉輸入流
- 構造方法:
FileInputStream(String name);
FileInputStream(File file);
- 關閉流:close()
- 使用步驟:
- 給出輸出流的目的地
- 建立指向目的地的輸出流
- 讓輸出流把數據寫入到目的地
- 關閉輸出流
- 構造方法:
FileOutputStream(String name);
FileOutputStream(File file);
- 關閉流:經過調用close()方法
- 緩衝流:BufferedReader和BufferedWriter類建立的對象
- 構造方法分別爲:
BufferedReader(Reader in);
BufferedWriter (Writer out);
- BufferedReader流可以讀取文本行,方法是readLine()
- 隨機流:RandomAccessFile類建立的流
RandomAccessFile(String name,String mode)
參數mode 取r(只讀)或rw(可讀寫),決定建立的流對文件的訪問權利。dom
RandomAccessFile(File file,String mode)
- 流可調用getFilePointer()方法獲取流的當前讀寫位置
- 數組流
- 字節數組流:
- 輸入流:ByteArrayInputStream(byte[] buf);ByteArrayInputStream(byte[] buf,int offset,int length);
- 輸出流:ByteArrayOutputStream();ByteArrayOutputStream(int size);
- 字符數組流:CharArrayReader和CharArrayWriter類
- 數據流
- 數據輸入流:DataInputStream
- 數據輸出流:DataOutputStream
- 對象流
- 對象輸入流:ObjectInputStream(InputStream in)
- 對象輸出流:ObjectOutputStream(OutputStream out)
- 使用Scanner解析文件
- 使用默認分隔標記解析文件:建立Scanner對象,並指向要解析的文件
File file = new File("hello,java");
Scanner sc = new Scanner(file);
2.使用正則表達式做爲分隔標記解析文件:建立Scanner對象,並指向要解析的文件,並使用useDelimiter方法指定正則表達式做爲分隔標記code
File file = new File("hello.java");
Scanner sc = new Scanner(file);
sc.useDelimiter(正則表達式);
- 帶進度條的輸入流:可使用javax.swing包提供的輸入類流ProgressMonitorInputStream。
ProgressMonitorInputStream(Component c,String s,InputStream);
- 先使用RandomAccessFile流創建指向文件的流對象,該對象的讀寫屬性必須是rw
RandomAccessFile input=new RandomAccessFile("Example.java","rw");
- input流調用方法getChannel()得到一個鏈接到底層文件的FileChannel對象(信道)
FileChannel channel=input.getChannel();
- 信道調用tryLock()或lock()方法得到一個FileLock(文件鎖)對象,這一過程也稱做對文件加鎖
FileLock lock=channel.tryLock();
- 對一個文件加鎖後,若是想讀寫,寫文件必須讓FileLock對象調用release()釋放文件鎖
lock.release();
代碼託管
上週錯題總結
-
解析:B項:用+表示public,用-表示private。D項:由子類指向父類。對象
-
解析:用類聲明的變量稱爲對象。blog
-
解析:C項:NullPointerException異常。E項:若引用相同,則具備徹底相同的實體。接口
-
解析:A項:圓錐對象委託圓對象調用getArea()方法計算底的面積。文檔
-
解析:B項:前後順序爲package、import、class。C項:不能夠太過簡單,起碼要標註包的名稱。D項:見API文檔介紹。get
-
解析:Integer類型的對象包含一個int類型的字段,Integer會自動拆箱爲int,所以值相等。