1. 程式人生 > >201621123021 《Java程序設計》第2周學習總結

201621123021 《Java程序設計》第2周學習總結

pri 兩個 多少 大小 差異 人在 總結 動態數組 嘗試

201621123021《JAVA程序設計》第二周學習總結

1. 本周學習總結

  • 本周了解了JAVA的基本數據類型,及其與C語言數據類型之間的差異。
  • 知道了JAVA如何對數組進行創建和運用。
  • 了解了JAVA的包裝類,如自動裝箱和自動拆箱。
  • 了解了JAVA作為面向對象的語言,其引用對象為常量池。
  • 知道了String類的一些運用。

2. 書面作業

1.String-使用Eclipse關聯jdk源代碼

1.1 查看String對象的源代碼(截圖),分析String使用什麽來存儲字符串?

技術分享

public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; private int hash; private static final long serialVersionUID = -6849794470754667710L; private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0]; public String() { this.value = "".value; }

由JAVA源代碼的這一段可知,String類使用字符數組來存儲字符串。

1.2 分析其構造函數public String(char value[])的作用?

  • char value[]是數組的聲明,此構造函數的作用是將char數組轉化成string類。

1.3 閱讀public String replace(char oldChar, char newChar)方法的代碼,回答String的不可變性在該函數中如何體現?(重點)

  • 函數中oldchar和newchar本身的字符未發生改變,而是新的字符串引用發生了改變。

1.4 簡述String與字符數組的關系,使用字符數組就可以處理字符串,為什麽還需要String呢?

  • String類是字符數組的延伸,JAVA的源碼中將字符數組轉化成字符串以實現新的數據類型String。
  • String是對字符數組的封裝,通過這樣使得JAVA在字符串中運用更加簡單方便,並且可以直接使用封裝後的函數。

2.StringBuilder

2.1 結合PTA -2(StringBuilder) ,說明為什麽頻繁修改字符串時,應該使用StringBuilder而不是String?

  • string若需要修改字符串需將在字符串常量池中創建新的字符串,以此來達到引用,而stringbuilder可以將一個字符串對象進行修改,從而在頻繁的修改字符串時不需要浪費額外的內存空間來存放新的字符串。
  • 在PTA-2中我們要實現字符串的拼接可以需要頻繁的修改字符串,而此時就需要使用StringBuilder而不是String.

2.2 閱讀jdk文檔,查詢StringBuilder的append(char[] str)方法功能是什麽?試分析StringBuilder內部使用什麽來存放字符?調用StringBuilder的append(char[] str)方法時,是如何實現添加字符的操作?

  • 功能是在字符串數組的後面插入指定內容。
  • StringBuilder通過字符串數組來存放字符。
  • 字符串追加指定內容來添加字符。

3.字符串與字符串池

3.1 嘗試使用字符串池的概念解釋如下程序段輸出結果,並回答這段代碼創建了幾個字符串對象:

String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);

  • 最終輸出結果為"true",因為str1和str2引用是在字符串常量池中同一個對象"hi"。
  • 這段代碼創建了2個字符串對象,分別是"hi",和str3中聲明創建新的字符串對象被str3所引用。

3.2 重點:對基本類型我們可以使用==比較兩個值是否相等,對於引用類型(如String, Integer、數組等)為什麽不能使用==比較?應該怎樣比較他們的值是否相等呢?

  • 因為基本類型用“==”可以比較他們的對象是否相等,而對於引用類型用“==”比較的是引用的地址是否相等,兩者這件比較的對象不一樣。
  • 比較引用類型中引用對象的值,可以使用equal函數進行比較。

3.Wrapper(包裝類)

4.1 Integer i = 100;//100是基本類型,i是引用類型,為什麽可以將100賦值給i?Integer x = 100; int y = x+1;x++;這一串命令中包含了些什麽操作?

  • 將100賦值給i,可以實現引用類型的自動裝箱可以代碼結構更加簡單。
  • 包涵了數據類型的自動裝箱和自動拆箱操作。

4.2 Java為什麽有了基本數據類型,還需要其包裝類呢?包裝類能給我們帶來什麽好處呢?

  • 包裝類型可以實現基本數據類型要實現時比較繁瑣的操作,可以使數據的使用變得簡單。
  • 包裝類型的好處是可以實現基本類型與其的轉換,也可以是基本數據類型難於實現的數據在包裝類中快速實現。

5.實驗總結

5.1 結對編程實踐:使用結對編程的方式完成本周編程題目,即兩個人同時合作完成實驗題目(可1題也可多題,但最好是是兩個人都沒做過的題目)。推薦實施步驟:1.兩個人坐在同一臺電腦屏幕前判題,討論、決定大概由誰先寫。2. 1個人先編5分鐘(自己商量多少分鐘),同時另一個人觀察對方編程或者查相關資料。3. 5分鐘後,簡單討論後,換另外一個人繼續編(請一定要換,另一個人如果無法接受應由第一個人講解大概思路以方便其接受)。並完成如下作業:a.描述結對隊友姓名、結對過程,提供非擺拍的兩人在討論、細化和編程時的結對照片。b.結對編程真的能夠帶來1+1>2的效果嗎?通過這次結對編程,請談談你的感受和體會(如是否有利於自己編程水平的提高、是否有利於開拓編程思路)。

5.2 PTA-1綜合小測驗

  • 本實驗使我對於String類中StringBuilder得以在一定程度內使用,StringBuiider能夠在String引用類型中,對引用對象進行改變,避免了不斷創建新的字符串的尷尬局面。

5.3 PTA-3身份證排序。並回答:使用sort2方法進行排序可以對出生年月日進行升序排序,如果現在有需要對其進行降序排序,或者按照其中的出生月份排序,怎麽解決呢?

  • 本實驗我是用JAVA中的函數substring在數字取所要比較數的範圍,然後再用函數compareTo進行比較,運用冒泡排序法進行排序。
  • 若要將數值進行降序處理,可將改變將冒泡排序法的值大小比較變化下,對出生月份進行排序運用函數substring是身份證的取值範圍發生改變。

5.4 PTA-4動態數組

  • 本實驗要實現動態數組需要先創建一個二維數組,對於數組中未使用的空間使用NULL,來表示此位置為空,對於非空位置,實現輸出。

5.5 (重點:小測題目)PTA-8 ArrayList入門。並回答:為什麽有了數組還要使用ArrayList?

  • 本實驗使我初步了解了ArrayList的使用,能夠在一定的成都上使用動態數組。
  • 數組中運用ArrayList可以實現對內存空間進行自由分配,實現對空間的合理分配。

3. 碼雲及PTA

3.1. 碼雲代碼提交記錄

技術分享

3.2 截圖題集“Java基本語法”PTA提交列表

技術分享

技術分享

3.3 使用老師發的jar程序統計每周的代碼量

行數新增行數文件數新增文件數
324 324 46 46

201621123021 《Java程序設計》第2周學習總結