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

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

一個人 枚舉 閱讀 byte 這一 進行 代碼量 找到 語言

1.本周學習總結
本周學習了如何掌握各種數據類型例如byte,short,int,long,double,float,char,boolean,還有枚舉類和String類的應用,以及各種運算符合表達式的使用。還有自動裝箱是指把一些基本類型轉換成Integer的類型,自動拆箱是把Integer類型轉換成基本類型。
2.書面作業
1.String-使用Eclipse關聯jdk源代碼
1.1 查看String對象的源代碼(截圖),分析String使用什麽來存儲字符串?
技術分享 String使用一個叫_Ptr的指針,這個指針指向的是儲存的字符串的首地址。
1.2 分析其構造函數public String(char value[])的作用?
public String(char value[])的作用就是把輸入的字符串復制到value裏面。
1.3 閱讀public String replace(char oldChar, char newChar)方法的代碼,回答String的不可變性在該函數中如何體現?(重點)
因為使用public String replace(char oldChar, char newChar)這個函數時,會生成一個新的和原來字符串長度相等的字符串,返回的還是原來的字符串,所以體現了String的不可變性。
1.4 簡述String與字符數組的關系,使用字符數組就可以處理字符串,為什麽還需要String呢?
字符數組最後一個元素必須為null,而String提供了更多方法去操作字符串。
2.StringBuilder
2.1 結合PTA -2(StringBuilder) ,說明為什麽頻繁修改字符串時,應該使用StringBuilder而不是String?
StringBuilder的執行速度更快。
2.2 閱讀jdk文檔,查詢StringBuilder的append(char[] str)方法功能是什麽?試分析StringBuilder內部使用什麽來存放字符?調用StringBuilder的append(char[] str)方法時,是如何實現添加字符的操作?
功能是將char所指參數追加到序列中。StringBuilder內部使用char[]數組來存放字符。
3.字符串與字符串池
3.1 嘗試使用字符串池的概念解釋如下程序段輸出結果,並回答這段代碼創建了幾個字符串對象:String str1 ="hi", str2="hi"; String str3 = new String(str1) System.out.println(str1==str2);
輸出結果為“true”,這段代碼創建了兩個字符串對象,str1和str2指向同一個對象,而str3是新建了一個。
3.2重點:對基本類型我們可以使用==比較兩個值是否相等,對於引用類型(如String, Integer、數組等)為什麽不能使用==比較?應該怎樣比較他們的值是否相等呢?
主要原因是地址不同,用==會出錯,如果是引用類型一般用equals(),PTAStringBulider那題就有用到。
4.包裝類
4.1 Integer i = 100;//100是基本類型,i是引用類型,為什麽可以將100賦值給i?Integer x = 100; int y = x+1;x++;這一串命令中包含了些什麽操作?
這就是自動裝箱操作,把一般類型轉換為引用類型。
4.2 Java為什麽有了基本數據類型,還需要其包裝類呢?包裝類能給我們帶來什麽好處呢?
Java是一個面相對象的編程語言,而基本數據類型不是面向對象,所以需要包裝類。好處就是方便了類型之間的轉換。
5.實驗總結
5.1 結對編程實踐:使用結對編程的方式完成本周編程題目,即兩個人同時合作完成實驗題目(可1題也可多題,但最好是是兩個人都沒做過的題目)。推薦實施步驟:1.兩個人坐在同一臺電腦屏幕前判題,討論、決定大概由誰先寫。2. 1個人先編5分鐘(自己商量多少分鐘),同時另一個人觀察對方編程或者查相關資料。3. 5分鐘後,簡單討論後,換另外一個人繼續編(請一定要換,另一個人如果無法接受應由第一個人講解大概思路以方便其接受)。並完成如下作業:a.描述結對隊友姓名、結對過程,提供非擺拍的兩人在討論、細化和編程時的結對照片。b.結對編程真的能夠帶來1+1>2的效果嗎?通過這次結對編程,請談談你的感受和體會(如是否有利於自己編程水平的提高、是否有利於開拓編程思路)。
老師由於我是網絡單獨一個人和三個計算四班的同學住在一起,所以很少去同班同學宿舍討論,但是舍友在Java上和我也有交流,做pta時會分享思路。1+1也許真的大於2,因為在討論過程中我了解了更多的之前不知道的函數。
5.2 PTA-1綜合小測驗
fib我定義了pre,now,next來進行計算,一開始pre=0,now=next=0;sort我用nextline()進行接受,對每個字符進行處理,存到list中,調用Collection的sort方法對list進行排序,再定義int數組然後將list中的 數都賦進去,最後用ToString()輸出。seach直接調用list中的binarysearch函數傳入要查找的值,找到的話就會輸出下標。get對輸入的身份證用subString進行拼接。
5.3 PTA-3身份證排序。並回答:使用sort2方法進行排序可以對出生年月日進行升序排序,如果現在有需要對其進行降序排序,或者按照其中的出生月份排序,怎麽解決呢?
定義一個類,在類裏定義一個類方法,當傳入身份證的字符串時會對類中的兩個變量進行賦值,一個id一個ymd(年月日),id輸入完成後,對類的數組中按照ymd進行冒泡排序,自定義比較函數cmp來比較兩個id對象中的ymd字符串,當接受的字符串為sort1時,用for each輸出ymd,接受的是sort2時用同樣的方法輸出id。
5.4 PTA-4動態數組
只需要用兩個循環以及Arrays.deepToString()將乘法表打印出來。
5.5 (重點:小測題目)PTA-8 ArrayList入門。並回答:為什麽有了數組還要使用ArrayList?

3.碼雲及PTA
3.1. 碼雲代碼提交記錄

技術分享

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

技術分享

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

技術分享

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