1.異常(try-catch語句、異常類的層次和異常的處理)php
異常是一個定義非正常狀況下或錯誤的對象,錯誤是表明不可恢復的問題而且必須捕獲處理。html
錯誤與異常都是在程序編譯和運行時出現的錯誤。不一樣的是,異常能夠被開發人員捕捉和處理;而錯誤通常是系統錯誤,通常不須要開發人員處理(也沒法處理),好比內存溢出。
Exception是java中全部異常的基類。在java中異常被分爲兩大類,編譯時異常和運行時異常。
Error是java中全部錯誤的基類。錯誤一般是咱們沒法處理的,絕大多數狀況下,咱們不該該試圖捕獲錯誤。java
異常體系具備可拋性,這個特性是Throwable體系中獨有的特色。git
throws | throw | |
---|---|---|
區別1 | 使用在函數上 | 使用在函數內 |
區別2 | 後面跟異常對象類(能夠多個,逗號隔開) | 後面跟異常對象 |
若是程序不處理異常,則將非正常地終止執行,併產生關於描述在何處發生什麼異常的信息。web
try-catch語句能夠捕獲並處理異常,程序將繼續正常執行。算法
每個try-catch語句均可以有一個可選的finally子句,用於定義一段不管是否有異常發生都將執行的代碼。try語句塊能夠沒有catch子句,沒有catch子句時,若是須要仍然可使用finally子句。編程
try-catch語句的finally子句的執行與如何退出try語句無關。若是沒有異常產生,try語句塊能夠執行完後將執行finally子句,當拋出異常時,將執行相應的catch子句,而後執行finally子句。數組
經過繼承Exception類創建新的異常類,新的異常類最終是Throwable類的後代類,可使用throw語句。網絡
2.I/O數據結構
流是一個有序的字節數列
標準的I/O流有三種,System類中有三種對象引用變量(in,out和err),分別表明了三種標準的I/O流。System.in爲標準的輸入流--鍵盤,System.out爲標準輸出流和System.err爲標準錯誤流--顯示器屏幕上的一個具體窗口。
1.遞歸思想
遞歸是一種編程技術,容許一個方法調用本身以達到最終目的。遞歸是以一種事物自身定義自身的過程。
任何遞歸的定義都必須有結束遞歸選擇的基本狀況。 遞歸方法一定有一條if-else語句,其中的一支做爲檢測基本狀況的值。
2.迷宮旅行和漢諾塔問題
問題1解決方案:在Throwable類中方法裏面找到了每次出現異常的時候拋出的錯誤提醒和異常何處的問題。getMessage()[返回此 throwable 的詳細消息字符串。]和getStackTrace()[提供編程訪問由 printStackTrace() 輸出的堆棧跟蹤信息。]兩個方法產生的。其中的Exception算是全部異常的父類,其下的全部子類都是每個相對具體的異常。異常的規定也是按照一種編寫類的方式,編寫類中方法的方式進行構造的。
- Throwable類是Error和Exception類的父類。
- Throwable 類是 Java 語言中全部錯誤或異常的超類。只有當對象是此類(或其子類之一)的實例時,才能經過 Java 虛擬機或者 Java throw 語句拋出。相似地,只有此類或其子類之一才能夠是 catch 子句中的參數類型。
- 異常類的體系結構:
問題2的解決方案:Java中惟一的不可檢測異常是RuntimeException類的對象或該類的後代對象。全部其餘異常都是可檢測的異常。對於可檢測的異常是,發生異常的方法不捕獲和處理該異常,則必須在該方法定義的聲明頭中包含throws子句。
- 可檢測異常在方法定義的聲明頭中追加一條throw子句,就明確承諾了該方法在異常發生時將拋出或傳遞異常。
- 不可檢測異常則不須要只用throws子句。
問題3的解決方案:遞歸和循環的差異,我以爲最明顯的就是遞歸的不斷的調用本身的方法,而循環則是否則,經過for、while、do循環進行一次一次的往復運算。遞歸和循環二者徹底能夠互換。若是用到遞歸的地方能夠很方便使用循環替換,而不影響程序的閱讀,那麼替換成遞歸每每是好的。像斐波那契數列、漢諾塔、階乘等問題均可以用遞歸解決。
遞歸算法:循環算法:
- 優勢:代碼簡潔、清晰,而且容易驗證正確性。(若是你真的理解了算法的話,不然你更暈)
- 缺點:它的運行須要較屢次數的函數調用,若是調用層數比較深,須要增長額外的堆棧處理(還有可能出現堆棧溢出的狀況),好比參數傳遞須要壓棧等操做,會對執行效率有必定影響。可是,對於某些問題,若是不使用遞歸,那將是極端難看的代碼。
- 優勢:速度快,結構簡單。
- 缺點:並不能解決全部的問題。有的問題適合使用遞歸而不是循環。若是使用循環並不困難的話,最好使用循環。
問題4的解決方案:在java.io包中操做文件內容的主要有兩大類:字節流、字符流,兩類都分爲輸入和輸出操做。在字節流中輸出數據主要是使用OutputStream完成,輸入使的是InputStream,在字符流中輸出主要是使用Writer類完成,輸入流主要使用Reader類完成。(這四個都是抽象類)在全部的硬盤上保存文件或進行傳輸的時候都是以字節的方法進行的,包括圖片也是按字節完成,而字符是隻有在內存中才會造成的,因此使用字節的操做是最多的。兩種寫入文件的方式,但字節流的使用更重要。
while (another.equalsIgnoreCase("Y"))
就開始寫仍是就單純的判斷迴文處進行編寫,不管是前者仍是後者都不知道代碼如何去寫。頓覺腦洞的重要性,有一個會編程的腦殼該多好啊!我嘗試了寫前者的代碼,可是每寫一步都舉步維艱,因此放棄着手寫後者,可是後者在哪發生遞歸還是個問題,還有非遞歸的位置,又該如何編寫。在看過同窗編寫的代碼,恍然大悟,對於一個和兩個的字符做爲非遞歸的位置,而較多的字符能夠進行一個遞歸處理,這樣完成了,在用遞歸的main函數裏面進行一個是否繼續繼續下去的遞歸不就行了。public static boolean Palindrome(String str) { if(str.length()==1) return true ; else if(str.length()==2) { if(str.charAt(0)==str.charAt(str.length()-1)) return true ; else return false ; } else if(str.charAt(0)==str.charAt(str.length()-1)) return Palindrome(str.substring(1,str.length()-1)) ; else return false; }
DONE
的時候,終止輸入而後在判斷整個字符串的一個處理。多是個人理解力有問題致使,因此,我覺的前者能夠先嚐試嘗試,因此個人PP11.1就是按照前者進行編寫的,可是在編寫PP11.2的時候本身不會編寫了,有輒回來寫第二種的代碼,很簡單就搞定了。多是我以前的理解有誤吧。
PP11.1
PP11.2
問題3解決方案:剛聽完IO的問題就要去編寫IO的代碼,感受好恐怖。聽的雲裏霧裏的,尤爲還有一堆的類去理解,用哪一個不用哪一個的問題,對應的writer和reader什麼的,一堆一堆的,好在有老師給的代碼能夠參考。在老師的代碼中有BufferedOutputStream和BufferedInputStream兩種可供理解,兩種字節流可使用,進行往文件裏面寫入讀出。(在文件裏面寫出這兩串數字真不容易......)
- Buffered緩衝流::BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter,是帶緩衝區的處理流,緩衝區的做用的主要目的是:避免每次和硬盤打交道,提升數據訪問的效率。
![](https://images2018.cnblogs.com/blog/1333004/201805/1333004-20180512161614361-1642312559.png)
本週結對學習狀況
20172304方藝雯
20172323王禹涵
1.異常
2.I/O流
3.遞歸
4.遞歸應用--迷宮問題和漢諾塔問題
十一章和第十二章的內容講的是異常和遞歸,並且第十一章中I/O流部份內容在藍墨雲上的視頻一堆,感受本身有點忙不過來。並且立刻快要檢查四則運算的編程實驗了,咱們仨的代碼,分開使用就能夠,合在一塊兒使用就一堆問題,好煩!看完第十二章的內容,感受本書已經學完了一大半,可是感受本身仍是以有不少問題,還有不少不足須要解決。惆悵......本身還有不少不少的關於I/O流的內容沒有看,因此有關I/O流的問題尚未遇到不少,寫的也就少了。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 136/136 | 1/1 | 15/15 | |
第二週 | 570/706 | 1/2 | 20/35 | |
第三週 | 613/1319 | 1/3 | 23/58 | |
第四周 | 1249/2568 | 1/5 | 30/88 | |
第五週 | 904/3472 | 1/6 | 30/118 | |
第六週 | 540/4012 | 1/7 | 30/118 | |
第七週 | 826/4838 | 1/7 | 30/178 | |
第八週 | 925/5763 | 2/9 | 45/223 | |
第九周 | 253/6016 | 2/10 | 55/278 |