學會String類和StringBuilder類的一些用法.
學會使用碼雲管理代碼,會將碼雲上的代碼和本地倉庫關聯java
Q1.使用Eclipse關聯jdk源代碼,並查看String對象的源代碼(截圖)?分析String使用什麼來存儲字符串的?分析其構造函數public String(char value[])的實現原理?分析public String replace(char oldChar, char newChar)的實現原理,回答String的不可變性在該函數中如何體現?(重點)
web
Q2.爲何要儘可能頻繁的對字符串的修改操做應該是用StringBuilder而不是String?
使用String類時每次修改都要新建一個字符串,將原字符串刪除。當建立 StringBuilder對象用來存儲字符串,對其作了追加和插入操做,所以效率較String類高。函數
Q3.比較兩個字符串的值是否相等?爲何不能用==直接進行比較?
String是對象變量,它的值指向對象所在的內存地址。由於「==」只能比較兩個變量的值,在比較字符串的時候使用「==」,其實是在比較兩個字符串是否引用同一個地址,若是兩個字符串是同一對象的話,則能夠用「==」,若是是比較兩個字符串是否相等則不能使用。學習
Q4.嘗試使用字符串池的概念解釋以下程序段輸出結果,並回答這段代碼建立了幾個字符串對象:ui
String str1 =「hi「, str2=「hi「;
String str3 = new String(str1)
System.out.println(str1==str2);spa
返回true。建立了兩個字符串對象。命令行
Q5.Integer i = 100;//100是基本類型,i是引用類型,爲何能夠將100賦值給i
在編譯程序時,會自動將程序代碼展開爲Integer i = new Integer(100)。對象
Q6.嘗試分析下面代碼輸出結果blog
Integer i1 = 127;Integer i2 = 127;
i1 == i2;//true of false?
Integer i1 = 128;Integer i2 = 128;
i1 == i2;//true of false遊戲
第一個ture,第二個false。由於integer常量的範圍爲-128~127.因此當i=128時,須要創建新的integer實例,因此此時i1與i2的值不同。
Q7.package與javac、 java、 -classpath、 -d
在 com.ibm包中編寫 StringUtil類,內有一方法
public static void foo1(){
System.out.println(StringUtil.class+" method:foo1");
}
在edu.jmu包中編寫Main類,其中掉了com.ibm.StringUtil的foo1方法
7.1 嘗試用命令行進行編譯並運行,截圖
7.2 將生成的StringUtil.class放到d:\lib下正確的目錄結構下,將Main.class放到d:\test下正確的目錄結構,嘗試在命令行下運行,並截圖。
7.3 Eclipse中源代碼放在哪一個目錄、class文件放在哪一個目錄?在Eclipse項目中按一下Ctrl+F11就能夠直接運行Main,當按下Ctrl+F11時,到底在哪一個目錄下執行了什麼樣的java命令?Eclipse中源代碼放在src,class文件放在bin目錄
Q8.本身在這門課的目標與計劃 請描述一下你的技術基礎(會什麼語言,都寫了多少行代碼) 大一學過C語言和本身瞭解一點點C++的基礎。 一週準備花多少時間在這門課上?一週準備寫多少行代碼?採用怎樣的學習方式?遇到困難打算怎樣解決? 天天都花一兩個小時學習JAVA。每週努力完成PTA上的做業,掌握課堂內容而且實踐,到目前爲止有不會的通常都是百度,再不行就問厲害的同窗,學習他們的思路和方法。 關於這門課的smart目標 我但願在學完JAVA的時候能和同窗一塊兒作一個小項目,能夠是小遊戲或者是java web,或者安卓項目。