學號20172328《程序設計與數據結構》第十週學習總結

學號20172328《程序設計與數據結構》第十週學習總結

教材學習內容總結 (第13章:集合)

  • 1.集合與數據結構:集合是一種對象,相似於保存其餘對象的存儲庫。
    • 集合的同構和異構:同構意味着這種集合保存類型所有相同的對象,異構能夠保存各類類型的對象。
    • 分離接口和實現:抽象數據類型(ADT)是由數據和在該數據上所實施的具體操做構成的集合。一個ADT有名稱、值域和一組容許執行的操做。對象具備定義良好的接口,從而成爲一種實現集合的完整機制。
    • 根據對象的定義,對象自己具備定義良好的接口,接口的實現就隱含在類中,表達數據的方式和管理數據的操做都封裝在對象中。因爲對象與軟件系統其餘組成部分的交互收到有效控制,所以這種類型的對象可複用而且可靠
  • 2.數據結構的動態表示:一個動態數據結構用鏈來實現,利用對象引用做爲鏈接對象之間的鏈,就能夠創建起適用於各類狀況的數據結構。按這種方式創建的數據結構具備動態性,由於其大小是在使用時動態肯定的,而不是在聲明時靜態肯定的。
    • 動態結構:使同一個類的兩個對象創建起關係,用第一個對象的引用變量指向下一個對象,而後再讓第二個對象的引用變量指向第三個對象,以此類推,最後創建起一個鏈表。
    • 動態鏈表的連接:書上的MagazineRack、MagazineList例子很好的闡述了。
    • 其餘的動態列表:動態列表有許多不一樣的實現,例如能夠用雙向鏈表實現方案,或者以有序的方式實現方案。若是採用一些較複雜的數據結構可以使一些基本的公共操做更爲有效,那麼維護複雜數據結構所帶來的額外開銷是值得的。
  • 3.線性數據結構:線性結構是n個數據元素的有限序列。線性數據結構是順序表在計算機內存中以數組的形式保存的線性表,是指用一組地址連續的存儲單元依次存儲數據元素的線性結構。例如:列表、隊列、堆棧
    • 隊列:隊列是一種以先進先出方式(FIFO)管理數據的線性數據結構。
    • 堆棧:堆棧是一種之後進先出方式(LIFO)管理數據的線性數據結構。
  • 4.非線性數據結構:有些數據結構以非線性方式組織數據,於是稱爲非線性數據結構。例如:樹和圖。
    • 樹:樹是一個非線性數據結構,由一個根節點和構成層次結構的多個節點組成。除根節點外的全部節點稱爲內部節點,沒有子節點的節點稱爲葉節點。根節點在頂層,葉節點在底層。二叉樹和樹的操做有所不一樣。
    • 圖:圖沒有相似於樹根節點那樣的初始入口點。在一個圖中,一個節點到另外一個節點的鏈接稱爲邊,鏈接一個圖內各節點的邊數通常沒有限制。
  • 5.Java集合類API:Java集合類API是Java標準類庫中的一組類,表明不一樣類型的集合體,如ArrayList和LinkedList。
  • 泛型對象是一種集合類對象,實現泛型對象是爲了其管理的對象的類型在某個集合類創建時也被建立,這樣就容許編譯時能控制一些加入到該集合中的對象的類型,減小這些對象從該集合清除時的類型轉換處理。Java集合類API的定義的類爲泛型。

教材學習中的問題和解決過程

  • 問題1:在學習堆棧過程當中,不理解:html

    與Stack類不一樣的是,在JavaAPI中沒有實現隊列的類。java

是什麼意思?git

  • 1.(〃'▽'〃)本題解答:
    • 首先我先去找了找javaAPI究竟是什麼?編程

      API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件的以訪問一組例程的能力,而又無需訪問源碼,或理解內部工做機制的細節。數組

運行Java程序時,虛擬機裝載程序的class文件所使用的Java API class文件。全部被裝載的class文件(包括從應用程序中和從Java API中提取的)和全部已經裝載的動態庫(包含本地方法)共同組成了在Java虛擬機上運行的整個程序。數據結構

  • 而後再去了解一下隊列的使用:app

    在java5中新增長了java.util.Queue接口,用以支持隊列的常見操做。Queue接口與List、Set同一級別,都是繼承了Collection接口。ide

