Java 基礎學習——複習 第三天--字符串

5 字符串

5.1 String 類

(1)字符串的聲明,雙引號中的內容表示字符串;聲明方法:String a; String a,b;分別聲明一個和兩個字符串變量

(2)創建字符串

        1.引用字符串常量--直接將字符串常量賦值給String類型變量——String a=“時間就是金錢,我的朋友”;

        2.利用構造方法示例化--使用new關鍵字創建String對象——String a=new String(“我愛劉敬”);

        3. 利用字符數組實例化--例 : char[ ] charArrays ={'t','i','m','e'}; String a=new String (charArrays);

        4.提取字符數組的一部分創建字符串對象--例 : char[ ]charArrays ={'t','i','m','e'}; String a=new String (charArrays,2,2);

方法實現:

public classCreateString{

        publicstatic void main(String[] args) {

                 //直接引用字符串常量

                 Stringa = "時間就是金錢,我的朋友。";

                 System.out.println("a= " + a);

                 //利用構造方法實例化

                 Stringb = new String("我愛清湯小肥羊");

                 //使用已有字符串變量實例化

                 Stringc = new String(b);

                 System.out.println("b= " + b);

                 System.out.println("c= " + c);

 

                 char[]charArray = { 't', 'i', 'm', 'e' };

                 //利用字符數組實例化

                 Stringd = new String(charArray);

                 System.out.println("d= " + d);

 

                 char[]charArray2 = { '時', '間', '就', '是', '金', '錢' };

                 //提取字符數組部分內容,從下標爲4的元素開始,截取2個字符

                 Stringe = new String(charArray2, 4, 2);

                 System.out.println("e= " + e);

        }

}

結果:

5.2 連接字符串

(1)字符串連接 --使用‘+’‘+=’進行字符串之間的連接

(2)連接其他數據類型--會將其他數據轉化成字符串

5.3 提取字符串信息

    (1)獲取字符串長度--使用 length()方法獲取字符串的長度 方法:str.length();

    (2)獲取指定字符--使用charA(index)方法可將指定索引處的字符返回 方法str.charA(index); str=任意字符串,index:char值得索引

    (3)獲取子字符串索引位置

            1.indexOf(String str)--該方法用於返回參數字符串在指定字符串str中首次出現的索引位置。如果沒有檢索到,該方法的返回值爲-1;語法:a.indexOf(str); a:任意字符串對象; str:要搜索的字符串;

代碼實現:

public class StringIndexOf {

        publicstatic void main(String[] args) {

                 //創建字符串對象

                 Stringstr = "12345abde";

                 //獲取字符串str中"abc"首次出現的索引,賦值給charIndex

                 intcharIndex = str.indexOf("abc");

                 //判斷:index的值不等於-1

                 if(charIndex != -1) {

                         //如果index不等於-1,則執行此行代碼,說明str中存在“abc”字符串

                         System.out.println("str中存在abc字符串");

                 }else {

                         //如果index等於-1,則執行此行代碼,說明str中沒有“abc”字符串

                         System.out.println("str中沒有abc字符串");

                 }

        }

}

結果:

            2.indexOf(String str,int fromIndex)--從指定索引fromIndex開始至字符串最後,返回指定子字符串在字符串中第一次出現處的索引。如果沒有檢索到,該方法的返回值爲-1;語法:a.indexOf(str,fromIndex);a:任意字符串對象; str:要搜索的子字符串;fromIndex:開始搜索索引的索引位置

代碼實現:

public class StringIndexOf2 {

        publicstatic void main(String[] args) {

                 //創建字符串

                 Stringstr = "We are the world";

                 //獲取字符串中"r"第一次出現的索引位置

                 intfirstIndex = str.indexOf("r");

                 //獲取字符串中"r"第二次出現的索引位置,從第一次出現的索引位置之後開始查找

                 intsecondIndex = str.indexOf("r", firstIndex + 1);

                 //獲取字符串中"r"第三次出現的索引位置,從第二次出現的索引位置之後開始查找

                 intthirdIndex = str.indexOf("r", secondIndex + 1);

                 //輸出三次獲取的索引位置

                 System.out.println("e第一次出現的索引位置是:"+ firstIndex);

                 System.out.println("e第二次出現的索引位置是:"+ secondIndex);

                 System.out.println("e第三次出現的索引位置是:"+ thirdIndex);

        }

}

