JAVA String類

1.String 字符串

字符串廣泛應(yīng)用 在Java 編程中鸠项,在 Java 中字符串屬于對(duì)象陶舞,Java 提供了 String 類來(lái)創(chuàng)建和操作字符串虱朵。
創(chuàng)建字符串:

public class StringDemo{
   public static void main(String args[]){
   
      String str = "我是字符串"; //最簡(jiǎn)單的創(chuàng)建字符串
      char[] helloArray = { 'h', 'e', 'l', 'l', 'o', 'w'};
      String helloString = new String(helloArray);  
      System.out.println( helloString );  //hello
   }
}

1.1 length() 字符串長(zhǎng)度

用于獲取有關(guān)對(duì)象的信息的方法稱為訪問(wèn)器方法蛮穿。String 類的一個(gè)訪問(wèn)器方法是 length() 方法,它返回字符串對(duì)象包含的字符數(shù)。

public class StringDemo{
   public static void main(String args[]){
   
      String str = "我是字符串"; //最簡(jiǎn)單的創(chuàng)建字符串
      System.out.println( helloString.length() );  //5
   }
}

1.2 concat() 連接字符串

string1.concat(string2);
返回 string1 連接 string2 的新字符串题暖。也可以對(duì)字符串常量使用 concat() 方法,如:

String str = "我是字符串".concat("哈哈哈哈"); //str為:我是字符串哈哈哈哈

但更常用的是使用'+'操作符來(lái)連接字符串含末,如:

String str = "我是字符串" + "哈哈哈哈"; //str為:我是字符串哈哈哈哈

1.3 format() 創(chuàng)建格式化字符串

我們知道輸出格式化數(shù)字可以使用 printf() 和 format() 方法。String 類使用靜態(tài)方法 format() 返回一個(gè)String 對(duì)象而不是 PrintStream 對(duì)象即舌。String 類的靜態(tài)方法 format() 能用來(lái)創(chuàng)建可復(fù)用的格式化字符串佣盒,而不僅僅是用于一次打印輸出。

System.out.printf("浮點(diǎn)型變量的值為 " +
                  " %f, 整型變量的值為 " +
                  " %d, 字符串變量的值為 " +
                  " %s", floatVar, intVar, stringVar);
                  
String fs;
fs = String.format("浮點(diǎn)型變量的值為 " +
                   " %f, 整型變量的值為 " +
                   " %d, 字符串變量的值為 " +
                   " %s", floatVar, intVar, stringVar);                

2.StringBuffer 和 StringBuilder 類

當(dāng)對(duì)字符串進(jìn)行修改的時(shí)候顽聂,需要使用 StringBuffer 和 StringBuilder 類沼撕。
和 String 類不同的是,StringBuffer 和 StringBuilder 類的對(duì)象能夠被多次的修改芜飘,并且不產(chǎn)生新的未使用對(duì)象。
StringBuilder 類在 Java 5 中被提出磨总,它和 StringBuffer 之間的最大不同在于 StringBuilder 的方法不是線程安全的(不能同步訪問(wèn))嗦明。
由于 StringBuilder 相較于 StringBuffer 有速度優(yōu)勢(shì),所以多數(shù)情況下建議使用 StringBuilder 類蚪燕。然而在應(yīng)用程序要求線程安全的情況下娶牌,則必須使用 StringBuffer 類。

public class Test{
  public static void main(String args[]){
    StringBuffer sBuffer = new StringBuffer("百度:");
    sBuffer.append("www");
    sBuffer.append(".baidu");
    sBuffer.append(".com");
    System.out.println(sBuffer);  //百度:www.baidu.com
  }
}

2.1 StringBuffer 類支持的主要方法

public StringBuffer append(String s)
將指定的字符串追加到此字符序列馆纳。

public StringBuffer reverse()
將此字符序列用其反轉(zhuǎn)形式取代诗良。

public delete(int start, int end)
移除此序列的子字符串中的字符。

public insert(int offset, int i)
將 int 參數(shù)的字符串表示形式插入此序列中鲁驶。

replace(int start, int end, String str)
使用給定 String 中的字符替換此序列的子字符串中的字符鉴裹。

3.String方法

3.1 charAt()