- javaAPI中沒有實現隊列的類,因此只能經過Queue接口來實現隊列。
  • 問題2:若是要將基本類型的數據壓入堆棧,則必須先用相應的包裝類將數據封裝爲對象?
  • 2.(〃'▽'〃)本題解答:Stack 類表示後進先出(LIFO)的對象堆棧。它經過五個操做對類 Vector 進行了擴展 ,容許將向量視爲堆棧。它提供了一般的 push 和 pop 操做,以及取堆棧頂點的 peek 方法、測試堆棧是否爲空的 empty 方法、在堆棧中查找項並肯定到堆棧頂距離的 search 方法。

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

  • 問題1:在作pp13.3時不知道如何設置節點用來排序。
  • 1.(〃'▽'〃)本題解答:從新看書去理解。在編寫的時候須要一個Node類(類中類)來充當結點的模型。咱們知道,Node類有兩個屬性,一是存放數據的data,二是存放下一結點的引用。list是最開始的一段內容,若是要實現一些方法,就可使用節點使鏈表造成動態結構。
  • 問題2:在實現過程當中遇到的問題。
    函數

  • 2.(〃'▽'〃)本題解答:
    這個問題是我代碼中指向的問題,應該是屬於邏輯不清晰的緣由。我不知道該如何表述錯誤及其緣由。等我真正學會後再來補這裏的博客吧。(;へ:)
    2018年5月24日晚上0:21凌晨補博客啦,我終於基本明白了。在指向的時候,前一個節點要指向後一個節點,後一個節點不能爲空。當被指向爲空時,就會報錯。學習

代碼託管