結果:

            3.lastIndexOf(Stringstr)--返回指定子字符串在此字符串最右邊出現處的索引。--語法:a.lastIndexOf(str);a:任意字符串對象; str:要搜索的字符串;

代碼實現:

public class StringLastIndexOf {

        publicstatic void main(String[] args) {

                 Stringstr = "Let it go!Let it go!"; //創建字符串對象

                 intgIndex = str.lastIndexOf("g");  // 返回”g“最後一次出現的位置

                 intgoIndex = str.lastIndexOf("go");      // 返回”go“最後一次出現的位置

                 intoIndex = str.lastIndexOf("o");  // 返回”o“最後一次出現的位置

                 System.out.println("字符串\"Letit go!Let it go\"中:\n");

                 System.out.println("\"g\"最後一次出現的位置是:"+ gIndex);

                 System.out.println("\"o\"最後一次出現的位置是:"+ oIndex);

                 System.out.println("\"go\"最後一次出現的位置是:"+ goIndex);

                 Stringstr1 = "人過大佛寺,寺佛大過人";

                 intgIndex1 = str1.lastIndexOf("人");

                 System.out.println("\"人\"最後一次出現的位置是:"+ gIndex1);

        }

}

結果

            4.lastIndexOf(String str,int fromIndex)--返回指定子字符串在此字符串中最後一次出現處的索引,從指定索引位置開始反向搜索。a.lastIndexOf(str,fromIndex);a:任意字符串對象; str:要搜索的子字符串;fromIndex:開始搜索索引的索引位置

代碼實現:

public class StringLastIndexOf2 {

        publicstatic void main(String[] args) {

                 Stringstr = "01a3a56a89";

                 //返回字母"a"最後一次出現的索引位置

                 intlastIndex = str.lastIndexOf("a");

                 //返回字母"a"的索引位置otherIndex

                 //滿足0<=fiveBeforeIndex<=5條件,在滿足條件的結果集中,返回最大的數字

                 intfiveBeforeIndex = str.lastIndexOf("a", 5);

                 //返回字母"a"的索引位置otherIndex

                 //滿足0<=threeBeforeIndex<=3條件,在滿足條件的結果集中,返回最大的數字

                 intthreeBeforeIndex = str.lastIndexOf("a", 3);

                 System.out.println("字符串\"01a3a56a89\"中:\n");

                 System.out.println("字母\"a\"最後一次出現的位置是:"+ lastIndex);

                 System.out.println("從索引位置5開始往回搜索,字母\"a\"最後一次出現的位置:"+ fiveBeforeIndex);

                 System.out.println("從索引位置3開始往回搜索,字母\"a\"最後一次出現的位置:"+ threeBeforeIndex);

        }

}

 結果:

    (4)判定字符串首尾內容

            1.starsWith(String str)--用於判定字符串是否以指定的前綴開始。語法:a.starsWith(str);a:任意字符串; str:要作爲前綴的字符串;

代碼實現:

public classStringStartWith {

        publicstatic void main(String[] args) {

                 //前半句

                 StringmyDream1 = "我有一個夢想,幽谷上升,高山下降;";

                 //後半句

                 StringmyDream2 = "坎坷曲折之路成坦途,聖光披露,滿照人間。";

                 //打印整句話

                 System.out.println(myDream1+ myDream2 + "\n\t\t————馬丁•路德金《我有一個夢想》\n");

                 //判斷前半句是否以"我有一個夢想"爲前綴

                 booleanfirstBool = myDream1.startsWith("我有一個夢想");

                 //判斷後半句是否以"我有一個夢想"爲前綴

                 booleansecondBool = myDream2.startsWith("我有一個夢想");

                 //判斷前半句的邏輯結果

                 if(firstBool) {

                         System.out.println("前半句是以\"我有一個夢想\"開始的。");

                         //判斷後半句的邏輯結果

                 }else if (secondBool) {

                         System.out.println("後半句是以\"我有一個夢想\"開始的。");

                         //如果沒有符合條件的字符串

                 }else {

                         System.out.println("沒有以\"我有一個夢想\"開始的。");

                 }

        }

}

