20172305 《程序設計與數據結構》第四周學習總結

20172305 2017-2018-2 《程序設計與數據結構》第四周學習總結

教材學習內容總結

本週內容主要爲書的4.1-4.5以及7.1-9的內容:

  • 第四章

    1.編寫類與方法(構造方法的結構和用途)
    
    2.實際參數與形式參數、public與private、return與void的區別與含義
    
    3.UML類圖的含義與形式
  • 第七章

    1.靜態類(Math類)靜態變量、靜態方法
    
    2.類間關係(依賴關係、聚合關係、繼承關係)
    
    3.接口的使用,可以在某個類中實現接口的方法(Comparable、Iterator)
    
    4.軟件活動開發、方法設計、方法重載、測試(黑盒測試、白盒測試)
    
    5.GUI設計

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

  • 問題1:構造方法
  • 問題1解決方案:經過百度和老師的講解,有了必定的認識,構造方法主要用來在建立對象時初始化對象, 即爲對象成員變量賦初始值,總與new運算符一塊兒使用在建立對象的語句中。特別的一個類能夠有多個構造函數 ,可根據其參數個數的不一樣或參數類型的不一樣來區分它們 即構造函數的重載。構造方法的名字必須與定義它的類名徹底相同,沒有返回類型,甚至連void也沒有。php

  • 問題2: return與void的關係
  • 問題2解決方案:經過書上的理解以及本身的操練,每個方法中能夠有多個return,但並非返回的屢次,而是在不一樣狀況下進行的返回。同時,在構造方法中沒有返回值。html

    不返回值的方法一般不包含return語句,當 該方法執行結束時將自動返回調用方法。java

  • 問題3:形式參數與實際參數
  • 問題3的解決辦法:二者是在調用的時候進行結合的,一般實參會將取值傳遞給形參,形參去以後進行函數過程運算,而後可能將某些值通過參數或函數符號返回給調用者。經過理解,參數就如同之前的sinx中x,而實際參數是形式參數的實例化,實際參數所表明的值給個形式參數,進行方法運算。git

    方法聲明首部中的參數名,被稱爲形式參數。
    在一次方法的調用中實際傳遞給方法的參數,被稱爲實際參數。程序員

  • 問題4: 接口問題
  • 問題4的解決辦法:練習接口的問題,並把接口的練習於PP7.4,代碼的問題在代碼問題部分說明,對於接口,是一組常量和抽象方法的集合,接口中沒有實現的方法,參數列表的方法聲明頭後面僅跟着分號。接口不能被實例化,接口的應用,大大提升了方法步驟的靈活性,經過implements實現某個接口。web

  • 問題5: 靜態類成員
  • 問題5的解決方法:靜態類僅包含靜態成員,不能被實例化,靜態變量能夠由全部的類實例共享,靜態方法能夠經過類名稱調用。靜態類是密封的,所以不可被繼承。靜態類不能包含構造函數,但仍可聲明靜態構造函數以分配初始值或設置某個靜態狀態。安全

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

  • 問題1:含布爾型的方法的運用
  • 問題1解決方案:布爾型的運用本身練得不多,因此對Car類的編寫一直止步於布爾型的應用,糾結半天,就是不會弄,巧婦難爲無米之炊,看了好幾遍的數就是不會弄,經過借鑑別人的代碼,理解了並與if語句聯合使用解決問題了。

  • 問題2:set與get二者的運用
  • 問題2解決方案:set與get的理解,剛開始只保持在書上內容,一個是修改,一個是訪問,經過實驗發現,這部份內容與返回值的問題有聯繫,對於set只是改變值,無返回值。並且,get是訪問,能夠調用其數值或是字符串什麼的,set沒有此做用。
    數據結構

  • 問題3:構造方法中的實際參數問題
  • 問題3解決方案:實際參數是字符串的時候,要加「」,我沒加「」致使了問題提醒,很神奇覺得又出現bug了,結果對比了例題才發現本身沒加「」形成的,犯了這麼低級的錯誤,尚未即便發現,困擾了半天才解決,仍是要歸結爲本身的馬虎形成的。
    app

  • 問題4:PP4.6的問題
  • 問題4解決方案:題目中要求判斷盒子是否裝滿的問題,我一直沒有找到很簡單的方案,僅僅經過增長一個貨物的實際高度,與盒子高度作比較,才能判斷。並且這樣就有可能貨物比盒子要高的可能性,這種也要算裝滿麼?並且感受本身的布爾型的用法好像與題意有些不符,結果是作出來了,可是有很大的修改地方,值得我不斷的進行修改。
    ide

  • 問題5:接口的問題與PP7.4
  • 問題5的解決方案:在RationalNumber類中實現Comparable接口,我認爲得像PP7.8同樣去弄,編寫一個接口類,結果就開始糾結比較以後輸出的問題,我是在接口類中簡單定義一些,仍是總體移到RationalNumber類中進行編譯,還有我想到這個輸出的應該是什麼,是要告訴用戶這是兩個有理數是近似相等,仍是不想等的,感受本身是一個問題男孩因此帶着這一堆問題跑去問學長,經過兩個多小時的交流,我發現這個類不用編寫,Compararle類的comparaTo是在類庫中就有的,並且就和以前書上介紹String類的comparaTo同樣,進行同類型的比較,並且輸出的是正整數、負整數和零,根據其輸出的數值和其正負來判斷出來,不用輸出一串什麼字符串之類的問題。並且,看到學長幫助的修改下,我發現學長在前面接口出加了 ,問學長學長說到之後會學,故意賣個關子,故弄玄虛,結果我沒查到這是什麼......(果真大佬就是大佬,強大到輕輕鬆鬆的解決了我全部的問題,在此表示感謝!)