charAt()方法用于返回指定索引處的字符。索引范圍為從 0 到 length() - 1

public class Test {

    public static void main(String args[]) {
        String s = "http:www.baidu.com";
        System.out.println(s.charAt(5));  //w
    }
}

3.2 compareTo() 和 compareToIgnoreCase()

compareTo()方法用于比較兩個(gè)字符串:str1.compareTo(str2)
compareToIgnoreCase()和compareTo()一樣钥弯,只是在比較時(shí)不考慮字母大小寫

返回值是整型,它是先比較對(duì)應(yīng)字符的大小(ASCII碼順序),如果第一個(gè)字符和參數(shù)的第一個(gè)字符不等,結(jié)束比較,返回他們之間的差值,如果第一個(gè)字符和參數(shù)的第一個(gè)字符相等,則以第二個(gè)字符和參數(shù)的第二個(gè)字符做比較,以此類推,直到字符出現(xiàn)不同就計(jì)算這兩個(gè)不同字符的ASCII碼的差径荔,作為返回值,若到最后某一個(gè)字符串結(jié)束了,此時(shí)返回的是兩個(gè)字符串的長(zhǎng)度差脆霎。

如果str1與str2相等总处,返回0
如果str1大于str2,返回一個(gè)大于0的整數(shù)
如果str1小于str2睛蛛,返回一個(gè)小于0的整數(shù)

public class Test {
 
    public static void main(String args[]) {
        String str1 = "Strings";
        String str2 = "Strings";
        String str3 = "Strings123";
        
        System.out.println(str1.compareTo( str2 ));  //0
        System.out.println(str2.compareTo( str3 ));  //-3
        System.out.println(str3.compareTo( str1 ));  //3
        
        String str4 = "abcde";
        String str5 = "abdde";
        
        System.out.println(str5.compareTo( str4 ))  //-1 此時(shí)返回的才是ASCII差值
    }
}

3.3 contentEquals()

contentEquals()方法用于將此字符串與指定的 StringBuffer 比較鹦马。如字符串與指定 StringBuffer 表示相同的字符序列胧谈,則返回 true;否則返回 false荸频。

public class Test {
    public static void main(String args[]) {
        String str1 = "String1";
        String str2 = "String2";
        StringBuffer str3 = new StringBuffer( "String1");
        
        System.out.println(str1.contentEquals( str3 ));//true
        System.out.println(str2.contentEquals( str3 ));//false
    }
}

3.4 equals() 和 equalsIgnoreCase()

equals()方法用于將字符串與指定的對(duì)象比較菱肖。如果給定對(duì)象與字符串相等,則返回 true试溯;否則返回 false蔑滓。
equalsIgnoreCase() 與 equals() 作用一樣,只是比較時(shí)忽略大小寫

public class Test {
    public static void main(String args[]) {
        String Str1 = new String("hello");
        String Str2 = Str1;
        String Str3 = new String("hello");
        
        System.out.println(Str1.equals( Str2 )); //true
        System.out.println(Str1.equals( Str3 )); //true
    }
}

3.5 copyValueOf()

copyValueOf()方法有兩種形式:
public static String copyValueOf(char[] data): 返回指定數(shù)組中表示該字符序列的字符串遇绞。
public static String copyValueOf(char[] data, int offset, int count): 返回指定數(shù)組中表示該字符序列的 字符串键袱。

public class Test {
    public static void main(String args[]) {
        char[] Str1 = {'h', 'e', 'l', 'l', 'o', ' ', 'r', 'u', 'n', 'o', 'o', 'b'};
        System.out.println(String.copyValueOf( Str1 ));//hello runoob
        System.out.println(String.copyValueOf( Str1, 2, 6 ));//llo ru
    }
}

3.6 startsWith() 和 endsWith()

startsWith()用于檢測(cè)字符串是否以指定的前綴開始。
endsWith()用于測(cè)試字符串是否以指定的后綴結(jié)束摹闽。如果參數(shù)表示的字符序列是此對(duì)象表示的字符序列的后綴蹄咖,則返回 true;否則返回 false付鹿。注意澜汤,如果參數(shù)是空字符串,或者等于此 String 對(duì)象(用 equals(Object) 方法確定)舵匾,則結(jié)果為 true俊抵。

