20165214 第六週學習任務

學號 2017-2018-2 《Java程序設計》第六週學習總結

教材學習內容總結

  • 第八章
    • 8.1 String類:String類在java.lang包中,因此能夠直接使用。String類是final類,因此它不能有子類。
      • 8.1.1 String對象的構造分爲三種
        • ①String常量也是對象,如"你好",也有本身的引用和實體。
        • ②用String類聲明、建立對象,如String s = new String("we are students");,此時s存放着引用,而用戶沒法輸入String對象的引用,System.out.println(s);輸出的是s所存放的內容(實體)。還有兩個經常使用的構造方法:String(char a[])String(char a[],int i,int len)用來提取字符數組a中的字符來建立String對象。
        • ③把String常量的引用賦值給一個String對象,這裏實際賦值的到String對象的是String常量的引用。
      • 8.1.2 字符串的並置:String對象能夠用「+」進行並置運算,即收尾相接獲得一個新的String對象。若是兩個常量進行並置運算,獲得的也是常量,若常量池沒有這個常量則加入它;若是參與運算的只要有一個是變量,Java就會存放新String對象的引用和實體。
      • 8.1.3 String類的經常使用方法
        • public int length用來獲取一個String對象的字符序列的長度。
        • public boolean equals(String s)用來比較當前String對象的字符序列是否與參數s指定的String對象的字符序列相同。
        • public boolean startsWith(String s)public boolean endsWith(String s)分別用來判斷當前String對象的字符序列前綴\後綴是否等於s的字符序列
        • public int compareTo(String s)用來按Unicode順序與s比較大小,從第一位開始比,直到比出結果。相同返回0,大於s返回正數,小於s返回負數。
        • public boolean contains(String s)用來判斷當前String的字符序列是否包含參數s的字符序列。
        • public int indexOf(String s)public int lastIndexOf(String s)用來檢索在當前字符序列中第一次\最後一次出現s字符序列的位置並返回,找不到返回-1.
        • public String substring(int startpoint,int end)用來得到一個與當前對象的第startpoint個字符到第end-1個字符相同的字符序列。
        • public String trim()用來獲得當前對象去掉先後空格後的字符序列
      • 8.1.4 字符串與基本數據的相互轉化:方法public static int parse*(String s)將數字組成的字符序列轉化爲相應指定類型的數;方法public static String valueOf(* n)將指定類型的數轉化爲字符序列。
      • 8.1.5 對象的字符串表示:使用public String toString()方法,得到當前對象的字符串表示,能夠進行重寫。
      • 8.1.6 使用public void getChars(int i,int j,char c[],int begin)來說字符序列的第i個到j-1個字符存放在字符數組c中,從begin位置開始存放;public char[] toCharArray()來創造一個字符數組c裏面存放着當前對象的字符序列。將字符序列轉化爲字節數組也是類似的用法。
      • 8.1.7 正則表達式及字符串的替換與分解
        • 正則表達式:正則表達式是一個String對象的字符序列,通常用來檢查某段字符是否與正則表達式匹配。用public boolean matches(String s)來檢查是否匹配
        • 字符串的替換:public String replaceAll([正則表達式],[要代替的內容]);,把當前字符序列中知足正則表達式的部分替換成相應的內容。
        • 字符序列的分解:public String[] split([正則表達式]);來以匹配正則表達式的序列爲間隔,分解出當前字符序列的一些字符串,放在字符串數組中。
    • 8.2 StringTokenizer類:該類創造的對象(也稱字符串分析器)也是用來分解當前字符序列,有兩種構造方法:①StringTokenizer(String s)使用默認的分隔標記(空格、換行、回車等)②StringTokenizer(String s,String delim),參數delim中的任意排列組合被做爲分隔標記。字符串分析器能夠調用nextToken()方法來得到下一個單詞,hasMoreTokens()方法來得到分析器中計數變量的狀態。
    • 8.3 Scanner類:該類的對象也能夠用來從字符序列中解析出程序所需數據
      • Scanner對象能夠調用useDelimiter(正則表達式)把正則表達式做爲分隔標記。其餘的一些用法以前已經有總結過。
      • Scanner類與StringTokenizer類的區別:①Scanner類速度慢,省內存;StringTokenizer類速度快,佔用較多內存。②Scanner類無法直接指導單詞個數,須要一個個取出來。
    • 8.4 StringBuffer類:該類的對象能夠用來存放一個可變的字符序列(以前的String類是不能夠的)。可使用append方法追加字符序列在原有序列後面。
      • 三個構造方法①StringBuffer();分配初始容量,能夠容納16個字符;②StringBuffer(int size);按指定大小分配初始容量;③StringBuffer(String s);分配初始容量爲s的長度加16
    • 8.5 Date類和Calendar類
      • 8.5.1 Date類:使用無參數的構造方法能夠獲取建立對象本地計算機的時間和日期;帶參數時,若是參數爲正,獲得公元時間加上該參數的時間,若是參數爲負,獲得公元時間減去該參數的時間。
      • 8.5.2 Calendar類能夠調用方法getInstance()能夠初始化日曆對象,而後能夠調用set(年,月,日,時,秒,分)方法來翻日曆。
    • 8.6 日期的格式化:使用format方法對日期進行格式化format(Locale locale,格式化模式,日期列表)能夠按格式輸出指定地域的時間表示。
    • 8.7 能夠調用Math類來進行許多數學上的計算;能夠調用BigInteger類來處理特別大的整數;能夠調用Random來得到指定範圍和形式的隨機數。
    • 8.8 數字格式化
      • 仍然使用format方法來對數字進行格式化:format("格式",數字);,默認順序爲從左到右,但也可使用[數字]$對指定位置進行格式化。
      • 格式化整數與浮點數與C語言的方法類似。
    • 8.9:Class類也能夠用來建立對象(日常使用new運算符+類的構造方法);Console類的對象調用readPassword()方法來使得輸入的文本不回顯。
    • 8.10:使用Pattern類和Matcher類能夠進行字符序列模式的匹配。
  • 第十五章:泛型和集合框架
    • 15.1 泛型。可使用class 名稱 <泛型列表> 聲明一個類,<>裏面能夠是類和接口,但不能是基本數據類型。泛型能夠做爲一種新的聲明方式。
      • 使用泛型時,沒必要進行強制類型轉換。
    • 15.2 鏈表。鏈表的性質跟C同樣,可是定義和使用不同,比C語言要方便不少。使用LinkedList 來建立鏈表對象。鏈表對象有一個很重要的方法是iterator(),使用它能夠得到一個Iterator對象,能夠對鏈表進行遍歷(迭代)。鏈表還能夠進行排序、查找、洗牌、旋轉操做。
    • 15.3 堆棧。堆棧是「後進先出」的數據結構。
    • 15.4 散列映射。使用HashMap<K,V>泛型類建立的對象稱做散列映射;
    • 15.5 樹集。TreeSet 類建立的對象叫作樹集,在樹集中,按字典順序從左到右遞增,從上到下遞減。
    • 15.6 樹映射。TreeMap<K,V>對象爲樹映射。樹映射的節點能夠存儲關鍵字、關鍵值對。排序時,按照關鍵字升序排序。

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

  • 問題1:使用Calendar的對象來調用方法翻動時間,可否翻到將來的時間,查閱將來的某一天是周幾?
  • 問題1解決方案:事實證實是能夠的,我調用set方法,把時期改爲2066年6月6日,獲得的結果是週日。

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

  • 問題1:在例題8.5中,代碼沒有敲錯,可是編譯總是不經過,顯示
    java

  • 問題1解決方案:這個例題應用了java.util包中的Date類,可是在例題中沒有體現,在主類前面加上import java.util.*;解決了問題。
  • 問題2:調試第十五章的代碼的時候,出現了這樣的問題:
    git

  • 問題2解決方案:參考這篇文檔,在main方法前介入了@SuppressWarnings("unchecked")在解決了問題。正則表達式