結果:

            2.starsWith(String str,int index)--用於判定從指定索引開始的子字符串是否以指定的前綴開始。語法:a.starsWith(str,index);a:任意字符串; str:要作爲前綴的字符串;index:開始查找的位置。

代碼實現:

public classStringStartWith2 {

        publicstatic void main(String[] args) {

                 //創建字符串對象

                 Stringstr = "牀前明月光,疑是地上霜。\n舉頭望明月,低頭思故鄉。";

                 //打印古詩

                 System.out.println("  《靜夜思》\n" + str +"\n");

                 //返回換行符所在的位置

                 intenterIndex = str.indexOf("\n");

                 //返回從換行符之後開始的子字符串前綴是否爲”舉“。

                 //換行符在字符串中只佔一個字符,所以enterIndex + 1

                 booleanflag = str.startsWith("舉", enterIndex + 1);

                 if(flag) {

                         //如果結果爲真,則輸出此句

                         System.out.println("第二行是以\"舉\"開始的");

                 }else {

                         //如果結果爲假,則輸出第二行開頭第一個字符

                         System.out.println("第二行是以\""+ str.charAt(enterIndex + 1) + "\"開始的");

                 }

        }

}

結果:

            3.endsWith(String str)--用於判斷字符串是否以指定的後綴結束。語法:a.starsWith(str);a:任意字符串; str:指定的後綴字符串;

代碼實現:

public classStringEndsWith {

        publicstatic void main(String[] args) {

                 Stringstr1 = "你說完了嗎?";

                 Stringstr2 = "我說完了.java";

                 booleanflag1 = str1.endsWith("。");// 判斷str1是否以"。"結尾

                 booleanflag2 = str2.endsWith(".java");// 判斷str2是否以"。"結尾

                 System.out.println("字符串str1是以句號結尾的嗎?"+ flag1);// 輸出結果

                 System.out.println("字符串str2是以.java結尾的嗎?" +flag2);

        }

}

結果:

    (5)獲取字符數組

            1.toCharArray()方法可以將一個字符串轉化爲一個字符數組。語法str.toCharArray();str:任意字符串

代碼實現

public classStringToArray {

        publicstatic void main(String[] args) {

                 Stringstr = "這是一個字符串";//創建一個字符串

                 char[]ch = str.toCharArray();//將字符串轉換成字符數組

                 for(int i = 0; i < ch.length; i++) {//遍歷字符數組

                         System.out.println("數組第" + i+ "個元素爲:" + ch[i]);//輸出數組的元素

                 }

        }

}

結果

    (6)判定子字符串是否存在

            1.contains()方法可以判斷字符串中是否包含指定的內容。語法str.contains(string);str:任意字符串;string:查詢的子字符串。

代碼實現:

public classStringContains {

        publicstatic void main(String[] args) {

                 //創建字符串

                 Stringstr = "今天的菜單有:蒸羊羔,蒸熊掌,蒸鹿尾。燒花鴨,燒雛雞,燒子鵝,滷煮鹹鴨,醬雞,臘肉,松花小肚。";

                 System.out.println(str);//輸出字符串

                 booleanrequest1 = str.contains("臘肉");// 判斷字符串中是否有“臘肉”的字樣

                 System.out.println("今天有臘肉嗎?"+ request1);

                 booleanrequest2 = str.contains("漢堡");// 判斷字符串中是否有“漢堡”的字樣

                 System.out.println("今天有漢堡嗎?"+ request2);

        }

}

結果:

今天的菜單有:蒸羊羔,蒸熊掌,蒸鹿尾。燒花鴨,燒雛雞,燒子鵝,滷煮鹹鴨,醬雞,臘肉,松花小肚。
今天有臘肉嗎?true
今天有漢堡嗎?false

5.4字符串操作

    (1)截取字符串

            1.substring(int beginIndex)--該方法返回一個新的字符串,它是此字符串的一個子字符串,該字符串從指定的索引處開始,直到此字符串的末尾。語法:str.substring( beginIndex);str:任意字符串。beginIndex:起始索引(包括)