public class Test {
    public static void main(String args[]) {
        String Str = new String("https://www.baidu.com");
        
        System.out.println(Str.startsWith( "https" )); //true
        System.out.println(Str.startsWith( "www" )); //false
        System.out.println(Str.startsWith( "www",8 )); //true
        
        System.out.println(Str.endsWith( "baidu" )); //false
        System.out.println(Str.endsWith( "com" ));//true
    }
}

3.7 getBytes()

getBytes()方法有兩種形式:
getBytes(String charsetName): 使用指定的字符集將字符串編碼為 byte 序列,并將結(jié)果存儲(chǔ)到一個(gè)新的 byte 數(shù)組中坐梯。
getBytes(): 使用平臺(tái)的默認(rèn)字符集將字符串編碼為 byte 序列徽诲,并將結(jié)果存儲(chǔ)到一個(gè)新的 byte 數(shù)組中。

import java.io.*;
 
public class Test {
    public static void main(String args[]) {
        String Str1 = new String("runoob");
 
        try{
            byte[] Str2 = Str1.getBytes();
            System.out.println( Str2 );//[B@7852e922
            
            Str2 = Str1.getBytes( "UTF-8" );
            System.out.println(Str2 );//[B@4e25154f
            
            Str2 = Str1.getBytes( "ISO-8859-1" );
            System.out.println(Str2 );//
        } catch ( UnsupportedEncodingException e){
            System.out.println("不支持的字符集");//[B@70dea4e
        }
    }
}

3.8 getChars()

getChars()方法將字符從字符串復(fù)制到目標(biāo)字符數(shù)組吵血。
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
srcBegin:字符串中要復(fù)制的第一個(gè)字符的索引谎替。
srcEnd:字符串中要復(fù)制的最后一個(gè)字符之后的索引。
dst:目標(biāo)數(shù)組蹋辅。
dstBegin:目標(biāo)數(shù)組中的起始偏移量钱贯。
沒(méi)有返回值,但會(huì)拋出 IndexOutOfBoundsException 異常侦另。

public class Test {
    public static void main(String args[]) {
        String Str1 = new String("www.baidu.com");
        char[] Str2 = new char[5];

        try {
            Str1.getChars(4, 9, Str2, 0);
            System.out.println(Str2 ); //baidu
        } catch( Exception ex) {
            System.out.println("觸發(fā)異常...");
        }
    }
}

3.9 hashCode()

hashCode()方法用于返回字符串的哈希碼秩命。
字符串對(duì)象的哈希碼根據(jù)以下公式計(jì)算:s[0]31^(n-1) + s[1]31^(n-2) + ... + s[n-1](使用 int 算法,這里 s[i] 是字符串的第 i 個(gè)字符淋肾,n 是字符串的長(zhǎng)度硫麻,^ 表示求冪》浚空字符串的哈希值為 0拿愧。)

public class Test {
    public static void main(String args[]) {
        String Str = new String("www.runoob.com");
        System.out.println( Str.hashCode() );//321005537
    }
}

3.10 indexOf()

indexOf()方法有以下四種形式:
public int indexOf(int ch): 返回指定字符在字符串中第一次出現(xiàn)處的索引,如果此字符串中沒(méi)有這樣的字符碌尔,則返回 -1浇辜。
public int indexOf(int ch, int fromIndex): 返回從 fromIndex 位置開始查找指定字符在字符串中第一次出現(xiàn)處的索引券敌,如果此字符串中沒(méi)有這樣的字符,則返回 -1柳洋。
int indexOf(String str): 返回指定字符在字符串中第一次出現(xiàn)處的索引待诅,如果此字符串中沒(méi)有這樣的字符,則返回 -1熊镣。
int indexOf(String str, int fromIndex): 返回從 fromIndex 位置開始查找指定字符在字符串中第一次出現(xiàn)處的索引卑雁,如果此字符串中沒(méi)有這樣的字符,則返回 -1绪囱。

