Week02-Java基本语法与类库
一. 本周學(xué)習(xí)總結(jié)
本周學(xué)習(xí)了Java的基本數(shù)據(jù)類型,常量池等概念,然后介紹了包裝類等
二. 書面作業(yè)
1. String-使用Eclipse關(guān)聯(lián)jdk源代碼
1.1 查看String對(duì)象的源代碼(截圖),分析String使用什么來存儲(chǔ)字符串?
用final關(guān)鍵字修飾的的字符數(shù)組
1.2 分析其構(gòu)造函數(shù)public String(char value[])的作用?
傳入字符數(shù)組,在構(gòu)造函數(shù)的作用下生成String對(duì)象
1.3 閱讀public String replace(char oldChar, char newChar)方法的代碼,回答String的不可變性在該函數(shù)中如何體現(xiàn)?(重點(diǎn))
public class Main {public static void main(String[] args) {String Str = new String("ABC");System.out.print("返回 :" );System.out.println(Str.replace('A', 'a'));System.out.print("返回 :" );System.out.println(Str.replace('B', 'b'));}
} 返回 :aBC
返回 :AbC replace()這個(gè)方法把新的字符替換要替換掉的舊字符,然后返回一個(gè)新的字符。上述例子中,原字符串沒有改變,而是產(chǎn)生了新的字符串,體現(xiàn)了String的不可變性。
1.4 簡述String與字符數(shù)組的關(guān)系,使用字符數(shù)組就可以處理字符串,為什么還需要String呢?
字符串是一個(gè)類,而字符數(shù)組是數(shù)組。一個(gè)是String類型的,一個(gè)是char類型的。字符串和數(shù)組之間可以互相轉(zhuǎn)換。深入一點(diǎn)的話,字符串也是由字符數(shù)組來實(shí)現(xiàn)的。使用字符串比較方便一些可以加快字符處理速度,數(shù)組的話比較靈活,可以改變里面的內(nèi)容。
2. StringBuilder
2.1 結(jié)合PTA -2(StringBuilder) ,說明為什么頻繁修改字符串時(shí),應(yīng)該使用StringBuilder而不是String?
String對(duì)字符串進(jìn)行修改操作的時(shí)候,返回了新的字符串,試想有大量字符串進(jìn)行拼接,那么會(huì)新生成很多對(duì)象,雖然系統(tǒng)有自動(dòng)回收機(jī)制,但把字符串寫入內(nèi)存,接著又進(jìn)行清理原來的對(duì)象,然后又新建String對(duì)象,讀取數(shù)據(jù)給新的對(duì)象。這樣的操作效率低。而StringBuilder提供了append的方法,對(duì)已經(jīng)有的對(duì)象直接進(jìn)行修改操作,二者在字符串進(jìn)行大量操作的時(shí)候差距就會(huì)顯現(xiàn)出來了
2.2 閱讀jdk文檔,查詢StringBuilder的append(char[] str)方法功能是什么?試分析StringBuilder內(nèi)部使用什么來存放字符?調(diào)用StringBuilder的append(char[] str)方法時(shí),是如何實(shí)現(xiàn)添加字符的操作?
java.lang.StringBuffer.append(char[] str) 方法追加char數(shù)組,即str參數(shù)為這個(gè)序列的字符串表示形式。數(shù)組參數(shù)的字符追加的順序到這個(gè)序列的內(nèi)容。這個(gè)序列
以該參數(shù)的長度增加它的長度。
內(nèi)部的話是使用字符數(shù)組來實(shí)現(xiàn)的。當(dāng)我們輸入字符后,先把字符添加到緩沖區(qū),然后轉(zhuǎn)換成字符數(shù)組添加到StringBuilder對(duì)象中去
- str -- The characters to be appended.
3. 字符串與字符串池
3.1 嘗試使用字符串池的概念解釋如下程序段輸出結(jié)果,并回答這段代碼創(chuàng)建了幾個(gè)字符串對(duì)象:
String str1 ="hi", str2="hi"; String str3 = new String(str1);System.out.println(str1==str2);
返回結(jié)果為true 創(chuàng)建了1個(gè)對(duì)象
3.2 重點(diǎn):對(duì)基本類型我們可以使用==比較兩個(gè)值是否相等,對(duì)于引用類型(如String, Integer、數(shù)組等)為什么不能使用==比較?應(yīng)該怎樣比較他們的值是否相等呢?
“==”比較的是倆個(gè)字符串的內(nèi)存地址是否相同,倆個(gè)字符串內(nèi)容相等,內(nèi)存地址有可能是不同的。equal()方法可以來比較他們的值
4.Wrapper(包裝類)
4.1 Integer i = 100;//100是基本類型,i是引用類型,為什么可以將100賦值給i?Integer x = 100; int y = x+1;x++;這一串命令中包含了些什么操作?
用到了自動(dòng)裝箱,可以將數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換成相應(yīng)的對(duì)象
Integer x = 100; int y = x+1;x++;先自動(dòng)裝箱然后自動(dòng)拆箱,最后以惡搞先拆后裝
5.結(jié)對(duì)編程
結(jié)對(duì)隊(duì)友:張?zhí)K濤
倆個(gè)人討論了一下第一題,他用的是那個(gè)冒泡排序法,感覺思路很好,倆個(gè)人先討論思路,然后我們分別按照對(duì)方的思路來做題目。哈哈哈,第一次來這種嘗試,感覺還是很6的。以后期待多合作。
5. 實(shí)驗(yàn)總結(jié)
5.1 PTA-1綜合小測驗(yàn)
斐波那契用遞歸的方法。Array.toString()可以把數(shù)組內(nèi)的元素用[]進(jìn)行包裹。身份證截取的話用了str.substring()
5.2 身份證排序。并回答:使用sort2方法進(jìn)行排序可以對(duì)出生年月日進(jìn)行升序排序,如果現(xiàn)在有需要對(duì)其進(jìn)行降序排序,或者按照其中的出生月份排序,怎么###解決呢?
剛剛開始想的是身份證排序,利用正則來篩選身份證,后面發(fā)現(xiàn)并不是你想的這樣,只是告訴你身份證是18位而已。因?yàn)榭紤]到輸入的時(shí)候有x,就把輸入的身份證當(dāng)成字符串輸入存在數(shù)組中,然后再截取出生年月轉(zhuǎn)換成整形存在另外2個(gè)數(shù)組中。對(duì)存整形的進(jìn)行排序,然后和另外一個(gè)數(shù)組來進(jìn)行對(duì)比。來得出排序后的序號(hào)對(duì)應(yīng)排序前的序號(hào)。比如1(排序后)--->2(排序前) 2 --->3 3-->1 ,把2,3,1存起來。輸入sort1,那就,那就截取相應(yīng)地方來,按照序號(hào)輸出,sort2也是。
這題的話采用冒泡排序應(yīng)該也是可以的。后面多看看別人的思路,多學(xué)習(xí)一下吧。如果采用降序的話,第一時(shí)間想到的就是先進(jìn)行升序,首末交換序號(hào)。只能想到這個(gè)土方法了。
5.3(大整數(shù)相加)
這個(gè)題的話就是。和普通的差不多吧
參考鏈接
參考鏈接
5.4 (重點(diǎn):小測題目)PTA-8 ArrayList入門。
這題相對(duì)來說比較簡單,主要是格式輸出的問題。
5.5(重點(diǎn):小測題目)PTA-8 ArrayList入門。并回答:為什么有了數(shù)組還要使用ArrayList?
要熟練的使用Arraylist的方法,我們一般數(shù)組長度定義后就是不可以變,ArrayList可以動(dòng)態(tài)增長,所以無法確定數(shù)組的時(shí)候最好用ArrayList
6. 選做:公交卡里應(yīng)該還有多少錢?請(qǐng)分析原因
-0.1(元)
有可能是無符號(hào)浮點(diǎn)數(shù)下溢
三. Github及PTA
3.1 碼云代碼提交記錄
3.2 在碼云的項(xiàng)目中,依次選擇“統(tǒng)計(jì)-Commits歷史-設(shè)置時(shí)間段”,然后搜索并截圖
3.3 截圖題集“Java基本語法”PTA提交列表
3.4 使用老師發(fā)的jar程序統(tǒng)計(jì)每周的代碼量
| 行數(shù) | 新增行數(shù) | 文件數(shù) | 新增文件數(shù) |
|---|---|---|---|
| 484 | 484 | 6 | 3 |
轉(zhuǎn)載于:https://www.cnblogs.com/dycsy/p/7582096.html
總結(jié)
以上是生活随笔為你收集整理的Week02-Java基本语法与类库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人作业1——四则运算题目生成程序
- 下一篇: Postgresql 日志收集