1. 程式人生 > >20189217 2018-2019-2 《移動平臺開發實踐》第4周學習總結

20189217 2018-2019-2 《移動平臺開發實踐》第4周學習總結

統一 android開發 進度條 hello ava center 開發 分號 value

教材學習內容總結

第12章要點:

要點1:enum

  • enum類可以獨立使用,也可以作為類的一部分。如果需要在應用程序中的多個地方引用它的話,就讓它單獨使用。如果只是用於一個類中,最好讓enum成為這個類的一部分。
  • enum值是區分大小寫的,且按慣例要大寫。
  • 在保證變量只能被賦給一個有效值這方面,enum比靜態final更好。

要點2:java.lang.Enum類

  • enum類沒有公有的構造函數,這使得不可能將其實例化。
  • 它們隱式地是靜態的。
  • 每個enum常量只有一個實例。
  • 可以在enum上調用values方法,以遍歷其枚舉值,該方法返回對象的一個數組。

要點3:枚舉成員

  • 一個enum類可以有構造方法和方法,如果有構造方法,其訪問級必須是私有的或默認的,如果一個enum定義包含了常量以外的其他內容,常量必須在其它內容之前定義,且最後的常量用一個分號結束。

第13章要點:

要點1:

表示 適用於
Instant 表示時間線上的一個時間點 計時
LocalDate 沒有時間部分和時區部分的一個日期 生日
LocalDateTime 日期和時間 訂單配送日期時間
LocalTime 只有時間沒有日期 不關心日期,只需要一個時間
ZonedDateTime 時區 機場航班時間
Duration 納秒級精度的時間量 建模航班時間
Period 天數、月份 計算年齡
DateTimeFormatter 格式化日期和時間 -

第14章要點:

要點1:集合概述

  • 集合也叫容器,提供了一種方法來存儲、訪問和操作其元素。
  • Collection有3個主要的子接口:List、Set和Queue。
  • Collection接口將對象組織到一起。數組不能調整大小,並且只能組織相同類型的對象,而集合允許添加任何類型的對象,並且不強迫你指定初始大小。
  • Map接口可以用於存儲鍵/值對。

要點2:List和ArrayList

  • List又叫序列,是一個有序的集合。
  • ArrayList是最為常用的List的實現。
  • 可以使用索引來訪問其元素,也可以在確切的位置插入一個元素。
  • List使用add來插入一個元素,用set來替換一個元素,用remove來刪除一個元素。
  • List允許存儲重復的元素。
  • Arrays類提供了一個asList方法,允許你一次向一個List添加數組或任意多個元素。
  • List的sort方法可以很容易地對一個List進行排序。

要點3:遍歷一個集合

方法1

for (Iterator iterator = myList.iterator();iterator.hasNext()){
    ...
}

方法2

for (Object object:myList){
    ...
}

方法2是方法1的快捷方式。

要點4:Set和HashSet

  • 和List不同,Set不允許重復的內容。
  • Set允許有最多一個空元素。
  • Set最流行的實現是HashSet。

要點5:集合轉換

將一個Queue轉換為一個List:

Queue queue = new LinkedList();
queue.add("hello");
List list = new ArrayList();

將一個List轉換為一個Set:

List myList = new ArrayList();
myList.add("hello");
Set set = new HashSet(myList);

要點6:Map和HashMap

  • Map保存了鍵到值的映射。
  • Map中不能有重復的元素,並且每個鍵最多映射一個值。
  • Map有幾個實現,HashMap是非同步的,Hashtable是同步的。

第15章要點:

要點1:泛型類型

  • 反省類型常被叫做參數性類型,可以接受參數。
  • 聲明一個泛型類型:
    MyType < typeVar1, typeVar2, ... >
    e.g.

      List<E> myList; 
    E就是所謂的類型變量,也就是能用一個類型替代的變量。
  • 要實例化一個泛型類型,在聲明的時候,傳入相同的參數列表。例如,要創建使用String的一個ArrayList,在尖括號中傳入String。

      List<String> myList = new ArrayList<String>();   

    在Java7及之後的版本中,還可以寫得更精簡:

      List<String> myList = new ArrayList<>();    
  • 使用泛化類型,類型檢查在編譯時進行。

要點2:使用?通配符

  • List<?>表示任意類型的對象的一個列表。
  • 在聲明或創建一個泛型類型的時候,使用通配符是非法的,如下所示:

      List<?> myList = new ArrayList<?>();   //非法    
  • 想要創建接受任意類型的對象的一個List,使用Object作為類型變量,如下面代碼所示:

      List<Object> myList = new ArrayList<>();  

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

  • 問題1:為什麽有些enum類要有構造函數?
  • 問題1解決方案:通過看一些別人寫的代碼發現,這類enum的構造函數是為了添加枚舉元素,設置枚舉元素上下界等功能而存在的。

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

  • 問題1:搭檔的代碼下載下來之後IDEA打開無法build。
  • 問題1解決方案:需要在project structure中手動設置test、sources等目錄的路徑。另外,需要統一language level。
    技術分享圖片

代碼托管

技術分享圖片

上周考試錯題總結

  • 錯題1

    double d = 0.1 + 0.1 + 0.1, System.out.println(i);的結果是0.3.【錯誤】

    因為double是個近似值,它四舍五入後還是0.3。0.3化成二進制其實是個無窮小數,保存成double,只能是個近似值

  • 錯題2

    Java中try…catch…final用來處理異常。【錯誤】

    Java中用try…catch…finally來處理異常。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 200/200 2/2 20/20
第二周 300/500 1/3 17/37
第三周 787/1287 1/4 15/52
第四周 350/1637 1/5 16/68
  • 計劃學習時間:18小時

  • 實際學習時間:16小時

參考資料

  • Java和Android開發學習指南(第二版)

20189217 2018-2019-2 《移動平臺開發實踐》第4周學習總結