20165211 2017-2018-2 《Java程序設計》第5周學習總結

20165211 2017-2018-2 《Java程序設計》第5周學習總結

教材學習內容總結

本週,我學習了書本上第5、六兩章的內容,如下是我整理的主要知識。java

第五章 內部類與異常類

內部類

類的兩個重要成員:成員變量和方法。除此以外還能夠有一種成員:內部類!git

內部類:在一個類中定義另外一個類正則表達式

外嵌類:包含內部類的類數組

內部類和外嵌類的關係:外嵌類的成員變量在內部類仍然有效,內部類中的方法也能夠調用外嵌類中的方法。app

​ 內部類中的類體不能夠聲明類變量和類方法。外嵌類的類體能夠用內部類聲明對象dom

​ 內部類僅供它的外嵌類使用編輯器

Java編輯器生成的內部類的字節碼名字格式外嵌類名$內部類名學習

內部類能夠被修飾爲static內部類,可是,static內部類不能操做外嵌類中的實例成員變量,非內部類不能夠是static類設計

匿名類
2.1 和子類有關的匿名類

沒有顯示的定義一個類的子類,而又想用子類建立一個對象,能夠直接使用一個類的子類的類體建立一個子類對象3d

不能用匿名類聲明對象,可是卻能夠直接用匿名類建立一個對象。匿名類對象的引用能夠傳遞給一個匹配的參數。

匿名類的特色:

  • 匿名類亦可繼承父類的方法,也能夠重寫父類的方法。
  • 匿名類必定是內部類
  • 匿名類能夠訪問外嵌類中的成員變量和方法,匿名類的類體中不能夠申明static成員變量和方法
  • 用匿名類建立對象時,要直接使用父類的構造方法
2.2 與接口有關的匿名類

沒有顯示的定義一個實現接口類,而又想實現該接口的類建立一個對象。

異常類

異常:程序運行時可能出現的一些錯誤

3.1 try-catch語句
try {
    包含可能發生異常的語句
}
catch(ExceptionSubClass1 e){
    ...
}
catch(ExceptionSubClass2 e){
    ...
}
3.2 自定義異常類

一個方法在申明是可使用throws關鍵字聲明要產生的若干個異常,並在該方法的方法體中具體給出產生異常的操做,即用相應的異常類建立對象。

斷言

assert booleanExpression,assert booleanExpression:messageException

啓用或關閉斷言語句:java -ea mainClass

第10章 接口與實現

File類
文件的屬性
public String getName() 獲取文件的名字
public boolean canRead() 判斷文件是否可讀
public boolean canWrite() 判斷文件是否可被寫入
public boolean exists() 判斷文件是否存在
public long length() 獲取文件的長度
public String getAbsolutePath() 獲取文件的絕對路徑
public String getParent() 獲取文件的父目錄
public boolean isFile() 判斷文件是不是一個普通文件
public boolean isDirectory() 判斷文件是不是一個目錄
public boolean isHidden() 判斷文件是不是隱藏文件
public long lastModified() 獲取文件最後修改的時間
目錄

建立目錄:public boolean mkdir()

列出目錄中的文件:

public String[] list() 用字符串形式返回目錄中的所有文件
public File[] listFiles() 用File對象形式返回目錄中的所有文件
public String[] list(FilenameFilter filter) 用字符串返回由包含在目錄中指定類型的全部文件
public File[] listFiles(FileFilter filter) 用File對象形式返回由包含在目錄中指定類型的全部文件
文件的建立與刪除

建立:例:File file =new file("C://myletter","letter.txt")

刪除:file.delete()

運行可執行文件

使用Runtime類聲明一個對象:Runtime ec

使用該類的getRuntime()靜態方法建立這個對象:ec = Runtime.getRuntime

文件字節輸入流

使用輸入流一般包括4個基本步驟:

  1. 設定輸入流的源
  2. 建立指向源的輸入流
  3. 讓輸入流讀取流中的數據
  4. 關閉輸入流
構造方法
FileInputStream(String name);
FileInputStream(File file);
  File f=new File("D:/2000/E.java");
  FileInputStream input=new FileInputStream(f);
