<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學(xué)習(xí)

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經(jīng)搬家了,新的地址是 http://www.javaly.cn 如果有對(duì)文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會(huì)盡力幫助解決。一起進(jìn)步

     

    String類使用

    出自:http://blog.csdn.net/mailbomb

    9.5.3 StringStringBuffer

             StringStringBuffer類都是代表字符串,也就是任意多個(gè)字符組成的序列。程序需要存儲(chǔ)的大量文字一般都使用字符串進(jìn)行代表。在這兩個(gè)類中,包含了大部分關(guān)于字符串操作的方法,在實(shí)際操作字符串時(shí),可以首先查閱這兩個(gè)類中的方法。

             StringStringBuffer雖然都代表字符串,但是由于兩個(gè)類內(nèi)部實(shí)現(xiàn)的區(qū)別,所以一般把String看成不可變字符串,而把StringBuffer看成可變字符串,對(duì)于String的每次改變(例如字符串連接等)都會(huì)生成一個(gè)新的字符串,比較浪費(fèi)內(nèi)存,而StringBuffer每次都改變自身,不生成新的對(duì)象,比較節(jié)約內(nèi)存。

             下面就詳細(xì)介紹一下StringStringBuffer的實(shí)際使用。

    9.5.3.1 String

             1String對(duì)象的初始化

    由于String對(duì)象特別常用,所以在對(duì)String對(duì)象進(jìn)行初始化時(shí),Java提供了一種簡(jiǎn)化的特殊語法,格式如下:

                                String s = “abc”;

                                s = “Java語言”;

                       其實(shí)按照面向?qū)ο蟮臉?biāo)準(zhǔn)語法,其格式應(yīng)該為:

                                String s = new String(“abc”);

                                s = new String(“Java語言”);

    只是按照面向?qū)ο蟮臉?biāo)準(zhǔn)語法,在內(nèi)存使用上存在比較大的浪費(fèi)。例如String s = new String(“abc”);實(shí)際上創(chuàng)建了兩個(gè)String對(duì)象,一個(gè)是”abc”對(duì)象,存儲(chǔ)在常量空間中,一個(gè)是使用new關(guān)鍵字為對(duì)象s申請(qǐng)的空間。

    其它的構(gòu)造方法的參數(shù),可以參看String類的API文檔。

             2、字符串的常見操作

                       acharAt方法

    該方法的作用是按照索引值(規(guī)定字符串中第一個(gè)字符的索引值是0,第二個(gè)字符的索引值是1,依次類推),獲得字符串中的指定字符。例如:

             String s = “abc”;

             char c = s.chatAt(1);

    則變量c的值是’b’

                       bcompareTo方法

    該方法的作用是比較兩個(gè)字符串的大小,比較的原理是依次比較每個(gè)字符的字符編碼。首先比較兩個(gè)字符串的第一個(gè)字符,如果第一個(gè)字符串的字符編碼大于第二個(gè)的字符串的字符編碼,則返回大于0的值,如果小于則返回小于0的值,如果相等則比較后續(xù)的字符,如果兩個(gè)字符串中的字符編碼完全相同則返回0

                                例如:

                                         String s = “abc”;

                                         String s1 = “abd”;

                                         int value = s.compareTo(s1);

                                value的值是小于0的值,即-1

                                String類中還存在一個(gè)類似的方法compareToIgnoreCase,這個(gè)方法是忽略字符的大小寫進(jìn)行比較,比較的規(guī)則和compareTo一樣。例如:

                                         String s = “aBc”;

                                         String s1 = “ABC”;

                                         int value = s. compareToIgnoreCase (s1);

                                value的值是0,即兩個(gè)字符串相等。

                       cconcat方法

    該方法的作用是進(jìn)行字符串的連接,將兩個(gè)字符串連接以后形成一個(gè)新的字符串。例如:

                                         String s = “abc”;

                                         String s1 = “def”;

                                         String s2 = s.concat(s1);

    則連接以后生成的新字符串s2的值是”abcdef”,而字符串ss1的值不發(fā)生改變。如果需要連接多個(gè)字符串,可以使用如下方法:

                                         String s = “abc”;

                                         String s1 = “def”;

                                         String s2 = “1234”;

             String s3 = s.concat(s1).concat(s2);

    則生成的新字符串s3的值為”abcdef1234”

    其實(shí)在實(shí)際使用時(shí),語法上提供了一種更簡(jiǎn)單的形式,就是使用“+”進(jìn)行字符串的連接。例如:

             String s = “abc” + “1234”;

    則字符串s的值是”abc1234”,這樣書寫更加簡(jiǎn)單直觀。

    而且使用“+”進(jìn)行連接,不僅可以連接字符串,也可以連接其他類型。但是要求進(jìn)行連接時(shí)至少有一個(gè)參與連接的內(nèi)容是字符串類型。而且“+”匹配的順序是從左向右,如果兩邊連接的內(nèi)容都是基本數(shù)字類型則按照加法運(yùn)算,如果參與連接的內(nèi)容有一個(gè)是字符串才按照字符串進(jìn)行連接。

    例如:

             int a = 10;

             String s = “123” + a + 5;

    則連接以后字符串s的值是“123105”,計(jì)算的過程為首先連接字符串”123”和變量a的值,生成字符串”12310”,然后使用該字符串再和數(shù)字5進(jìn)行連接生成最終的結(jié)果。

    而如下代碼:

             int a = 10;

             String s = a + 5 + “123”;

    則連接以后字符串s的值是”15123”,計(jì)算的過程為首先計(jì)算a和數(shù)字5,由于都是數(shù)字型則進(jìn)行加法運(yùn)算或者數(shù)字值15,然后再使用數(shù)字值15和字符串”123”進(jìn)行連接獲得最終的結(jié)果。

    而下面的連接代碼是錯(cuò)誤的:

             int a = 12;

             String s = a + 5 + ‘s’;

    因?yàn)閰⑴c連接的沒有一個(gè)字符串,則計(jì)算出來的結(jié)果是數(shù)字值,在賦值時(shí)無法將一個(gè)數(shù)字值賦值給字符串s

                       dendsWith方法

    該方法的作用是判斷字符串是否以某個(gè)字符串結(jié)尾,如果以對(duì)應(yīng)的字符串結(jié)尾,則返回true

    例如:

             String s = “student.doc”;

             boolean b = s.endsWith(“doc”);

    則變量b的值是true

                       eequals方法

    該方法的作用是判斷兩個(gè)字符串對(duì)象的內(nèi)容是否相同。如果相同則返回true,否則返回false。例如:

             String s = “abc”;

             String s1 = new String(“abc”);

             boolean b = s.equals(s1);

    而使用“==”比較的是兩個(gè)對(duì)象在內(nèi)存中存儲(chǔ)的地址是否一樣。例如上面的代碼中,如果判斷:

             boolean b = (s == s1);

    則變量b的值是false,因?yàn)?/span>s對(duì)象對(duì)應(yīng)的地址是”abc”的地址,而s1使用new關(guān)鍵字申請(qǐng)新的內(nèi)存,所以內(nèi)存地址和s”abc”的地址不一樣,所以獲得的值是false

    String類中存在一個(gè)類似的方法equalsIgnoreCase,該方法的作用是忽略大小寫比較兩個(gè)字符串的內(nèi)容是否相同。例如:

             String s = “abc”;

             String s1 =”ABC”;

             boolean b = s. equalsIgnoreCase (s1);

    則變量b的值是true

                       fgetBytes方法

    該方法的作用是將字符串轉(zhuǎn)換為對(duì)應(yīng)的byte數(shù)組,從而便于數(shù)據(jù)的存儲(chǔ)和傳輸。例如:

             String s = “計(jì)算機(jī)”;

             byte[] b = s.getBytes();   //使用本機(jī)默認(rèn)的字符串轉(zhuǎn)換為byte數(shù)組

             byte[] b = s.getBytes(“gb2312”); //使用gb2312字符集轉(zhuǎn)換為byte數(shù)組

                                在實(shí)際轉(zhuǎn)換時(shí),一定要注意字符集的問題,否則中文在轉(zhuǎn)換時(shí)將會(huì)出現(xiàn)問題。

                       gindexOf方法

    該方法的作用是查找特定字符或字符串在當(dāng)前字符串中的起始位置,如果不存在則返回-1。例如:

                                         String s = “abcded”;

                                         int index = s.indexOf(‘d’);

                                         int index1 = s.indexOf(‘h’);

    則返回字符d在字符串s中第一次出現(xiàn)的位置,數(shù)值為3。由于字符h在字符串s中不存在,則index1的值是-1

                                當(dāng)然,也可以從特定位置以后查找對(duì)應(yīng)的字符,例如:

                                         int index = s.indexOf(‘d’,4);

    則查找字符串s中從索引值4(包括4)以后的字符中第一個(gè)出現(xiàn)的字符d,則index的值是5

    由于indexOf是重載的,也可以查找特定字符串在當(dāng)前字符串中出現(xiàn)的起始位置,使用方式和查找字符的方式一樣。

    另外一個(gè)類似的方法是lastIndexOf方法,其作用是從字符串的末尾開始向前查找第一次出現(xiàn)的規(guī)定的字符或字符串,例如:

                                         String s = “abcded”;

                                         int index = s. lastIndexOf(‘d’);

                                index的值是5

                       hlength方法

    該方法的作用是返回字符串的長(zhǎng)度,也就是返回字符串中字符的個(gè)數(shù)。中文字符也是一個(gè)字符。例如:

             String s = “abc”;

             String s1 = “Java語言”;

             int len = s.length();

             int len1 = s1.length();

    則變量len的值是3,變量len1的值是6

                       ireplace方法

    該方法的作用是替換字符串中所有指定的字符,然后生成一個(gè)新的字符串。經(jīng)過該方法調(diào)用以后,原來的字符串不發(fā)生改變。例如:

             String s = “abcat”;

             String s1 = s.replace(‘a’,’1’);

    該代碼的作用是將字符串s中所有的字符a替換成字符1,生成的新字符串s1的值是”1bc1t”,而字符串s的內(nèi)容不發(fā)生改變。

    如果需要將字符串中某個(gè)指定的字符串替換為其它字符串,則可以使用replaceAll方法,例如:

             String s = “abatbac”;

             String s1 = s.replaceAll(“ba”,”12”);

    該代碼的作用是將字符串s中所有的字符串”ab”替換為”12”,生成新的字符串”a12t12c”,而字符串s的內(nèi)容也不發(fā)生改變。

    如果只需要替換第一個(gè)出現(xiàn)的指定字符串時(shí),可以使用replaceFirst方法,例如:

             String s = “abatbac”;

             String s1 = s. replaceFirst (“ba”,”12”);

    該代碼的作用是只將字符串s中第一次出現(xiàn)的字符串”ab”替換為字符串”12”,則字符串s1的值是”a12tbac”,字符串s的內(nèi)容也不發(fā)生改變。

                       jsplit方法

    該方法的作用是以特定的字符串作為間隔,拆分當(dāng)前字符串的內(nèi)容,一般拆分以后會(huì)獲得一個(gè)字符串?dāng)?shù)組。例如:

             String s = “ab,12,df”;

             String s1[] = s.split(“,”);

    該代碼的作用是以字符串”,”作為間隔,拆分字符串s,從而得到拆分以后的字符串?dāng)?shù)字s1,其內(nèi)容為:{“ab”,”12”,”df”}

    該方法是解析字符串的基礎(chǔ)方法。

    如果字符串中在內(nèi)部存在和間隔字符串相同的內(nèi)容時(shí)將拆除空字符串,尾部的空字符串會(huì)被忽略掉。例如:

             String s = “abbcbtbb”;

             String s1[] = s.split(“b”);

    則拆分出的結(jié)果字符串?dāng)?shù)組s1的內(nèi)容為:{“a”,””,”c”,”t”}。拆分出的中間的空字符串的數(shù)量等于中間間隔字符串的數(shù)量減一個(gè)。例如:

             String s = “abbbcbtbbb”;

             String s1[] = s.split(“b”);

    則拆分出的結(jié)果是:{“a”,””,””,”c”,”t”}。最后的空字符串不論有多少個(gè),都會(huì)被忽略。

    如果需要限定拆分以后的字符串?dāng)?shù)量,則可以使用另外一個(gè)split方法,例如:

             String s = “abcbtb1”;

             String s1[] = s.split(“b”,2);

    該代碼的作用是將字符串s最多拆分成包含2個(gè)字符串?dāng)?shù)組。則結(jié)果為:{“a”,”cbtb1”}

             如果第二個(gè)參數(shù)為負(fù)數(shù),則拆分出盡可能多的字符串,包括尾部的空字符串也將被保留。

                       kstartsWith方法

    該方法的作用和endsWith方法類似,只是該方法是判斷字符串是否以某個(gè)字符串作為開始。例如:

             String s = “TestGame”;

             boolean b = s.startsWith(“Test”);

    則變量b的值是true

                       lsubstring方法

    該方法的作用是取字符串中的“子串”,所謂“子串”即字符串中的一部分。例如“23”是字符串“123”的子串。

    字符串“123”的子串一共有6個(gè):”1””2””3””12””23””123”。而”32”不是字符串”123”的子串。

    例如:

             String s = “Test”;

             String s1 = s.substring(2);

    則該代碼的作用是取字符串s中索引值為2(包括)以后的所有字符作為子串,則字符串s1的值是”st”

    如果數(shù)字的值和字符串的長(zhǎng)度相同,則返回空字符串。例如:

             String s = “Test”;

             String s1 = s.substring(4);

    則字符串s1的值是””

    如果需要取字符串內(nèi)部的一部分,則可以使用帶2個(gè)參數(shù)的substring方法,例如:

             String s = “TestString”;

             String s1 = s.substring(2,5);

    則該代碼的作用是取字符串s中從索引值2(包括)開始,到索引值5(不包括)的部分作為子串,則字符串s1的值是”stS”

    下面是一個(gè)簡(jiǎn)單的應(yīng)用代碼,該代碼的作用是輸出任意一個(gè)字符串的所有子串。代碼如下:

                                         String s = “子串示例”;

                                         int len = s.length(); //獲得字符串長(zhǎng)度

                                         for(int begin = 0;begin < len – 1;begin++){ //起始索引值

                                                   for(int end = begin + 1;end <= len;end++){ //結(jié)束索引值

                                                            System.out.println(s.substring(begin,end));

                                                   }

                                         }

    在該代碼中,循環(huán)變量begin代表需要獲得的子串的起始索引值,其變化的區(qū)間從第一個(gè)字符的索引值0到倒數(shù)第二個(gè)字符串的索引值len -2,而end代表需要獲得的子串的結(jié)束索引值,其變化的區(qū)間從起始索引值的后續(xù)一個(gè)到字符串長(zhǎng)度。通過循環(huán)的嵌套,可以遍歷字符串中的所有子串。

                       mtoCharArray方法

    該方法的作用和getBytes方法類似,即將字符串轉(zhuǎn)換為對(duì)應(yīng)的char數(shù)組。例如:

             String s = “abc”;

             char[] c = s.toCharArray();

    則字符數(shù)組c的值為:{‘a’,’b’,’c’}

                       ntoLowerCase方法

                                該方法的作用是將字符串中所有大寫字符都轉(zhuǎn)換為小寫。例如:

                                         String s = “AbC123”;

                                         String s1 = s.toLowerCase();

                                則字符串s1的值是”abc123”,而字符串s的值不變。

    類似的方法是toUpperCase,該方法的作用是將字符串中的小寫字符轉(zhuǎn)換為對(duì)應(yīng)的大寫字符。例如:

                                         String s = “AbC123”;

                                         String s1 = s. toUpperCase ();

    則字符串s1的值是”ABC123”,而字符串s的值也不變。

                       otrim方法

    該方法的作用是去掉字符串開始和結(jié)尾的所有空格,然后形成一個(gè)新的字符串。該方法不去掉字符串中間的空格。例如:

                                         String s = “   abc abc 123 “;

                                         String s1 = s.trim();

                                則字符串s1的值為:” abc abc 123”。字符串s的值不變。

                       pvalueOf方法

    該方法的作用是將其它類型的數(shù)據(jù)轉(zhuǎn)換為字符串類型。需要注意的是,基本數(shù)據(jù)和字符串對(duì)象之間不能使用以前的強(qiáng)制類型轉(zhuǎn)換的語法進(jìn)行轉(zhuǎn)換。

    另外,由于該方法是static方法,所以不用創(chuàng)建String類型的對(duì)象即可。例如:

             int n = 10;

             String s = String.valueOf(n);

    則字符串s的值是”10”。雖然對(duì)于程序員來說,沒有發(fā)生什么變化,但是對(duì)于程序來說,數(shù)據(jù)的類型卻發(fā)生了變化。

    介紹一個(gè)簡(jiǎn)單的應(yīng)用,判斷一個(gè)自然數(shù)是幾位數(shù)字的邏輯代碼如下:

             int n = 12345;

             String s = String.valueOf(n);

             int len = s.length();

    則這里字符串的長(zhǎng)度len,就代表該自然數(shù)的位數(shù)。這種判斷比數(shù)學(xué)判斷方法在邏輯上要簡(jiǎn)單一些。

    關(guān)于String類的使用就介紹這么多,其它的方法以及這里到的方法的詳細(xì)聲明可以參看對(duì)應(yīng)的API文檔。

    posted on 2009-06-15 13:50 找個(gè)美女做老婆 閱讀(484) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    本blog已經(jīng)搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 老外毛片免费视频播放| 亚洲av无码国产精品夜色午夜 | 亚洲精品国产suv一区88| 最新亚洲精品国偷自产在线| 亚洲一区二区三区在线观看蜜桃| 亚洲一区二区免费视频| 在线亚洲午夜片AV大片| 亚洲人成人无码.www石榴 | 亚洲精品成人片在线观看精品字幕 | 美女被爆羞羞网站在免费观看| 国产成人亚洲精品电影| 国产亚洲综合视频| 国产精品hd免费观看| 两个人日本WWW免费版 | 亚洲国产日韩精品| 亚洲暴爽av人人爽日日碰| 国产亚洲精品精品精品| 亚洲一级片免费看| 人妻无码久久一区二区三区免费 | 国产成人高清精品免费观看| a级毛片黄免费a级毛片| 99热在线免费观看| 最近2019中文字幕免费看最新| 日本无卡码免费一区二区三区| 亚洲人成网站在线观看青青| 久久久久久久综合日本亚洲| 亚洲自偷自拍另类图片二区| 亚洲欧美日韩自偷自拍| 一级毛片在线完整免费观看| 亚洲精品免费在线观看| 精品熟女少妇AV免费观看| 免费在线黄色网址| 亚洲av无码片在线播放| 国产成人精品日本亚洲网址| 免费人成再在线观看网站| 光棍天堂免费手机观看在线观看| 免费观看激色视频网站(性色)| 日韩免费观看视频| 国产亚洲综合一区柠檬导航| 亚洲av无码不卡久久| 亚州**色毛片免费观看|