代碼託管

上週考試錯題總結

  • 錯題1 What happens if you attempt to use a variable before it has been initialized?(若是在初始化以前嘗試使用變量,會發生什麼狀況?) A syntax error may be generated by the compiler (語法錯誤能夠由編譯器生成。)
    A runtime error may occur during execution(執行期間可能出現運行時錯誤。)
  • 錯誤解析: 不少時候,編譯器可以檢測到未初始化變量的嘗試使用,在這種狀況下會產生語法錯誤。若是在編譯器中使用脫逃檢測,那麼在使用時就會出現運行時錯誤。Java是一種很是「安全」的語言,所以若是在計算中使用未初始化的變量,它不容許使用「垃圾」或「0」。本題所說的內容本身也沒有去試過,只能憑本身學過的內容進行判斷。並且,我認爲只有語法錯誤,不會產生運行錯誤的。
  • 錯題2 What is the function of the dot operator?(點算符的函數是什麼?)
    It allows one to access the data within an object when given a reference to the object(它容許在給定對象的引用時訪問對象中的數據。
    )It allows one to invoke a method within an object when given a reference to the object(當給定對象的引用時,它容許在對象中調用方法。)
  • 錯誤解析: 點運算符在對象引用以後直接追加,而後是須要訪問的數據或方法。在數據的狀況下,訪問多是用於讀取或寫入。在方法的狀況下,訪問是容許一個調用方法。浮點數內的點是一個小數點,而不是點算符。因此,一個點的含義無非就是引用數據或是調用方法。本題沒有全面的考慮點運算符的做用,並且因爲E選項的迷惑,不太敢選擇引起的錯誤。
  • 錯題3 In the StringMutation program shown in Listing 3.1, if phrase is initialized to "Einstein" what will Mutation #3 yield if Mutation #1: mutation1 = phrase.concat(".")?(在清單3.1中所示的string突變程序中,若是短語被初始化爲「Einstein」,那麼若是突變#1:mutation1 = phrase.concat(「。」)mutation3會發生什麼突變呢?)XINSTXIN.
  • 錯誤解析: 本題最不該該錯,看到是和書上的例題有關,加上用有道詞典的翻譯,結果有道就翻譯錯了,譯文中根本沒有mutation3的變化,我也是醉了。
  • 錯題4 Consider the following two lines of code. What can you say about s1 and s2?
    String s1 = "testing" + "123";
    String s2 = new String("testing 123");(考慮如下兩行代碼。關於s1和s2,你能說些什麼?字符串s1 = "test" + "123";字符串s2 = new String(「test123」);)s1 and s2 are both references to different String objects(s1和s2都是對不一樣字符串對象的引用。)
  • 錯誤解析: 沒有看到中間的空格,誤覺得二者是同樣的,因此選錯。下次定要仔仔細細的看題目。
  • 錯題5 An "alias" is when(一個是當「別名」
    two different reference variables refer to the same physical object(兩個不一樣的引用變量引用同一個物理對象。)
  • 錯題解析: 當對同一物理對象有兩個或多個引用時,就會出現一個「別名」,以便經過引用,能夠讀/寫/修改對象。只侷限於數字的問題,忽略了其餘物理對象,例如字符串了什麼的,均可以。
  • 錯題6 The advantages of the DecimalFormat class compared with the NumberFormat class include(與NumberFormat類相比,DecimalFormat類的優勢包括。)precise control over the number of digits to be displayed(精確控制顯示的數字的數目。) control over the presence of a leading zero
    (控制一個前導零的存在。)
  • 錯題解析: 雖然DecimalFormat比NumberFormat提供了更多的控制,可是經過一個或多個數學方法將截斷保留在程序員手中。%符號將出如今顯示的末尾而不是開始。前導零的應用,是本身沒有嘗試的結果,根據書中的例子,本身只是嘗試在尾部放零,忽略了前導的問題。經過老師的考後的講解,對此有了更深的認識與來理解。
  • 錯題7 These two ways of setting up a String yield identical results:a) String string = new String("123.45");b) String string = "" + 123.45;(兩種設置字符串的方式產生了相同的結果)
    true
  • 錯題解析: Java理解+運算符,當使用數字組合字符串時,應該將數字轉換爲數字字符串,而後再進行鏈接。仍是本身對+的理解不夠到位致使的錯誤,會好好看書的。

  • 本週的答題考的分數較高,但在答題過程當中並無感受每道題都會作,甚至還存在有些題是「憑感受」選上的,感受本身愧對這個成績,不少題不是不肯定,就是不知道,其實不少題無非都是書上的細節部分,或是書上內容的延伸,加之本身這個壞毛病——馬虎,致使的對題理解能夠,卻看錯了題白瞎了分,藍瘦香菇,並且感受學習難度不斷加深,日後更要把時間分配好,好好學JAVA。

感悟

一週半的學習,第四章和第七章,感受有好多代碼要敲,有好多知識要學,感受本身一下回到了高三的感受,知識一點點的加深,至於書上的內容是遠遠不夠平常的應用的,感受本身要是離開書敲個類,估計一半都不會,並且有些知識點特別專業化,難理解,不明白。壓力山大。聽過學長學姐說,經常敲代碼到很晚很晚,也就能夠理解這門科目,要下很大很大的功夫,纔能有所成就。慢慢堅持吧,看到本身的代碼量不斷的突破,仍是有那麼一點點的欣慰的。對於這兩章的內容,還有不少沒有掌握,還有練習沒有敲完,會在日後的日子漫漫的補上的。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 136/136 1/2 15/20
第二週 570/706 1/4 20/38
第三週 613/1319 1/7 23/60
第四周 1249/2568 1/9 30/90

參考資料

相關文章
相關標籤/搜索