20155334 2016-2017-2 《Java程序設計》第七週學習總結

20155334 2016-2017-2 《Java程序設計》第七週學習總結

教材學習內容總結

第十二章:Lambda

認識Lammbda語法

  • Lambda去能夠重複,符合DRY原則,並且Lambda表達式可讀性更好,操做更簡單
  • 匿名類型最大的問題就在於其冗餘的語法,Lambda表達式是匿名方法,它提供了輕量級的語法,從而解決了匿名內部類帶來的冗餘問題。
  • 接口默認方法:在JDK8中,interface定義時能夠加入默認操做,或者稱爲默認方法,forEach()方法自己已有操做,因此不會破壞Iterable現有的其餘操做。在默認方法中不能使用數據成員,由於接口自己不能定義數據成員,也就是默認方法中不能用直接變動狀態的流程。
  • Comparator<String> byLength = (String name1,String name2)->name1.length() - name2.length();編譯器能夠從byLength變量的聲明類型,推斷name1與name2的類型,

Functional與Stream API

  • 使用Optional代替null
  • 標準API的函數接口:
接口名稱 參數個數 有無返回值
Consumer 一個參數 無返回值
Function 一個參數 有返回值
Predicate 一個參數 有返回值,返回值必須是boolean類型的
Supplier 無參數 有返回值
  • Stream與管道

第十三章:時間與日期

時間的度量
- 格林威治標準時間(GMT),現已不做爲標準時間使用,即便標註爲GMT(格林威治時間),實際上談到的的是UTC(Unix時間)時間。
- 在1972年引入UTC以前,GMT與UT是相同的。
- 秒的單位定義時基於TAI。也就是銫原子輻射的振動次數。
- 世界協調時間(UTC),UTC考慮了地球自轉愈來愈慢而有閏秒修正,確保UTC與UT相差不會超過0.9秒。
日曆
- 儒略曆(Julian Calendar)
- 格里高利曆(Gregorian Calendar)
- ISO8601 標準
處理時間日期的Calendar
  • Calendar是個抽象類,java.util.GregorianCalendar是其子類,操做了儒略曆與格里高利曆的混合歷,經過Calendar的getInstance()取得的Calendar實例,默認就是取得GregorianCalendar實例。html

  • Calendar calendar = Calendar.getInstance();
    取得的Calendar實例後,用getTime()取得Date實例,若是要取得年月日等時間字段,可使用get()方法並指定Calendar上的字段枚舉常數。
out.println(calendar.get(Calender.YEAR));
out.println(calendar.get(Calender.MONTH));
out.println(calendar.get(Calender.DATE));
  • 在取得一個Calendar的實例後,可使用add()方法,來改變Calendar的時間。java

  • 人類時間(ISO8601 標準):git

名稱 內容
LocalDateTime 包括日期與時間
LocalDate 只有日期
LocalTime 只有時間
ZonedDateTime 時區的日期與時間
OffsetdateTime 表明UTC偏移量
Year 表示年
YearMonth 表示年月
Month 表示月
MonthDay 表示月日

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

  • 問題1:Java日期時間使用總結
    解答:
    java.util.Date
    java.text.DateFormat(抽象類)
    java.text.SimpleDateFormat(DateFormat的直接子類)
    java.util.Calendar(抽象類)
    java.util.GregorianCalendar(Calendar的直接子類)

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

都是按照課本寫的,沒有啥大問題。編程

代碼託管

上週考試錯題總結

  1. 下面哪條命令能夠把 f1.txt 複製爲 f2.txt ?(A、C)

A .cp f1.txt f2.txtapi

B .copy f1.txt f2.txt函數

C .cat f1.txt > f2.tx學習

D .cp f1.txt | f2.tx.net

E .copy f1.txt | f2.tx設計

8.現有:調試

3.  import java.util.*;
    4.    class ForInTest  {
    5.static List list=new ArrayList();
    6.
    7.public static void main (String  []  args)  {
    8.list. add("a"); list. add("b");list. add( "c");
    9.    //insert code here
    10.    System.out.print (o);
    11.    }
    12.  }
哪一行插入到第9行將致使輸出「abc"?**(D)**

A .for (Iterator o : list.iterator(); o.hasNext (); )

B .for (Iterator o : list)

C .for (Object o : list.iterator())

D .for (Object o : list)

10.給定一個Stream的實例s, 一個Collection的實例c, 下面哪些選項能夠建立一個並行流?(D、F)

A .new ParallelStream(s)

B .c.parallel()

C .s.parallelStream()

D .c.parallelStream()

E .new ParallelStream(c)

F .s.parallel()

結對及互評

評分標準

  1. 正確使用Markdown語法(加1分):
    • 不使用Markdown不加分
    • 有語法錯誤的不加分(連接打不開,表格不對,列表不正確...)
    • 排版混亂的不加分
  2. 模板中的要素齊全(加1分)
    • 缺乏「教材學習中的問題和解決過程」的不加分
    • 缺乏「代碼調試中的問題和解決過程」的不加分
    • 代碼託管不能打開的不加分
    • 缺乏「結對及互評」的不能打開的不加分
    • 缺乏「上週考試錯題總結」的不能加分
    • 缺乏「進度條」的不能加分
    • 缺乏「參考資料」的不能加分
  3. 教材學習中的問題和解決過程, 一個問題加1分

  4. 代碼調試中的問題和解決過程, 一個問題加1分

  5. 本週有效代碼超過300分行的(加2分)
    • 一週提交次數少於20次的不加分
  6. 其餘加分:
    • 週五前發博客的加1分
    • 感想,體會不假大空的加1分
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進狀況的加1分
    • 有動手寫新代碼的加1分
    • 課後選擇題有驗證的加1分
    • 代碼Commit Message規範的加1分
    • 錯題學習深刻的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 結對學習狀況真實可信的加1分
  7. 扣分:
    • 有抄襲的扣至0分
    • 代碼做弊的扣至0分
    • 遲交做業的扣至0分

點評模板:

  • 博客中值得學習的或問題:
    • xxx
  • 代碼中值得學習的或問題:
    • xxx
  • 基於評分標準,我給本博客打分:XX分。得分狀況以下:xxx

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20155319
    • 結對學習內容:相互查看對方代碼,並對學習中遇到的疑問進行交流,合做解決編程過程當中遇到的問題。
  • 上週博客互評狀況

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

Java學習是一個長期的過程,不能一蹴而就,只能按部就班,一步一步來,此外須要老師的細心講解。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 5/5 1/1 10/10
第二週 90/95 1/2 15/25
第三週 131/234 1/3 20/45
第四周 289/523 1/4 21/66
第五週 446/969 1/5 25/91
第六週 720/1689 1/6 25/116
第七週 431/2120 1/7 30/146

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

  • 計劃學習時間:34小時

  • 實際學習時間:30小時

  • 改進狀況:

參考資料

相關文章
相關標籤/搜索