學號20182304 2019-2020-1 《數據結構與面向對象程序設計》第六週學習總結
教材學習內容總結
- 多態引用能夠在不一樣時間指向不一樣類型對象,即運行一致性的方法出現不一致的行爲。
- 使用父類聲明的引用變量能夠指向子類的對象,接口也能夠實現多態
- 使用try-catch來實現未捕獲的異常的處理。可使得異常被捕獲進而不致使程序出現錯誤退出。
- 使用try寫入可能產生異常的語句,使用catch來編寫在捕獲異常後繼續執行的代碼(能夠爲空)。
- 自定義異常
- throw:拋出異常
- throws:用於方法名的後面,作一個聲明,表示下面可能會有這個異常,可是具體仍是要用throw來拋出異常。
- 在自定義異常中throws和throw必須是成對出現的,除非是用try-catch語句解決
- 異常的傳遞 :從產生位置沿方法調用鏈向上傳遞
教材學習中的問題和解決過程
- 問題1:子類能夠轉換成父類嗎?當子類對象強制轉換成父類時,是否能調用父類的方法?
- 問題1解決方案:子類能夠轉換成父類,由於子類其實是一種特殊的父類。第二個不行,調用的依然是子類的方法
- 問題2:爲何要自定義異常?
- 問題2解決方案:從Exception類或它的一個後繼類派生一個新類,就能夠定義新的異常。在java裏面針對於可能出現的公共的程序問題,都會提供相應的異常信息,可是不少時候這些異常信息每每不夠去使用的,有些異常Java是不會提供的,因此就必須定義一個屬於本身的異常類
- 問題3:必檢測異常與免檢測異常有什麼區別?
問題3解決方案:必檢測異常必須由方法捕獲,或者必須在可能拋出或傳遞異常方法的throws子句中。java中惟一的免檢測異常是RuntimeException類的對象或該類的後代類對象,免檢異常不須要throws子句html
代碼調試中的問題和解決過程
問題1:嘗試運行老師給的測試代碼,結果出現輸出異常(最後的語句沒有輸出結果)
java
- 問題1解決方案:問題的緣由一方面是我將應用混合運行,將代碼分開運行後就能夠得出正常結果。另外一方面是我並不理解代碼功能。
經過查閱JDK文檔,我對文件操做有了基本的瞭解
- 1 文件新建、刪除等(查閱Fire類)
配合代碼,這樣咱們就能夠大體明白每步操做的具體含義了
- 2 使用FileOutputStream和FileInputStream類讀寫git
OutputStream outputStream1 = new FileOutputStream(file);//輸入,指向文件
byte[] hello = {'H', 'e', 'l', 'l', 'o', ',', 'W', 'o', 'r', 'l', 'd', '!', '!', '!', '!', '!'};
outputStream1.write(hello);//按字節寫入
outputStream1.flush();//刷新,第一種寫法
InputStream inputStream1 = new FileInputStream(file);//第一種讀法,一個一個字節讀取
while (inputStream1.available() > 0) {
System.out.print((char) inputStream1.read() + " ");//區別?
}
inputStream1.close();
System.out.println("\n成功按位讀取。。");
- 3 字節緩衝流(使用BufferedOutputStream和BufferedInputStream類)
- 做用:緩衝區能夠大大提升讀寫效率,程序就不用現使用數據現讀寫浪費時間了
OutputStream outputStream2 = new FileOutputStream(file);//按字符串寫入
BufferedOutputStream bufferedOutputStream2 = new BufferedOutputStream(outputStream2);
String content2 = "AAAAABBBBCCCCCDDDDget and put?";
bufferedOutputStream2.write(content2.getBytes(), 0, content2.getBytes().length);//依舊一位一位寫入
bufferedOutputStream2.flush();
bufferedOutputStream2.close();
byte[] buffer = new byte[1024];
String content = "";//能夠寫東西,輸出的時候會在前面
int flag = 0;
InputStream inputStream2 = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream2);
while ((flag = bufferedInputStream.read(buffer)) != -1) //-1時到達末尾,一次讀取整個字符串
- 根據JDK文檔查找對應的方法,對應語句的含義就很好理解了,其他的內容就不放上來了
(數據結構
)ide
上週考試錯題總結
- Abstract methods are used when defining
- A .interface classes
- D .arrays
- E .classes that have no methods
- An interface is a class that has defined some of its components, but leaves other components (methods) for you to implement. So, these components (methods) are referred to as abstract and defined in the interface class as abstract.
- 理解:是要重寫父類中的全部抽象方法,即接口讓咱們實現方法,而非沒有方法
- Which of the following is true regarding Java classes?
- A .All classes must have 1 parent but may have any number of children (derived or extended) classes
- E .All classes can have either 0 or 1 parent class and any number of children (derived or extended) classes
- Further, since all Java classes inherit either directly or indirectly from the Object class, all Java classes have exactly 1 parent class.
- 理解:java類與Object類有直接看法的關係,因此每一個類都有一個父類,那Object類本身呢?Object是全部類的父類,也包括它本身
- A variable declared to be of one class can later reference an extended class of that class. This variable is known as
- D .polymorphic
- The term polymorphic means that the variable can have many forms. Under ordinary circumstances, Java is strongly defined that is, a variable, once declared to be of a type, can never change to be of a different type. The exception to this is that polymorphic variables can be any type of derived class (although not at the same time, the variable can change from one type to another).
- 理解:引用變量在不一樣時刻指向不一樣類型對象的能力即爲多態
- In order to determine the type that a polymorphic variable refers to, the decision is made
- by the Java run-time environment at run time
- The polymorphic variable can take on many different types, but it is not know which type it has taken on until the program is executing. At the time the variable is referenced, then the decision must be made. That decision is made by the run-time environment based on the latest assignment of the variable.
- 理解:多態在程序運行中發揮做用
- Using the reserved word, super, one can
- A .access a parent class'constructor(s)
- B . access a parent class'methods and instance data
- E .none of the above
- The super reserved word provides a mechanism for accessing a parent class'methods and instance data (whether or not they are hidden). In addition, a parent class'constructor(s) may be accessed using super. So the correct answer is the combination of A and B which isn't an option so the correct answer is E.
- 理解:其實二者均可以,也能夠調用父類的抽象方法構造方法與實例數據
- Interface classes cannot be extended but classes that implement interfaces can be extended.
- B .false
- Any class can be extended whether it is an interface, implements an interface, or neither. The only exception to this is if the class is explicitly modified with the word "final" in which case it cannot be extended.
- 理解:接口也能夠被擴展,只有前面帶final的不行。
- If class AParentClass has a protected instance data x, and AChildClass is a derived class of AParentClass, then AChildClass can access x but can not redefine x to be a different type.
- B .false
- A derived class can redefine any of the instance data or methods of the parent class. The parent class'version is now hidden, but can be accessed through the use of super, as in super.x.
- 理解:能夠用super更改x的數據類型
- You may use the super reserved word to access a parent class'private members.
- 理解:Super will allow access to all non-private members of a parent class but, not to the private ones.
結對及互評
評分標準
- 正確使用Markdown語法(加1分):
- 不使用Markdown不加分
- 有語法錯誤的不加分(連接打不開,表格不對,列表不正確...)
- 排版混亂的不加分
- 模板中的要素齊全(加1分)
- 缺乏「教材學習中的問題和解決過程」的不加分
- 缺乏「代碼調試中的問題和解決過程」的不加分
- 代碼託管不能打開的不加分
- 缺乏「結對及互評」的不能打開的不加分
- 缺乏「上週考試錯題總結」的不能加分
- 缺乏「進度條」的不能加分
- 缺乏「參考資料」的不能加分
教材學習中的問題和解決過程, 一個問題加1分學習
代碼調試中的問題和解決過程, 一個問題加1分測試
- 本週有效代碼超過300分行的(加2分)
- 其餘加分:
- 週五前發博客的加1分
- 感想,體會不假大空的加1分
- 排版精美的加一分
- 進度條中記錄學習時間與改進狀況的加1分
- 有動手寫新代碼的加1分
- 課後選擇題有驗證的加1分
- 代碼Commit Message規範的加1分
- 錯題學習深刻的加1分
- 點評認真,能指出博客和代碼中的問題的加1分
- 結對學習狀況真實可信的加1分
- 扣分:
- 有抄襲的扣至0分
- 代碼做弊的扣至0分
- 遲交做業的扣至0分
點評模板:
- 博客中值得學習的或問題:
- 博客中解決的問題較少
- 學習不夠細緻深刻
- 代碼中值得學習的或問題:
- 無
基於評分標準,我給本博客打分:14分。this
點評過的同窗博客和代碼
- 本週結對學習狀況
其餘(感悟、思考等,可選)
目標 |
5000行 |
30篇 |
400小時 |
|
第五週 |
1600/2900 |
2/11 |
20/110 |
|
第六週 |
981 /3881 |
2/12 |
25/135 |
|
第三週 |
500/1000 |
3/7 |
22/60 |
|
第四周 |
300/1300 |
2/9 |
30/90 |
|
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
參考:軟件工程軟件的估計爲何這麼難,軟件工程 估計方法
計劃學習時間:30小時
實際學習時間:25小時
改進狀況:目前學習效率仍然不高
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)
參考資料