public class Main {
    public static void main(String args[]) {
        String string = "aaa456ac";  
        //查找指定字符是在字符串中的下標(biāo)测蹲。在則返回所在字符串下標(biāo);不在則返回-1.  
        System.out.println(string.indexOf("b")); // indexOf(String str); 返回結(jié)果:-1鬼吵,"b"不存在  
 
        // 從第四個(gè)字符位置開始往后繼續(xù)查找扣甲,包含當(dāng)前位置  
        System.out.println(string.indexOf("a",3));//indexOf(String str, int fromIndex); 返回結(jié)果:6  
 
        //(與之前的差別:上面的參數(shù)是 String 類型,下面的參數(shù)是 int 類型)參考數(shù)據(jù):a-97,b-98,c-99  
 
        // 從頭開始查找是否存在指定的字符  
        System.out.println(string.indexOf(99));//indexOf(int ch)齿椅;返回結(jié)果:7  
        System.out.println(string.indexOf('c'));//indexOf(int ch)琉挖;返回結(jié)果:7  
 
        //從fromIndex查找ch,這個(gè)是字符型變量涣脚,不是字符串示辈。字符a對(duì)應(yīng)的數(shù)字就是97。  
        System.out.println(string.indexOf(97,3));//indexOf(int ch, int fromIndex); 返回結(jié)果:6  
        System.out.println(string.indexOf('a',3));//indexOf(int ch, int fromIndex); 返回結(jié)果:6  
    }
}

3.11 lastIndexOf()

lastIndexOf()方法有以下四種形式:
public int lastIndexOf(int ch): 返回指定字符在此字符串中最后一次出現(xiàn)處的索引遣蚀,如果此字符串中沒(méi)有這樣的字符顽耳,則返回 -1。
public int lastIndexOf(int ch, int fromIndex): 返回指定字符在此字符串中最后一次出現(xiàn)處的索引妙同,如果此字符串中沒(méi)有這樣的字符,則返回 -1膝迎。
public int lastIndexOf(String str): 返回指定字符在此字符串中最后一次出現(xiàn)處的索引粥帚,如果此字符串中沒(méi)有這樣的字符,則返回 -1限次。
public int lastIndexOf(String str, int fromIndex): 返回指定字符在此字符串中最后一次出現(xiàn)處的索引芒涡,如果此字符串中沒(méi)有這樣的字符,則返回 -1卖漫。

public class Test {
    public static void main(String args[]) {
        String Str = new String("www.baidu.com");
        String SubStr1 = new String("baidu");
        String SubStr2 = new String("com");

        System.out.print("查找字符 o 最后出現(xiàn)的位置 :" );
        System.out.println(Str.lastIndexOf( 'o' ));
        System.out.print("從第10個(gè)位置查找字符 o 最后出現(xiàn)的位置 :" );
        System.out.println(Str.lastIndexOf( 'o', 10 ));
        System.out.print("子字符串 SubStr1 最后出現(xiàn)的位置:" );
        System.out.println( Str.lastIndexOf( SubStr1 ));
        System.out.print("從5個(gè)位置開始搜索子字符串 SubStr1最后出現(xiàn)的位置 :" );
        System.out.println( Str.lastIndexOf( SubStr1, 5 ));
        System.out.print("子字符串 SubStr2 最后出現(xiàn)的位置 :" );
        System.out.println(Str.lastIndexOf( SubStr2 ));
    }
}

3.12 intern()

intern()方法返回字符串對(duì)象的規(guī)范化表示形式费尽。

它遵循以下規(guī)則:對(duì)于任意兩個(gè)字符串 s 和 t,當(dāng)且僅當(dāng) s.equals(t) 為 true 時(shí)羊始,s.intern() == t.intern() 才為 true旱幼。

public class Test {
    public static void main(String args[]) {
        String Str1 = new String("www.baidu.com");
        String Str2 = new String("WWW.BAIDU.COM");

        System.out.println(Str1.intern()); //www.baidu.com
        System.out.println(Str2.intern()); //WWW.BAIDU.COM
    }
}

盡管在輸出中調(diào)用intern方法并沒(méi)有什么效果,但是實(shí)際上后臺(tái)這個(gè)方法會(huì)做一系列的動(dòng)作和操作突委。在調(diào)用"ab".intern()方法的時(shí)候會(huì)返回"ab"柏卤,但是這個(gè)方法會(huì)首先檢查字符串池中是否有"ab"這個(gè)字符串冬三,如果存在則返回這個(gè)字符串的引用,否則就將這個(gè)字符串添加到字符串池中缘缚,然會(huì)返回這個(gè)字符串的引用勾笆。

