1. 程式人生 > >Java第四章課後整理

Java第四章課後整理

保存 聲明 查看 大小寫轉換 運行 大於 調用 返回 equal

1.請運行以下示例代碼StringPool.java,查看其輸出結果。如何解釋這樣的輸出結果?從中你能總結出什麽?

在Java中,內容相同的字串常量(“Hello”)只保存一份以節約內存,所以s0,s1,s2實際上引用的是同一個對象。 編譯器在編譯s2一句時,會去掉“+”號,直接把兩個字串連接起來得一個字串(“Hello”)。這種優化工作由Java編譯器自動完成。 當直接使用new關鍵字創建字符串對象時,雖然值一致(都是“Hello”),但仍然是兩個獨立的對象。

2.為什麽會有上述的輸出結果?從中你又能總結出什麽?

技術分享

給字串變量賦值意味著:兩個變量(s1,s2)現在引用同一個字符串對象“a”!

String對象的內容是只讀的,使用“+”修改s1變量的值,實際上是得到了一個新的字符串對象,其內容為“ab”,它與原先s1所引用的對象”a”無關,所以,s1==s2返回false;

代碼中的“ab”字符串是一個常量,它所引用的字符串與s1所引用的“ab”對象無關。 但是若"s1="ab"",再判斷“s1=="ab"",結果為true。

String.equals()方法可以比較兩個字符串的內容。

3.請查看String.equals()方法的實現代碼,註意學習其實現方法。

publicclass StringEquals { publicstaticvoid main(String[] args) { String s1=new String("Hello"); String s2=new String("Hello"); System.out.println(s1==

s2); System.out.println(s1.equals(s2)); String s3="Hello"; String s4="Hello"; System.out.println(s3==s4); System.out.println(s3.equals(s4)); } }

技術分享

equals()或equalsIgnoreCase()方法比較兩字串內容是否相同,使用==比較兩字串變量是否引用同一字串對象;
compareTo:使用字典法進行比較,返回0表兩字串相等,小於返回負值,大於返回正值;
regionMatches:比較兩字串中的某一部分是否相等。

4.Length():獲取字串長度

1 java中的length屬性是針對數組說的,比如說你聲明了一個數組,想知道這個數組的長度則用到了length這個屬性.
2 java中的length()方法是針對字符串String說的,如果想看這個字符串的長度則用到length()這個方法.
3.java中的size()方法是針對泛型集合說的,如果想看這個泛型有多少個元素,就調用此方法來查看!

charAt():獲取指定位置的字符

str.charAt() :方法返回指定索引處的char值。索引範圍是從0到length() - 1。對於數組索引,序列的第一個char值是在索引為0,索引1,依此類推。

getChars():獲取從指定位置起的子串復制到字符數組中。

str.getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

要復制的第一個字符在索引srcBegin處,被復制的最後一個字符是在的索引srcEnd1即要復制的字符總數是srcEnd srcBegin處。

字符被復制到子數組的夏令時開始在指數dstBegin和結束於索引:dstbegin + (srcEnd-srcBegin) - 1

replace():子串替換

str.replace(char oldChar,char newChar)返回一個新的字符串,它是通過用newChar替換此字符串中出現的所有oldChar而生成的。

toUpperCase()、 toLowerCase():大小寫轉換

str.toUpperCase/()str.toLowerCase(),將所有的字符在這個字符串為大寫。

trim():去除頭尾空格:

str.trim(),該方法返回一個該字符串的副本,但將該字符串的開頭和結尾的白色空格去掉;如果這個字符串頭尾沒有空白,將返回一個字符串的副本。

toCharArray():將字符串對象轉換為字符數組

str.toCharArray() 返回一個新分配的字符數組,它的長度是此字符串的長度,而且內容被初始化為包含此字符串表示的字符序列。

技術分享

Java第四章課後整理