上週考試錯題總結

  • 問題1: A Java program can handle an exception in several different ways. Which of the following is not a way that a Java program could handle an exception?(Java程序能夠以幾種不一樣的方法處理異常。下列哪種不是Java程序可以處理異常的方法?)
    A . ignore the exception(忽略異常)
    B . handle the exception where it arose using try and catch statemen(使用try和catch語句處理異常)
    C . propagate the exception to another method where it can be handled(將異常傳遞到能夠進行處理的另外一種方法裏面)
    D . throw the exception to a pre-defined Exception class to be handled(將異常拋出爲一個預先定義的異常類)
    E . all of the above are ways that a Java program could handle an exception(以上全部這些都是Java程序能夠處理異常的方法)
  • 問題1分析和領悟:正確答案是D,而我選的是與之相去甚遠的E。我覺得這些方法均可以處理異常,然而,異常不會被拋出異常類。處理異常只有三種方法,根本不處理異常,當異常發生時處理異常,在程序的某個位置集中處理異常。因此,將問題拋出爲一個預先定義的異常類是不可能實現的。
  • 問題2:An exception can produce a "call stack trace" which lists(一個異常能夠產生一個「調用堆棧跟蹤」,關於調用堆棧蹤影下面有如下說法)
    A . the active methods in the order that they were invoked(順序排列被調用的方法)
    B . the active methods in the opposite order that they were invoked(以相反的順序排列出調用的方法)
    C . the values of all instance data of the object where the exception was raised(異常被提出的對象的全部實例數據的值)
    D . the values of all instance data of the object where the exception was raised and all local variables and parameters of the method where the exception was raised(在提出異常的對象的全部實例數據的值以及所提出異常的方法的全部局部變量和參數)
    E . the name of the exception thrown(拋出異常的名稱)
  • 問題2分析和領悟:正確答案選B,我選了A,調用堆棧跟蹤提供了儲存在運行時堆棧中的方法的名稱。方法名稱從堆棧中刪除並以相反的順序放置。也就是說,最先的方法是先放在這裏,下一個方法其次,等等,因此最近調用的方法是在堆棧上最後一項。堆棧跟蹤而後以相反的順序顯示全部異常調用的方法。
  • 問題3:An exception that could also arise in the try statement that does not have an associated catch statement is(try-catch語句中沒有catch子句也可能出現的異常是)
    A . ClassNotFoundException
    B . IllegalArgumentException
    C . NegativeArraySizeException
    D . NullPointException
    E . OutOfMemoryException
  • 問題3分析和領悟:正確答案選D,我選了B,這道題是不會作不會作不會作 NullPointerException是Java語言中的一個異常類,位於java.lang包中,父類是java.lang.RuntimeException,該異常在源程序中能夠不進行捕獲和處理。ClassNotFoundException、非法參數異常和OutOfMemoryException將不會被拋出,由於try語句中沒有任何代碼,它們要麼調用某個未知的類,要麼使用一個參數,要麼處理新內存的生成。只有當實例化一個數組時,纔會出現NegativeArraySizeException。關於NullPointException的詳細解釋
  • 問題4: The idea that an object can exist separate from the executing program that creates it is called(一個對象能夠單獨於產生它的執行程序的想法被稱爲)
    A . transience(短暫)
    B . static(靜態)
    C . persistence(持久性)
    D . serialization(序列化)
    E . finality(最後的事物)
  • 問題4分析和領悟:正確答案選C,我選了E。對象存儲在內存中,當對象再也不被引用時,它們會被垃圾收集器回收。當Java程序終止時,沒有引用對象,所以全部對象都被回收。然而,爲了未來的使用,可以保存任何給定的對象是可取的。這種特性稱爲持久性,它的功能是將對象的實例數據保存到文件中。這能夠經過將每一個實例數據寫入數據文件來完成,可是使用對象序列化簡化了。
  • 問題5: A processing stream is a data stream that(一個處理流數據流
    能夠?)
    A . can manage both input streams and output streams at the same time(同時輸入流和輸出流)
    B . performs some manipulation or process on the data(對數據執行一些操做或過程)
    C . can only manage input streams(只能管理輸入流)
    D . operates on input and output devices but not files(操做用輸入和輸出設備而不是文件)
    E . can manage byte streams and character streams at the same time(能夠同時管理字節流和字符流)
  • 問題5分析和領悟: 正確答案選B,我選了A。數據流表示一個特定的源或目標流,用於輸入或輸出。處理流就像一個數據流,其中一些額外的進程是添加到輸入或輸出中。例如,一個處理字節流可能會從一個文件中輸入全部的條目,並刪除任何不是數字的ASCII字符,這樣輸入的輸入就不會拋出NumberFormatException。
  • 問題6: System.err is a(n)(System.err是一個)
    A . input stream(輸入流)
    B . GUI dialog box that indicates when an error has arisen(顯示錯誤發生時的GUI對話框)
    C . object(對象)
    D . Error subclass(錯誤的子類)
    E . RuntimeException subclass(RuntimeException的子類)
  • 問題6分析和領悟: 正確答案選C,我選了B,這道題能夠用書本上353頁的標準IO流來解釋。
  • System類中有三種對象引用變量(in,out和err),分別表明了三種I/O流,這些對象引用變量都聲明爲公共可見性和靜態屬性,以即可以經過System類直接訪問。

  • 問題7:The Scanner class provides an abstraction for input operations by(Scanner類爲輸入操做提供了一個抽象的?)
    A . using try and catch statements to catch any IOException instead of throwing the Exception elsewhere(使用try-catch語句捕捉任何的IOException,而不是將異常拋出其餘地方)
    B . parsing input lines into individual tokens(將輸入行分割爲爲單個字符)
    C . performing conversion operations from String to the appropriate type as specified in the Scanner message(在掃描消息中指把字符串轉換到適當類型)
    D . inputting from the standard input stream if create is called using System.in(若是建立的調用是使用系統的,那麼從標準輸入流中輸入)
    E . all of the above(以上全部)
  • 問題7分析和領悟: 正確答案是E,我選了A。Scanner類實現了在沒有細節的狀況下執行輸入操做的抽象過程。這些細節包括導入java.io類,以某種方式處理IOexception,從標準輸入流中輸入,將輸入劃分爲單個字符串,並根據須要將每一個字符串轉換成輸出請求。
  • 問題8: The term "exception propagation" means(術語「異常的傳遞」是指?)
    A . an exception is caught by the first catch clause(一個例外被第一個catch語句捕獲)
    B . an exception not caught by the first catch clause is caught by an outer (enclosing) catch clause(不被第一個catch子句捕獲的異常被一個外部(封閉的)catch子句捕獲)
    C . exceptions are caught, sequentially, by catch clauses in the current try block(異常是被當前try語句塊中的catch子句捕獲的)
    D . exceptions always are caught by the outermost try block(異常老是被最外層的try塊捕獲)
    E . none of the above(以上都不是)
  • 問題8分析和領悟:正確答案選E,我選了B, 異常的傳遞意味着一個異常須要匹配的catch子句在當前try語句塊中沒有,而後在下一個封閉try語句塊中去尋找···直到異常已經被匹配的catch子句找到或到達main函數結束。
  • 問題9: PrintWriter is a better output stream class than PrintStream because PrintWriter(PrintWriter比起PrintSteam是一個更好的輸出流類,由於PrintWriter)
    A . has both print and println methods and PrintStream only has print(有print和println方法而PrintStream只有print方法)
    B . can output both byte and character streams and PrintStream can only output byte streams(能夠輸出字節和字符流,而PrintStream只能輸出字節流)
    C . has error checking mechanisms as part of the class and PrintStream does not(將錯誤檢查機制做爲類的一部分,而PrintStream則沒有)
    D . will not throw checked exceptions and PrintStream will(不會拋出檢查異常和PrintStream)
    E . all of the above(上面全部的)
  • 問題9分析和領悟: 正確答案選C,個人答案是B。PrintWriter類是一個Writer類,而PrintStream類是一個流類。主要的區別在於PrintWriter是專門爲文件而設計的,所以有錯誤檢查機制而不是PrintStream的一部分。
  • 問題10:All run-time Errors throw Exceptions.
    A . true
    B . false
  • 問題10分析和領悟:正確答案是false,我選的true,理解提議有誤。Java將任何可拋出的對象都歸爲一個錯誤或一個異常,所以沒有運行時錯誤拋出異常。運行時錯誤致使程序終止。異常能夠被處理,以便程序繼續執行(只有在正確處理異常時)。
  • 我以爲此次測驗挺難的,有好多知識點都不會,此次10道改錯大概花了兩個小時,並且理解的仍是很不到位,只能慢慢補上了