可以看下面一個(gè)范例:

String str1 = "a";
String str2 = "b";
String str3 = "ab";
String str4 = str1 + str2;
String str5 = new String("ab");
 
System.out.println(str5.equals(str3));
System.out.println(str5 == str3);
System.out.println(str5.intern() == str3);
System.out.println(str5.intern() == str4);

得到的結(jié)果:

true
false
true
false

第一、str5.equals(str3)這個(gè)結(jié)果為true桥滨,不用太多的解釋窝爪,因?yàn)樽址闹档膬?nèi)容相同。

第二齐媒、str5 == str3對(duì)比的是引用的地址是否相同蒲每,由于str5采用new String方式定義的,所以地址引用一定不相等里初。所以結(jié)果為false啃勉。

第三、當(dāng)str5調(diào)用intern的時(shí)候双妨,會(huì)檢查字符串池中是否含有該字符串淮阐。由于之前定義的str3已經(jīng)進(jìn)入字符串池中,所以會(huì)得到相同的引用刁品。

第四泣特,當(dāng)str4 = str1 + str2后,str4的值也為”ab”挑随,但是為什么這個(gè)結(jié)果會(huì)是false呢状您?先看下面代碼:

String a = new String("ab");
String b = new String("ab");
String c = "ab";
String d = "a" + "b";
String e = "b";
String f = "a" + e;

System.out.println(b.intern() == a);
System.out.println(b.intern() == c);
System.out.println(b.intern() == d);
System.out.println(b.intern() == f);
System.out.println(b.intern() == a.intern());

運(yùn)行結(jié)果:

false
true
true
false
true

由運(yùn)行結(jié)果可以看出來(lái),b.intern() == a和b.intern() == c可知兜挨,采用new 創(chuàng)建的字符串對(duì)象不進(jìn)入字符串池膏孟,并且通過(guò)b.intern() == d和b.intern() == f可知,字符串相加的時(shí)候拌汇,都是靜態(tài)字符串的結(jié)果會(huì)添加到字符串池柒桑,如果其中含有變量(如f中的e)則不會(huì)進(jìn)入字符串池中。但是字符串一旦進(jìn)入字符串池中噪舀,就會(huì)先查找池中有無(wú)此對(duì)象魁淳。如果有此對(duì)象,則讓對(duì)象引用指向此對(duì)象与倡。如果無(wú)此對(duì)象界逛,則先創(chuàng)建此對(duì)象,再讓對(duì)象引用指向此對(duì)象纺座。

當(dāng)研究到這個(gè)地方的時(shí)候息拜,突然想起來(lái)經(jīng)常遇到的一個(gè)比較經(jīng)典的Java問(wèn)題,就是對(duì)比equal和 == 的區(qū)別,當(dāng)時(shí)記得老師只是說(shuō)“==”判斷的是“地址”该溯,但是并沒(méi)說(shuō)清楚什么時(shí)候會(huì)有地址相等的情況〉撼現(xiàn)在看來(lái),在定義變量的時(shí)候賦值狈茉,如果賦值的是靜態(tài)的字符串夫椭,就會(huì)執(zhí)行進(jìn)入字符串池的操作,如果池中含有該字符串氯庆,則返回引用蹭秋。

3.13 length()

length() 方法用于返回字符串的長(zhǎng)度。

public class Test {
    public static void main(String args[]) {
        String Str1 = new String("www.baidu.com");
        String Str2 = new String("baidu" );

        System.out.println(Str1.length());  //13
        System.out.println(Str2.length());  //5
    }
}

3.14 matches()

matches()方法用于檢測(cè)字符串是否匹配給定的正則表達(dá)式

public class Test {
    public static void main(String args[]) {
        String str = new String("www.baidu.com");

        System.out.println(str.matches("(.*)baidu(.*)")); //true
        System.out.println(str.matches("(.*)google(.*)")); //false
        System.out.println(str.matches("www(.*)")); //true
    }
}

3.15 regionMatches()

regionMatches()方法用于檢測(cè)兩個(gè)字符串在一個(gè)區(qū)域內(nèi)是否相等.語(yǔ)法:

public boolean regionMatches(int toffset,
                             String other,
                             int ooffset,
                             int len)

或

public boolean regionMatches(boolean ignoreCase,
                             int toffset,
                             String other,
                             int ooffset,
                             int len)
參數(shù)說(shuō)明:
ignoreCase -- 如果為 true堤撵,則比較字符時(shí)忽略大小寫仁讨。
toffset -- 此字符串中子區(qū)域的起始偏移量。
other -- 字符串參數(shù)实昨。
ooffset -- 字符串參數(shù)中子區(qū)域的起始偏移量洞豁。
len -- 要比較的字符數(shù)。
public class Test {
    public static void main(String args[]) {
        String Str1 = new String("www.baidu.com");
        String Str2 = new String("baidu");
        String Str3 = new String("BAIDU");

        System.out.println(Str1.regionMatches(4, Str2, 0, 5)); //true
        System.out.println(Str1.regionMatches(4, Str3, 0, 5)); //false
        System.out.println(Str1.regionMatches(true, 4, Str3, 0, 5));//true
    }
}

3.16 replace()

replace()通過(guò)用 newChar 字符替換字符串中出現(xiàn)的所有 oldChar 字符荒给,并返回替換后的新字符串

public String replace(char oldChar, char newChar)

public class Test {
public static void main(String args[]) {
String Str = new String("hello");

    System.out.println(Str.replace('o', 'l')); //helll
    System.out.println(Str.replace('l', 'L')); //heLLo
}

}

3.17 replaceAll() 和 replaceFirst()

replaceAll()方法使用給定的參數(shù) replacement 替換字符串所有匹配給定的正則表達(dá)式的子字符串丈挟。替換后生成的新字符串。
replaceFirst()方法使用給定的參數(shù) replacement 替換字符串第一個(gè)匹配給定的正則表達(dá)式的子字符串志电。成功則返回替換的字符串曙咽,失敗則返回原始字符串。

public String replaceAll(String regex, String replacement)
public String replaceFirst(String regex,String replacement)
public class Test {
    public static void main(String args[]) {
        String str1 = new String("www.baidu.com");

        System.out.println(str1.replaceAll("(.*)baidu(.*)", "google" ));//google
        System.out.println(str1.replaceAll("(.*)taobao(.*)", "google" ));//www.baidu.com
        
        String str2 = new String("hello baidu挑辆,I am from baidu例朱。");

        System.out.println(str2.replaceFirst("baidu", "google" )); //hello google,I am from baidu
        System.out.println(str2.replaceFirst("(.*)baidu(.*)", "google" )); //google
    }
}

3.18 split()

split()根據(jù)匹配給定的正則表達(dá)式來(lái)拆分字符串鱼蝉。

注意:
. 洒嗤、 | 和 * 等轉(zhuǎn)義字符,必須加 \\
多個(gè)分隔符魁亦,可以用 | 作為連字符

public String[] split(String regex, int limit)  //返回字符串?dāng)?shù)組
regex:正則表達(dá)式分隔符烁竭。
limit:分割的份數(shù)。
public class Test {
    public static void main(String args[]) {
        String str = new String("nice-to-meet-you");
        String retval1 = str.split("-");  //["nice","to","meet","you"]
        String retval12 = str.split("-",2); //["nice","to-meet-you"]
 
        String str2 = new String("www.baidu.com");
        String retval3 = str2.split("\\.", 3) //["www","baidu","com"]
 
        String str3 = new String("acount=? and uu =? or n=?");
        String retval4 = str3.split("and|or") //["acount=? "," uu =? "," n=?"]
    }
}

3.19 subSequence() 和 substring()

subSequence()返回一個(gè)新的字符序列吉挣,它是此序列的一個(gè)子序列
substring()返回字符串的子字符串。

public CharSequence subSequence(int beginIndex, int endIndex)
public class Test {
    public static void main(String args[]) {
         String str = new String("www.baidu.com");

         System.out.println(str.subSequence(4, 5) ); //baidu
         
         System.out.println(str.substring(4) ); //baidu.com
         System.out.println(str.substring(4, 9) ); //baidu
    }
}

3.20 toCharArray()