使用輸入流讀取字節
void write(int n) 輸出流調用該方法向目的地寫數據
void write(byte b[]) 輸出流調用該方法向目的地寫入一個字節數組
void write(byte b[],int off,int len) 給定字節數組中起始於偏移量off處取len個字節寫到目的地
void close() 關閉輸出流
文件字符輸入,輸出流

以char爲單位,構造方法:

FileReader(String filename): FileReader(File filename);

FileWrite(String filename):FileWrite(File filename);

FileWrite(String filename,boolean append);

FileWrite(File filename,boolean append);

緩衝流

BufferedReader,BufferedWrite類緩衝輸入、輸出流能夠加強讀寫文件的能力

BufferedReader,BufferedWrite類,兩者的源和目的地必須是字符輸入流和字符輸出流

BufferedReader,BufferedWrite類的構造方法:

BufferedReader(Reader in):
Reader in=new FileReader("a.txt");
BufferedReader inTwo=new BufferedReader(in);
BufferedWrite (Wirte out);
Write out=new FileWrite("b.txt");
BufferedWrite outTwo=new BufferedWrite(out);
outTwo("你好a",0,3);
隨機流

RandomAccessFile類建立的流叫作隨機流,不是InputStream類和OutputStream類的子類

指向能夠既能夠做爲流的源,也能夠做爲流的目的地

構造方法:RandomAccessFile(String name,String mode)

​ RandomAccessFile(File file,String mode)

數組流
字節數組流

字節數組輸入流ByteArrayInputStream,字節數組輸出流ByteArrayoutputStream

構造方法:

  • ByteArrayInputStream:

    ByteArrayInputStream(byte[] buf);
    ByteArrayInputStream(byte[] buf,int offset,int length);
  • ByteArrayoutputStream:

ByteArrayoutputStream();
ByteArrayoutputStream(int size);
字符數組流

CharArrayReader,CharArrayWrite

數據流

DataInputStream和DataoutputStream類建立的對象稱爲數據輸入流和數據輸出流

構造方法:DataInputStream:DataInputStream(InputStream in)

​ DataOutputStream:DataOutputStream(OutputStream out)

對象流

ObjectInputStream、ObjectoutputStream分別是InputStream和outputStream類的子類,建立的對象稱爲對象輸入流和對象輸出流。

構造方法:ObjectInputStream:ObjectInputStream(InputStream in)

​ ObjectOutputStream:ObjectOutputStream(OutputStream out)

在使用對象流寫入或讀入對象時,要保證對象是序列化的。

序列化與對象克隆

對象的複製品,且複製品的實體的變化不會引發原對象實體發生變化,這樣的複製品稱爲原對象的一個克隆對象,簡稱克隆。

對象輸入流經過對象的序列化信息來獲得當前對象的一個克隆

使用Scanner解析文件
使用默認分割標記解析文件

建立Scanner的對象,並指向要解析的文件:

File file=new File("hello.java");
Scanner sc=new Scanner(file);

那麼sc將空格做爲分割標記、調用next()方法依次返回file中的單詞,若是file最後一個單詞已被next()方法返回,sc調回hasNext()將返回false,不然返回true

使用正則表達式做爲分割標記解析文件

File file = new File(「hello.java");

Scanner sc=new Scanner(file);

sc useDelimiter(正則表達式);

那麼sc將正則表達式做爲分隔標記

文件對話框

文件對話框是一個選擇文件的界面。javax.swing包中的JFileChooser能夠建立文件對話框

帶進度條的輸入流

javax.swing包中的ProgressMonitorInputStream輸入流類,能夠看見文件的讀取進度

代碼調試中的問題和解決過程

  • 問題1:

  • 問題1解決方案:括號內數據間隔符號使用錯誤

  • 問題2:

  • 問題2解決方案:句末的分號使用了中文字符

代碼託管

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 37/37 1/1 10/10
第二週 399/436 1/2 12/22
第三週 764/1163 1/3 18/40
第四周 687/1813 1/4 12/52
第五週 1127/2916 1/5 10/62
相關文章
相關標籤/搜索