代碼實現:

public class StringSub {

        publicstatic void main(String[] args) {

                 Stringstr = "爲革命保護視力,眼保健操開始!";

                 Stringsubstr = str.substring(8);              //從第8位開始截取字符串

                 System.out.println("字符串str的後半句是:"+ substr);

        }

}

結果:

字符串str的後半句是:眼保健操開始!

            2.substring(int beginIndex,int endindex)--該方法返回一個新的字符串,它是此字符串的一個子字符串,該字符串從指定的beginIndex處開始,直到索引endindex-1處的字符。語法:str.substring( beginIndex,endindex);str:任意字符串。beginIndex:起始索引(包括)。endindex:結束索引)(不包括)。

代碼實現:

public classStringSub2 {

        publicstatic void main(String[] args) {

                 Stringstr = "閉門造車,出門合轍。";

                 //從0開始(即從頭開始)截取至4-1索引位置的子字符串

                 Stringsubstr = str.substring(0, 4);

                 System.out.println("字符串str的前半句是:"+ substr);

        }

}

結果:

字符串str的前半句是:閉門造車

    (2)字符串替換

            1.replace(CharSequence target,CharSequence replacement)--該方法可以實現將指定的字符串序列替換成新的字符序列。語法:str.replace(oldstr,newstr)str:任意字符串,oldstr:要被替換的字符序列,newstr:替換後新的字符序列。

代碼實現:

public class StringReplace {

        publicstatic void main(String[] args) {

                 Stringstr="明月幾時有,把酒問青天";            

                 Stringrestr=str.replace("月", "日");     //將str中的”月“全部替換成”日“

                 System.out.println("字符串str替換之後的效果:"+restr);

        }

}

結果:

字符串str替換之後的效果:明日幾時有,把酒問青天

        2.replaceAll(String oldstr,String newstr)--該方法可以實現將指定的字符串替換成新的字符串,支持正則表達式。語法:str.replaceAll(oldstr,newstr)str:任意字符串,oldstr:要被替換的字符串或正則表達式,newstr:替換後新的字符串。

代碼實現:

public classStringReplaceAll {

        publicstatic void main(String[] args) {

                 //創建字符串,前十位是數字

                 Stringstr = "0123456789abc\\d";

                 //使用replace()將符合"\\d"表達式的字符串替換"?"

                 Stringrestr = str.replace("\\d", "?");

                 //使用replaceAll()將符合"\\d"表達式的字符串替換"?"

                 StringrestrAll = str.replaceAll("\\d", "?");

                 //輸出結果

                 System.out.println("字符串str:" + str);

                 System.out.println("使用replace()替換的結果:"+ restr);

                 System.out.println("使用replaceAll()替換的結果:"+ restrAll);

        }

}

結果:

字符串str:0123456789abc\d
使用replace()替換的結果:0123456789abc?

使用replaceAll()替換的結果:??????????abc\d

            3.replaceFirst(String oldstr,String newstr)--該方法可以實現將第一個指定的字符串替換成新的字符串,支持正則表達式。語法:str.replaceFirst(oldstr,newstr)str:任意字符串,oldstr:第一個被替換的字符串或正則表達式,newstr:替換後新的字符串。

代碼實現:

public classStringReplaceFirst {

        publicstatic void main(String[] args) {

                 //創建字符串

                 Stringstr = "8I want to marry you, so I need you!";

                 //將開頭的數字去掉

                 StringnoNumber = str.replaceFirst("\\d", "");

                 //將第一次出現的"you"替換成"her"

                 StringyouToHer = noNumber.replaceFirst("you", "her");

                 //輸出結果

                 System.out.println(noNumber);

                 System.out.println("替換之後的結果是:"+youToHer);

                

                 //創建字符串

                                  Stringstr1 = "Let it go!Let it go!Let it go!";

                                  //將第一次出現的"go"替換成"do"

                                  StringnoNumber1 = str1.replaceFirst("go", "do");

                                  //將第二次出現的"go"替換成"do"

                                  StringyouToHer1 = noNumber1.replaceFirst("go", "do");

                                  //輸出結果

                                  System.out.println(noNumber1);

                                  System.out.println("替換之後的結果是:"+youToHer1);

        }

}