toCharArray()將字符串轉(zhuǎn)換為字符數(shù)組婉弹。

public class Test {
    public static void main(String args[]) {
        String str = new String("www.baidu.com");

        System.out.println( str.toCharArray() ); //www.baidu.com
    }
}

3.21 toLowerCase() 和 toUpperCase()

toLowerCase()使用默認(rèn)語(yǔ)言環(huán)境的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為小寫睬魂。
toUpperCase()使用默認(rèn)語(yǔ)言環(huán)境的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為大寫。

public class Test {
    public static void main(String args[]) {
        String str = new String("WWW.BAIDU.COM");
        String str1 = new String("www.baidu.com");
        System.out.println( str.toLowerCase() ); //www.baidu.com
        System.out.println( str1.toUpperCase() ); //WWW.BAIDU.COM
    }
}

3.22 toString()

toString()返回此對(duì)象本身(它已經(jīng)是一個(gè)字符串)镀赌。

public class Test {
    public static void main(String args[]) {
        String str = new String("www.baidu.com");
        
        System.out.println( str.toString() ); //www.baidu.com
    }
}

3.23 trim()

trim()用于刪除字符串的頭尾空白符氯哮。

public class Test {
    public static void main(String args[]) {
        String str = new String("    www.baidu.com    ");
        
        System.out.println( str.trim() ); //www.baidu.com
    }
}

3.24 基礎(chǔ)面試題

第一題:
說(shuō)說(shuō)length() 方法,length 屬性和 size() 方法的區(qū)別商佛?
答:
1喉钢、length() 方法是針對(duì)字符串來(lái)說(shuō)的姆打,要求一個(gè)字符串的長(zhǎng)度就要用到它的length()方法;
2肠虽、length 屬性是針對(duì) Java 中的數(shù)組來(lái)說(shuō)的幔戏,要求數(shù)組的長(zhǎng)度可以用其 length 屬性;
3税课、Java 中的 size() 方法是針對(duì)泛型集合說(shuō)的, 如果想看這個(gè)泛型有多少個(gè)元素, 就調(diào)用此方法來(lái)查看!

第二題:
為什么說(shuō)String 類是不可改變的闲延?

String s = "Google";
System.out.println(s);  //Google

s = "Baidu";
System.out.println(s); //Baidu

原因在于實(shí)例中的 s 只是一個(gè) String 對(duì)象的引用,并不是對(duì)象本身韩玩,當(dāng)執(zhí)行 s = "Baidu"; 創(chuàng)建了一個(gè)新的對(duì)象 "Baidu"垒玲,而原來(lái)的 "Google" 還存在于內(nèi)存中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末找颓,一起剝皮案震驚了整個(gè)濱河市合愈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌击狮,老刑警劉巖佛析,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異帘不,居然都是意外死亡说莫,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門寞焙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)储狭,“玉大人,你說(shuō)我怎么就攤上這事捣郊×杀罚” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵呛牲,是天一觀的道長(zhǎng)刮萌。 經(jīng)常有香客問(wèn)我,道長(zhǎng)娘扩,這世上最難降的妖魔是什么着茸? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮琐旁,結(jié)果婚禮上涮阔,老公的妹妹穿的比我還像新娘。我一直安慰自己灰殴,他們只是感情好敬特,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般伟阔。 火紅的嫁衣襯著肌膚如雪辣之。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天皱炉,我揣著相機(jī)與錄音怀估,去河邊找鬼。 笑死娃承,一個(gè)胖子當(dāng)著我的面吹牛奏夫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播历筝,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼酗昼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了梳猪?” 一聲冷哼從身側(cè)響起麻削,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎春弥,沒(méi)想到半個(gè)月后呛哟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匿沛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年扫责,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逃呼。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鳖孤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抡笼,到底是詐尸還是另有隱情苏揣,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布推姻,位于F島的核電站平匈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏藏古。R本人自食惡果不足惜增炭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拧晕。 院中可真熱鬧隙姿,春花似錦、人聲如沸防症。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蔫敲。三九已至饲嗽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奈嘿,已是汗流浹背貌虾。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裙犹,地道東北人尽狠。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像叶圃,于是被迫代替她去往敵國(guó)和親袄膏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容