結對及互評

-20172301
-20172304

點評模板:

  • 博客中值得學習的或問題:
    • 20172301:博客中自學程度很是好,他是真的深刻進去學懂了程序設計的內核,真的佩服!鼓掌鼓掌!
    • 20172304:博客內容仍是有點簡略,但願能夠更加的詳細一點。

其餘(感悟、思考等,可選)

這是本學期最後一次學習課本所寫的總結博客了。總以爲一本書太厚一學期太長,但就是很快的在本身指縫中間溜走了。在學習這本書的時候收穫了自主性和思考性,固然還有不少疑問還藏在書本的字裏行間。之後仍是要多翻翻,多看看這本書才能夠。

前幾天看本身之前的摘抄本,看到這樣一段話:

人可否有好的心態,在很大程度上取決於價值觀。一個價值觀正確且堅決的人,他知道人生中什麼是重要的,什麼是不重要的,對重要的看得準、抓得住,對不重要的看得開、放得下,大事有主見,小事能超脫,心態天然會好。

價值觀於本身而言,就像是潛在的一根繩子,一頭系在本身身上,一頭抓在命運手裏。當咱們編織好本身繩子系在本身身上的時候,咱們要走向何方已經冥冥中定下了。因此,在編織本身繩子的時候,仍是須要足夠的去了解本身,知道本身想要什麼,這纔是對於本身而言最重要的。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積)
目標 5000行 30篇 400小時
第一週 100/100 1/1 15/15
第二週 377/477 1/2 20/35
第三週 280/757 2/4 22/57
第四周 973/1730 1/5 35/92
第五週 1000/2730 1/6 40/132
第六週 729 /3459 1/7 40/172
第七週 660/4119 2/9 30/192
第八週 1417/5536 3/12 40/232
第九周 1139/6675 2/14 60/292
第十週 758/7433 2/14 40/332

參考資料

相關文章
相關標籤/搜索