代碼託管

上週考試錯題總結

  • 錯題1
  • 錯題1解決:忽略了當父類與子類變量、方法相同時,在沒有super關鍵字修飾的狀況下,默認調用子類的變量、方法。數組

  • 錯題2
  • 錯題2解決:審題不細心,沒注意看到在分號前面跟了一個括號。抽象方法是不能有方法體的,即時方法體裏面是空的。數據結構

  • 錯題3
  • 錯題3解決:概念沒了解清晰。D中應當藉助super關鍵字也不能直接操做。app

  • 錯題4
  • 錯題4解決:這道題應當是答案錯了,正確答案是A。框架

  • 錯題5
  • 錯題5解決:因爲接口中的常量都是static類型的,因此能夠直接使用接口名來調用接口常量。dom

其餘

這周的學習任務比較重,雖然學得很累,可是也學到了不少有用的內容,感受仍是很值得的。
另外,這周我還學習了使用API,不得不說,API真是Java學習的一把利劍。之前遇到一些問題,上網直接搜也很難搜到,如今只要查API文檔,幾分鐘就能解決問題。我相信API的使用會讓個人學習更加有效率。我以爲這是我這周所學到的最好的東西,畢竟學會學習纔是最重要的。從此也會更加努力。學習

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積)
目標 5000行 30篇 400小時
第一週 36/36 1/1 8/8
第二週 432/468 2/3 15/23
第三週 964/1432 1/4 16/39
第四周 725/2157 1/5 14/53
第五週 1428/3585 3/8 18/71
第六週 1323/4908 1/9 17/88
  • 計劃學習時間:18小時.net

  • 實際學習時間:17小時

相關文章
相關標籤/搜索