結果:

I want to marry you, so I need you!
替換之後的結果是:I want to marry her, so I need you!
Let it do!Let it go!Let it go!

替換之後的結果是:Let it do!Let it do!Let it go!

另附常見正則表達式

    (3)字符串分割

            1.split(String str)--根據給定的分隔符對字符串進行拆分,支持正則表達式,最後返回一個字符串數組。語法:a.split(str)

代碼實現:

public classStringSplit {

        publicstatic void main(String[] args) {

                 //創建一個字符串

                 Stringstr = "從前有座山,山裏有個廟,廟裏有個小松鼠";

                 //讓字符串按照","進行分割

                 String[]strArray = str.split(",");

                 //使用for循環,循環輸出數字所有元素

                 for(int i = 0; i < strArray.length; i++) {

                         System.out.println("數組第" + i+ "索引的元素是:" + strArray[i]);

                 }

        }

}

結果

數組第0索引的元素是:從前有座山
數組第1索引的元素是:山裏有個廟

數組第2索引的元素是:廟裏有個小松鼠

            2.split(String str,int limit)--根據給定的分隔符對字符串進行拆分,並限定拆分的次數,支持正則表達式。語法:a.split(str,limit)a:任意字符串;str:分隔符表達式;limit:限定的分割次數。

代碼實現:

public classStringSplit3 {

        publicstatic void main(String[] args) {

                 //創建字符串

                 Stringstr = "192.168.0.1";

                 //按照"."進行分割

                 String[]firstArray = str.split("\\.");

                 //按照"."進行兩次分割

                 String[]secondArray = str.split("\\.", 2);

                 //輸出str原值

                 System.out.println("str的原值爲:["+ str + "]");

                 //輸出全部分割的結果

                 System.out.print("全部分割的結果:");

                 for(String a : firstArray) {

                         System.out.print("["+ a + "]");

                 }

                 System.out.println();//換行

                 //輸出分割兩次的結果

                 System.out.print("分割兩次的結果:");

                 for(String a : secondArray) {

                         System.out.print("["+ a + "]");

                 }

                 System.out.println();

        }

}

結果:

str的原值爲:[192.168.0.1]
全部分割的結果:[192][168][0][1]
分割兩次的結果:[192][168.0.1]

    (4)大小寫轉換

            1.toLowerCase()--該方法將字符串轉化爲小寫,沒有需要轉化的則返回原字符串,否則則生成新的字符串:語法str.toLowerCase();

             2.toUpperCase()--該方法將字符串轉化爲大寫,沒有需要轉化的則返回原字符串,否則則生成新的字符串:語法str.toUpperCase();

代碼實現:

public classStringTransform {

        publicstatic void main(String[] args) {

                 Stringstr = "good morming EVERY ONE"; // 創建字符串

                 System.out.println(str.toUpperCase());// 按照大寫格式輸出

                 System.out.println(str.toLowerCase());// 按照小寫格式輸出

        }

}

結果:

GOOD MORMING EVERY ONE
good morming every one

    (5)去除空白內容

            1.trim()--該方法可以返回字符串的副本,忽略首尾處空白。語法:str.trim();

代碼實現:

public classStringTrim {

        publicstatic void main(String[] args) {

                 Stringstr = "       abc            ";

                 StringshortStr = str.trim();

                 System.out.println("str的原值是:["+ str + "]");

                 System.out.println("去掉首尾空白的值:["+ shortStr + "]");

        }

}

結果:

str的原值是:[       abc            ]
去掉首尾空白的值:[abc]

    (6)字符串比較

            1.equals(String str);將此字符串與指定的對象比較。

            2.equalsIgnoreCase(String str)--將此字符串與指定的對象比較,不考慮大小寫。

代碼實現:

public classStringEqualsIgnoreCase {

        public staticvoid main(String[] args) {

                 // 創建字符串對象,內容全部小寫

                 String str1 = "abc";

                 // 創建字符串對象,內容全部大寫

                 String str2 = "ABC";

                 // 比較兩個字符串的內容是否相等

                 System.out.println("區分大小寫的結果:"+str1.equals(str2));

                 // 比較兩個字符串的內容是否相等,不區分大小寫

                 System.out.println("不區分大小寫的結果:"+str1.equalsIgnoreCase(str2));

        }

}

結果

區分大小寫的結果:false
不區分大小寫的結果:true

    (7)字符串格式化--format()方法用於創建格式化字符串

            1.日期與時間格式化

                1.1日期格式化

常用日期格式化轉換符

轉換符描述體示例
%te一個月中的某一天(1~31)2
%tb指定語言環境的月份簡稱Feb(英文)、二月(中文)
%tB指定語言環境的月份全稱February(英文)、二月(中文)
%tA指定語言環境的星期幾全稱Monday(英文)、星期一(中文)
%ta指定語言環境的星期幾簡稱Mon(英文)、星期一(中文)
%tc包括全部日期和時間信息Mon Jan 08 06:30:04 UTC 2018
%tY四位年份2018
%ty兩位年份18
%tj一年中的第幾天(001~366)008
%tm月份(01~12)08
%td一個月中的第幾天(01~31)08

                1.2時間格式化

常用時間格式化轉換符

轉換符描述體示例
%tH2位數字的24小時制的小時(00~23)14
%tI2位數字的12小時制的小時(01~12)05
%tk2位數字的24小時制的小時(1~23)5
%tI2位數字的12小時制的小時(1~12)10
%tM2位數字的分鐘(00~59))05
%tS2位數字的秒數(00~60)12
%tL3位數字的毫秒數(000~999)920
%tN9位數字的微秒數(000000000~999999999)062000000000
%tp指定語言環境下上午或下午標記下午(中文)、pm(英文)
%tz相對於GMT RFC 82格式的數字時區偏移量+0800
%tZ時區縮寫形式的字符串CST
%ts1970-01-01 00:00:00至現在經過的秒數1206426646
%tQ1970-01-01 00:00:00至現在經過的毫秒數1206426737453

                1.3日期時間組合格式化

常用日期時間格式化組合轉換符

轉換符描述體示例
%tF“年-月-日”格式(4位年份)2018-01-08
%tD“月/日/年”格式(2位年份)01/08/18
%tr“時:分:秒 PM(AM)”格式(12小時制)15:23:50 PM
%tT“時:分:秒”格式(24小時制)15:23:50
%tR“時:分”格式(24小時制)15:23

            2.常規類型格式化

轉換符

轉換符

說明

示例

%b , %B

結果被格式化爲布爾型

True

%h , %H

結果被格式化爲散列碼

A05A5198

%s , %S

結果被格式化爲字符串類型

“abcd”

%c , %C

結果被格式化爲字符類型

‘a’

%d

結果被格式化爲十進制整數

40

%o

結果被格式化爲八進制整數

11

%x , %X

結果被格式化爲十六進制整數

4b1

%e

結果被格式化爲用計算機科學計數法表示的十進制數

1.700000e+01

%a

結果被格式化爲帶有效位數和指數的十六進制浮點值

0X1.C000000000001P4

%n

結果爲特定於平臺的分割符

 

%%

結果爲子面值%

%

 代碼實現

public classStringFormat {

        publicstatic void main(String[] args) {

                 //輸出字符

                 Stringstr1 = String.format("%c", 'X');

                 System.out.println("字母x大寫:" + str1);

                 //輸出數字

                 Stringstr2 = String.format("%d", 1251 + 3950);

                 System.out.println("1251+3950的結果是:" +str2);

                 //輸出小數點後兩位

                 Stringstr3 = String.format("%.2f", Math.PI);

                 System.out.println("π取兩位小數點:"+ str3);

                 //輸出布爾值

                 Stringstr4 = String.format("%b", 2 < 3);

                 System.out.println("2<3的結果是:" +str4);

                 //輸出哈希散列碼,等同Integer.toHexString(3015);

                 Stringstr5 = String.format("%h", 3510);

                 System.out.println("3510的hashCode值:" + str5);

                 //輸出8進制

                 Stringstr6 = String.format("%o", 33);

                 System.out.println("33的8進制結果是:"+ str6);

                 //輸出16進制

                 Stringstr7 = String.format("%x", 33);

                 System.out.println("33的16進制結果是:"+ str7);

                 //輸出科學計數法

                 Stringstr8 = String.format("%e", 120000.1);

                 System.out.println("120000.1用科學計數法表示:"+ str8);

                 //輸出帶有效位數和指數的16進制浮點值

                 Stringstr9 = String.format("%a", 40.0);

                 System.out.println("40.0的十六進制浮點值:"+ str9);

                 //輸出百分號和數字

                 System.out.println(String.format("天才是由%d%%的靈感,%d%%的汗水 。", 1, 99));

        }

}

