20175212童皓桢 《Java程序设计》第六周学习总结
20175212童皓楨 《Java程序設(shè)計》第六周學(xué)習(xí)總結(jié)
教材學(xué)習(xí)內(nèi)容總結(jié)
第七章 內(nèi)部類與異常類
1.內(nèi)部類
Java支持在一個類中定義另一個類,這樣的類稱作內(nèi)部類,包含內(nèi)部類的類稱為內(nèi)部類的外嵌類。
- 內(nèi)部類的外嵌類的成員變量在內(nèi)部類中仍然有效,內(nèi)部類中的方法也可以調(diào)用外嵌類中的方法。
- 內(nèi)部類的類體不能聲明類變量和類方法。外嵌類的類體中可以用內(nèi)部類聲明對象,作為外嵌類的成員。
- 內(nèi)部類僅供它的外嵌類使用,其他類不可以用某個類的內(nèi)部類聲明對象。
2.匿名類(被認(rèn)為是一個子類去掉聲明后的類體)
Bank是類,下列代碼用Bank的一個子類(匿名類)創(chuàng)建對象。
new Bank(){匿名的類體 }- 匿名類可以繼承、重寫父類的方法。
- 匿名類一定是內(nèi)部類
- 匿名類可以訪問外嵌類中的成員變量和方法
- 匿名類因沒有類名,因此匿名類創(chuàng)建對象時,直接使用父類的構(gòu)造方法。
感覺匿名類的概念和使用方法不太好理解,故用書中例子以闡明:
Example7_2.java的以上即為使用匿名類的部分。
- 另外的,可以使用接口名和類體組合創(chuàng)建一個匿名對象傳遞給方法的參數(shù),類體必須要重寫接口中的全部方法,如:
3.異常類
Java允許定義方法時聲明該方法調(diào)用過程中可能出現(xiàn)的異常,即允許方法調(diào)用過程中拋出異常對象,終止當(dāng)前方法的繼續(xù)執(zhí)行。
另外,異常對象可以調(diào)用以下方法得到或輸出有關(guān)異常的信息:
- try-catch語句
將可能出現(xiàn)的一場操作放在try部分,一旦try部分拋出異常對象,那么try部分立刻結(jié)束執(zhí)行,轉(zhuǎn)向執(zhí)行相應(yīng)的catch部分。
try{可能發(fā)生異常的語句 } catch(ExceptionSubClass1 e) {… } catch(ExceptionSubClass2 e) {… }- 自定義異常類
一個方法在聲明時可以使用throws關(guān)鍵詞聲明要產(chǎn)生的若干個異常,并在該方法體中具體給出產(chǎn)生異常的操作。如下:
public void income(int in,int out) throws BankException {if(in<=0||out>=0||in+out<=0) {throw new BankException(in,out); //方法拋出異常,導(dǎo)致方法結(jié)束}int netIncome=in+out;System.out.printf("本次計算出的純收入是:%d元\n",netIncome);money=money+netIncome; }4.斷言
在代碼調(diào)試階段中,斷言語句一般用于程序不準(zhǔn)備通過捕獲異常來處理的錯誤。
- 斷言語句有以下兩種格式:
assert booleanExpression;
若表達(dá)式為真,程序從斷言語句處繼續(xù)執(zhí)行,否則程序從斷言語句處停止執(zhí)行。
與上一種類似,,另外的輸出messageException表達(dá)式的值。
- java -ea mainClass 啟用斷言語句
第十章
1. File類
- 文件的屬性
public String getName() 獲取文件的名字。
public boolean canRead()判斷文件是否是可讀的。
public boolean canWrite() 判斷文件是否可被寫入。
public boolean exits() 判斷文件是否存在。
public long length() 獲取文件的長度(單位是字節(jié))。
public String getAbsolutePath() 獲取文件的絕對路徑。
public String getParent() 獲取文件的父目錄。
public boolean isFile() 判斷文件是否是一個普通文件,而不是目錄。
public boolean isDirectroy() 判斷文件是否是一個目錄。
public boolean isHidden() 判斷文件是否是隱藏文件。
public long lastModified() 獲取文件最后修改的時間。
- 目錄
創(chuàng)建目錄 public boolean mkdir()
public String[] list()用字符串形式返回目錄下的全部文件。
public File [] listFiles() 用File對象形式返回目錄下的全部文件。
public String[] list(FilenameFilter obj)用字符串形式返回目錄下的指定類型的所有文件。
public File [] listFiles(FilenameFilter obj) 用File對象形式返回目錄下的指定類型所有文件。
上述兩方法的參數(shù)FilenameFilter是一個接口,該接口有一個方法:
public boolean accept(File dir,String name);
- 文件的創(chuàng)建與刪除
File file=new File("c:\\myletter","letter.txt");
如果c:\myletter目錄中沒有名字為letter.txt文件,
文件對象file調(diào)用方法
文件對象調(diào)用方法 public boolean delete()
可以刪除當(dāng)前文件,
例如:file.delete();
- 運(yùn)行可執(zhí)行文件
用Runtime 類聲明一個對象( Runtime類在java.lang包)
Runtime ec;
然后使用該類的getRuntime()靜態(tài)方法創(chuàng)建這個對象:
ec=Runtime.getRuntime();
ec可以調(diào)用exec(String command)方法打開本地機(jī)的可執(zhí)行文件或執(zhí)行一個操作。
2.文件字節(jié)輸入流
使用輸入流通常包括4個基本步驟:
(1)設(shè)定輸入流的源 (2)創(chuàng)建指向源的輸入流 (3)讓輸入流讀取源中的數(shù)據(jù) (4)關(guān)閉輸入流。3.文件字節(jié)輸出流
(1)給出輸出流的目的地 (2)創(chuàng)建指向目的地的輸出流 (3)讓輸出流把數(shù)據(jù)寫入到目的地 (4)關(guān)閉輸出流。4.文件字符輸入、輸出流
(1)Reader類提供的read方法以字符為單位順序地讀取源中的數(shù)據(jù)。
int read():
int read(char b[]):
int read(char b[], int off, int len):
void close():
long skip(long numBytes):
(2) Writer流以字符為單位順序地寫文件,每次調(diào)用write方法就順序地向目的地寫入內(nèi)容。 Writer類有如下常用的方法。
void write(int n): 向輸出流寫入一個字符。
void write(byte b[]): 向輸出流寫入一個字符數(shù)組。
void write(byte b[],int off,int length): 從給定字符數(shù)組中起始于偏移量off處取len個字符寫到輸出流。
void close(): 關(guān)閉輸出流。
5.緩沖流
(1)BufferedReader和BufferedWriter類創(chuàng)建的對象稱作緩沖輸入、輸出流。二者的源和目的地必須是字符輸入流和字符輸出流。
構(gòu)造方法:
BufferedReader(Reader in);
BufferedWriter (Writer out);
(2)BufferedReader和BufferedWriter類讀寫文件的方法:
readLine() 讀取文本行
write(String s,int off,int len) 把字符串s寫到文件中
newLine(); 向文件寫入一個回行符
6.隨機(jī)流
使用RandomAccessFile類來創(chuàng)建一個隨機(jī)訪問文件流。RandomAccessFile類創(chuàng)建的流的指向既可以作為源也可以作為目的地。
構(gòu)造方法
RandomAccessFile(String name,String mode) ;
RandomAccessFile(File file,String mode) ;
相關(guān)方法:
seek(long a) 定位RandomAccessFile流的讀寫位置
getFilePointer() 獲取流的當(dāng)前讀寫位置
7.數(shù)組流
(1)字節(jié)數(shù)組流
字節(jié)數(shù)組輸入流ByteArrayInputStream和字節(jié)數(shù)組輸出流ByteArrayOutputStream分別使用字節(jié)數(shù)組作為流的源和目標(biāo)。
ByteArrayInputStream構(gòu)造方法及常用方法
ByteArrayInputStream(byte[] buf);
ByteArrayInputStream(byte[] buf,int offset,int length);
public int read();順序地從源中讀出一個字節(jié)
public int read(byte[] b,int off,int len);順序地從源中讀出參數(shù)len指定的字節(jié)數(shù)
ByteArrayOutputStream流構(gòu)造方法及常用方法
ByteArrayOutputStream();
ByteArrayOutputStream(int size);
public void write(int b); 順序地向緩沖區(qū)寫入一個字節(jié)
public void write(byte[] b,int off,int len); 將參數(shù)b中指定的len個字節(jié)順序地寫入緩沖區(qū)
public byte[] toByteArray(); 返回輸出流寫入到緩沖區(qū)的全部字節(jié)
(2)字符數(shù)組
CharArrayReader和CharArrayWriter類是字符數(shù)組流,使用字符數(shù)組作為流的源和目標(biāo)。
8.數(shù)據(jù)流
DataInputStream和DataOutputStream類創(chuàng)建的對象稱為數(shù)據(jù)輸入流和數(shù)據(jù)輸出流。
構(gòu)造方法:
DataInputStream(InputStream in)創(chuàng)建的數(shù)據(jù)輸入流指向一個由參數(shù)in指定的底層輸入流
DataOutputStream(OutnputStream out)創(chuàng)建的數(shù)據(jù)輸出流指向一個由參數(shù)out指定的底層輸出流
9.對象流
ObjectInputStream和ObjectOutputStream類創(chuàng)建的對象稱為對象輸入流和對象輸出流。
它的構(gòu)造方法是:
ObjectInputStream(InputStream in)
ObjectOutputStream(OutputStream out)
相關(guān)方法:
writeObject(Object obj) 將一個對象obj寫入到一個文件
readObject() 讀取一個對象到程序中
所謂序列化:一個類如果實(shí)現(xiàn)了Serializable接口,那么這個類創(chuàng)建的對象就是所謂序列化的對象。
10.使用Scanner解析文件
(1)使用默認(rèn)分隔標(biāo)記解析文件
創(chuàng)建Scanner對象,并指向要解析的文件,例如:
File file = new File("hello.java");
Scanner sc = new Scanner(file);
sc將空白作為分隔標(biāo)記
(2)使用正則表達(dá)式作為分隔標(biāo)記解析文件 :
創(chuàng)建Scanner對象,指向要解析的文件,并使用useDelimiter方法指定正則表達(dá)式作為分隔標(biāo)記。
11.文件對話框
構(gòu)造方法JFileChooser()創(chuàng)建初始不可見的有模式的文件對話框。然后文件對話框調(diào)用下述2個方法:
showSaveDialog(Component a);
showOpenDialog(Component a);
都可以使得對話框可見,只是呈現(xiàn)的外觀有所不同,showSaveDialog方法提供保存文件的界面,showOpenDialog方法提供打開文件的界面。
上述兩個方法中的參數(shù)a指定對話框可見時的位置,當(dāng)a是null時,文件對話框出現(xiàn)在屏幕的中央;如果組件a不空,文件對話框在組件a的正前面居中顯示。
11.帶進(jìn)度條的輸入流
如果讀取文件時希望看見文件的讀取進(jìn)度可以使用javax.swing包提供的輸入流類:
ProgressMonitorInputStream
它的構(gòu)造方法是:
ProgressMonitorInputStream(Conmponent c,String s,InputStream);
12.文件鎖
FileLock、FileChannel類處理Java提供的文件鎖功能。它們分別在java.nio和java.nio.channels包中。
輸入、輸出流讀寫文件時可以使用文件鎖。
RondomAccessFile創(chuàng)建的流在讀寫文件時使用文件鎖的步驟如下:
(1)先使用RondomAccessFile流建立指向文件的流對象,該對象的讀寫屬性必須是rw,例如:
RandomAccessFile input=new RandomAccessFile("Example.java","rw");(2)input流調(diào)用方法getChannel()獲得一個連接到地層文件的FileChannel對象(信道),例如
FileChannel channel=input.getChannel();
(3)信道調(diào)用tryLock()或lock()方法獲得一個FileLock(文件鎖)對象,這一過程也稱作對文件加鎖.
例如:FileLock lock=channel.tryLock();
教材學(xué)習(xí)中的問題和解決過程
- 問題1:
中,對于匿名類的使用格式存有疑惑
- 問題1解決方案:經(jīng)過比較書中的范例和使用規(guī)范后得知,匿名類的使用和描述緊跟在聲明之后,即使是在當(dāng)作參數(shù)時。
代碼調(diào)試中的問題和解決過程
- 問題1:在IDEA中調(diào)試書中Example7_6時無法正確開啟斷言語句。
- 問題1解決方案:發(fā)現(xiàn)班課中有同學(xué)與我有相同問題,并找到了解決方法:
之后成功調(diào)試并啟用assert語句
代碼托管
上周考試錯題總結(jié)
- 錯題一:如果有以下程序片段
以下描述正確的是
A
.
編譯失敗
B . 顯示“做一些事”
C
.
發(fā)生ClassCastException
D
.
執(zhí)行時不顯示任何信息
原因和分析:對接口的理解不很到位。在此題中簡單的將接口Some作為父類,并最后調(diào)用在子類中重寫的方法即可。
結(jié)對及互評
評分標(biāo)準(zhǔn)
- 不使用Markdown不加分
- 有語法錯誤的不加分(鏈接打不開,表格不對,列表不正確...)
- 排版混亂的不加分
- 缺少“教材學(xué)習(xí)中的問題和解決過程”的不加分
- 缺少“代碼調(diào)試中的問題和解決過程”的不加分
- 代碼托管不能打開的不加分
- 缺少“結(jié)對及互評”的不能打開的不加分
- 缺少“上周考試錯題總結(jié)”的不能加分
- 缺少“進(jìn)度條”的不能加分
- 缺少“參考資料”的不能加分
教材學(xué)習(xí)中的問題和解決過程, 一個問題加1分
代碼調(diào)試中的問題和解決過程, 一個問題加1分
- 一周提交次數(shù)少于20次的不加分
- 周五前發(fā)博客的加1分
- 感想,體會不假大空的加1分
- 排版精美的加一分
- 進(jìn)度條中記錄學(xué)習(xí)時間與改進(jìn)情況的加1分
- 有動手寫新代碼的加1分
- 課后選擇題有驗(yàn)證的加1分
- 代碼Commit Message規(guī)范的加1分
- 錯題學(xué)習(xí)深入的加1分
- 點(diǎn)評認(rèn)真,能指出博客和代碼中的問題的加1分
- 結(jié)對學(xué)習(xí)情況真實(shí)可信的加1分
- 有抄襲的扣至0分
- 代碼作弊的扣至0分
- 遲交作業(yè)的扣至0分
點(diǎn)評模板:
- 博客中值得學(xué)習(xí)的或問題:
- 對書上的內(nèi)容有總結(jié)和自己的理解
- 可以多嘗試調(diào)試代碼,發(fā)現(xiàn)問題
- 代碼中值得學(xué)習(xí)的或問題:
- 無
- 基于評分標(biāo)準(zhǔn),我給本博客打分:13分。
得分情況如下:正確使用Markdown語法(加1分),模板中的要素齊全(加1分)教材學(xué)習(xí)中的問題和解決過程, 兩個問題加2分,本周有效代碼超過300分行的(加2分),感想,體會不假大空的加1分排版精美的加一分
進(jìn)度條中記錄學(xué)習(xí)時間與改進(jìn)情況的加1分
有動手寫新代碼的加1分
代碼Commit Message規(guī)范的加1分
錯題學(xué)習(xí)深入的加1分
點(diǎn)評認(rèn)真,能指出博客和代碼中的問題的加1分
結(jié)對學(xué)習(xí)情況真實(shí)可信的加1分
點(diǎn)評過的同學(xué)博客和代碼
- 本周結(jié)對學(xué)習(xí)情況
- 20175227
- 結(jié)對學(xué)習(xí)內(nèi)容
- 本周教材對于第七章、第十章的知識進(jìn)行學(xué)習(xí)
- 合作寫出了四則運(yùn)算練習(xí)器程序的第一階段任務(wù)
- 上周博客互評情況
其他(感悟、思考等,可選)
- 本周和結(jié)對伙伴初步設(shè)計出了四則運(yùn)算練習(xí)器,擴(kuò)展了如調(diào)用eval方法,getPercentInstance方法等知識
通過對教材的學(xué)習(xí),了解了兩個特殊類的使用方法及輸入、輸出流相關(guān)知識
學(xué)習(xí)進(jìn)度條
| 目標(biāo) | 5000行 | 30篇 | 400小時 | |
| 第一周 | 6/6 | 1/1 | 20/20 | |
| 第二周 | 245/251 | 1/2 | 18/38 | |
| 第三周 | 633/884 | 1/3 | 22/60 | |
| 第四周 | 305/1189 | 1/4 | 30/90 | |
| 第五周 | 410/1599 | 3/7 | 30/120 | |
| 第六周 | 1135/2734 | 3/10 | 30/150 |
嘗試一下記錄「計劃學(xué)習(xí)時間」和「實(shí)際學(xué)習(xí)時間」,到期末看看能不能改進(jìn)自己的計劃能力。這個工作學(xué)習(xí)中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓(xùn)練次數(shù)多了,X、Y就接近了。
參考:軟件工程軟件的估計為什么這么難,軟件工程 估計方法
(有空多看看現(xiàn)代軟件工程 課件
軟件工程師能力自我評價表)
參考資料
Java學(xué)習(xí)筆記(第8版)
- 《Java學(xué)習(xí)筆記(第8版)》學(xué)習(xí)指導(dǎo)
...
轉(zhuǎn)載于:https://www.cnblogs.com/thz666/p/10665240.html
總結(jié)
以上是生活随笔為你收集整理的20175212童皓桢 《Java程序设计》第六周学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “小米汽车”商标被纺织品公司抢注
- 下一篇: Java接口,多态,向上转型,向下转型的