結果

字母x大寫:X
1251+3950的結果是:5201
π取兩位小數點:3.14
2<3的結果是:true
3510的hashCode值:db6
33的8進制結果是:41
33的16進制結果是:21
120000.1用科學計數法表示:1.200001e+05
40.0的十六進制浮點值:0x1.4p5

天才是由1%的靈感,99%的汗水 。

使用轉換符還可以配合轉換符標識來控制輸出格式

轉換符標識

標識

說明

‘-’

在最小的寬度內左對齊,不可以與‘0’填充標識同時使用

‘#’

用於8進制和16進制格式,在8進制前加一個0,在16進制前加一個0x

‘+’

顯示數字的正負號

‘’

在正數前面加空格,在負數前加負號

‘0’

在不夠最小位數的結果前用0填充

‘,’

只適用於10進制數,沒三位數字‘,’分隔

‘(’

用括號吧負數括起來

 代碼實現:

public classStringFormat2 {

        publicstatic void main(String[] args) {

                 //讓字符串輸出的最大長度爲5,不足長度在前端補空格

                 Stringstr1 = String.format("%5d", 123);

                 System.out.println("輸出長度爲5的字符串|" +str1 + "|");

                 //讓字符串左對齊

                 Stringstr2 = String.format("%-5d", 123);

                 System.out.println("左對齊|" + str2+ "|");

                 //在8進制前加一個0

                 Stringstr3 = String.format("%#o", 33);

                 System.out.println("33的8進制結果是:"+ str3);

                 //在16進前加一個0x

                 Stringstr4 = String.format("%#x", 33);

                 System.out.println("33的16進制結果是:"+ str4);

                 //顯示數字正負號

                 Stringstr5 = String.format("%+d", 1);

                 System.out.println("我是正數:" +str5);

                 //顯示數字正負號

                 Stringstr6 = String.format("%+d", -1);

                 System.out.println("我是負數:" +str6);

                 //在正數前補一個空格

                 Stringstr7 = String.format("% d", 1);

                 System.out.println("我是正數,前面有空格"+ str7);

                 //在負數前補一個負號

                 Stringstr8 = String.format("% d", -1);

                 System.out.println("我是負數,前面有負號"+ str8);

                 //讓字符串輸出的最大長度爲5,不足長度在前端補0

                 Stringstr9 = String.format("%05d", 12);

                 System.out.println("前面不夠的數用0填充:" + str9);

                 //用逗號分隔數字

                 Stringstr10 = String.format("%,d", 123456789);

                 System.out.println("用逗號分隔:"+ str10);

                 //正數無影響

                 Stringstr11 = String.format("%(d", 13);

                 System.out.println("我是正數,我沒有括號:"+ str11);

                 //讓負數用括號括起來

                 Stringstr12 = String.format("%(d", -13);

                 System.out.println("我是負數,我有括號的:"+ str12);

        }

}

結果

輸出長度爲5的字符串|  123|
左對齊|123  |
33的8進制結果是:041
33的16進制結果是:0x21
我是正數:+1
我是負數:-1
我是正數,前面有空格 1
我是負數,前面有負號-1
前面不夠的數用0填充:00012
用逗號分隔:123,456,789
我是正數,我沒有括號:13
我是負數,我有括號的:(13)

5.5可變字符串

    (1)StringBuffer類的常用方法

            1.創建StringBuffer類--必須使用new方法

            2.append()方法--將參數轉化爲字符串,將所得字符串中的字符追加到此序列中

            3.setCharAt(int index,char ch)方法--將給定索引處的字符修改爲ch

            4.insert(int offset,String str)方法--將字符串插入帶索引處

            5.reverse()方法--將字符串反序輸出

            6.delete(int start,int end)方法--移除此序列的子字符串中的字符,該子字符串是從索引start處開始到索引end-1處。

            7.其他方法--類似String類的方法

代碼展示

public class StrignBufferTest {

        publicstatic void main(String[] args) {

                 StringBuffersbf = new StringBuffer("ABCDEFG");// 創建字符串序列

                 intlenght = sbf.length();// 獲取字符串序列的長度

                 charchr = sbf.charAt(5); // 獲取索引爲5的字符

                 intindex = sbf.indexOf("DEF");// 獲取DEF字符串所在的索引位置

                 Stringsubstr = sbf.substring(0, 2);// 截取從索引0開始至索引2之間的字符串

                 StringBuffertmp = sbf.replace(2, 5, "1234");// 將從索引2開始至索引5之間的字符序列替換成"1234"

                 System.out.println("sbf的原值爲:" +sbf);

                 System.out.println("sbf的長度爲:" +lenght);

                 System.out.println("索引爲5的字符爲:" +chr);

                 System.out.println("DEF字符串的索引位置爲:"+ index);

                 System.out.println("索引0開始至索引2之間的字符串:"+ substr);

                 System.out.println("替換後的字符串爲:"+ tmp);

        }

}

結果

sbf的原值爲:AB1234FG
sbf的長度爲:7
索引爲5的字符爲:F
DEF字符串的索引位置爲:3
索引0開始至索引2之間的字符串:AB
替換後的字符串爲:AB1234FG

    (2)StringBuider類的使用方法--StringBuider類和StringBuffer類的使用方法一樣

代碼實現:

public classStringBuilderTest {

        publicstatic void main(String[] args) {

                 StringBuildersbd = new StringBuilder();

                 System.out.println("sbd的原值爲空");

                 sbd.append("我是StringBuilder類");

                 System.out.println("sbd追加字符串:"+ sbd);

                 intlength = sbd.length();

                 System.out.println("sbd的長度爲:" +length);

                 sbd= sbd.insert(length - 1, "123456");

                 System.out.println("插入字符串:"+ sbd);

                 sbd= sbd.delete(sbd.length() - 1, sbd.length());

                 System.out.println("刪除最後一個字:"+ sbd);

                 sbd= sbd.reverse();

                 System.out.println("反序輸出:" +sbd);

        }

}

結果:

sbd的原值爲空
sbd追加字符串:我是StringBuilder類
sbd的長度爲:16
插入字符串:我是StringBuilder123456類
刪除最後一個字:我是StringBuilder123456
反序輸出:654321redliuBgnirtS是我

    (3)StringBuffer、StringBuider、String之間的聯繫

            1.StringBuffer、StringBuider、String互相轉換

代碼實現:

public class StringInterchange {

   public static voidmain(String[] args) {

      String str = "String";

      // String轉換成StringBuffer

      StringBuffer sbf = newStringBuffer(str);

      // String轉換成StringBuilder

     StringBuilder sbd = newStringBuilder(str);

      // StringBuffer轉換成String

      str = sbf.toString();

      // StringBuilder轉換成String

      str = sbd.toString();

      // StringBuffer轉換成StringBuilder

      StringBuilder bufferToBuilder = newStringBuilder(sbf.toString());

      // StringBuilder轉換成StringBuffer

      StringBuffer builderToBuffer = newStringBuffer(sbd.toString());

   }

} 

            2.StringBuffer、StringBuider、String的不同之處

StringBuffer、StringBuider、String的區別

類名

String

StringBuider

StringBuffer

對象類型

字符串常量

字符串變量

字符串變量

線程安全性

不安全

不安全

安全

執行效率

適用場景:

(1)操作少、數據少,用String。

(2)單線程、操作多、數據多,用StringBuider

(3)多線程、操作多、數據多,用StringBuffer

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章