java基础----String、StringBuffer、StringBuilder
生活随笔
收集整理的這篇文章主要介紹了
java基础----String、StringBuffer、StringBuilder
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.String
package com.henu;public class Demo05 {public static void main(String[] args) {/** 字符串是常量;它們的值在創建之后不能更改,這是什么意思呢?其實就是說一旦這個字符串確定了,* 那么就會在內存區域中就生成了這個字符串。字符串本身不能改變,但str變量中記錄的地址值是可以改變的。*//** 首先創建一個String對象s,然后讓s的值為“ABCabc”, 然后又讓s的值為“123456”。 * 從打印結果可以看出,s的值確實改變了。那么怎么還說String對象是不可變的呢? 其實這里存在一個誤區: *s只是一個String對象的引用,并不是對象本身。對象在內存中是一塊內存區,成員變量越多,* 這塊內存區占的空間越大。引用只是一個4字節的數據,里面存放了它所指向的對象的地址,* 通過這個地址可以訪問對象。 也就是說,s只是一個引用,它指向了一個具體的對象,當s=“123456”;* 這句代碼執行過之后,又創建了一個新的對象“123456”, 而引用s重新指向了這個心的對象,* 原來的對象“ABCabc”還在內存中存在,并沒有改變。*/String str1 = "ABCabc";str1 = "123456"; String s3 = "abc";String s4 = new String("abc");System.out.println(s3==s4);//falseSystem.out.println(s3.equals(s4));//true,/*s3和s4的創建方式有什么不同呢??s3創建,在內存中只有一個對象。這個對象在字符串常量池中?s4創建,在內存中有兩個對象。一個new的對象在堆中,一個字符串本身對象,在字符串常量池中*/byte[] bys = new byte[]{97,98,99,100};// 創建String對象,把數組元素作為字符串的內容String s5 = new String(bys);//創建String對象,把一部分數組元素作為字符串的內容,參數offset為數組元素的起始索引位置,參數length為要幾個元素String s6 = new String(bys, 1, 3); /** String方法查找* */String str2 = "abcde";String s1 = str2.substring(1); //返回一個新字符串,內容為指定位置開始到字符串末尾的所有字符String s2 = str2.substring(2, 4);//返回一個新字符串,內容為指定位置開始到指定位置結束所有字符String str = "StringDemo.java";boolean b1 = str.startsWith("Demo");//判斷是否以給定字符串開頭boolean b2 = str.startsWith("String");boolean b3 = str.endsWith("java");//判斷是否以給定字符串結尾String str3 = "abcde";int index = str3.indexOf("bcd"); //判斷是否包含指定字符串,包含則返回第一次出現該字符串的索引,不包含則返回-1boolean b4 = str3.contains("bcd");//判斷是否包含指定字符串,包含返回true,不包含返回false/*** 將字符串轉化為字符數組,或者字節數組*/String str4 = "abcde";char[] chs = str4.toCharArray();byte[] bytes = str4.getBytes();for(byte b : bytes) {System.out.println(b);}/*** ?判斷兩個字符串中的內容是否相同*/boolean flag = str3.equals(str);/*** ? 判斷該字符串的內容是否為空的字符串 isEmpty()?獲取給定的字符,在該字符串中第一次出現的位置 indexOf(String?str)?獲取該字符串中指定位置上的字符 (返回值String)?substring(int beginIndex) substring(int?beginIndex, int?endIndex)?把該字符串轉換成 小寫字符串 toLowerCase()?把該字符串轉換成 大寫字符串 toUpperCase()?在該字符串中,將給定的舊字符,用新字符替換 ?replace(char?oldChar, char?newChar)?在該字符串中, 將給定的舊字符串,用新字符串替換?replaceAll(String?regex, String?replacement)?replaceFirst(String?regex, String?replacement)?去除字符串兩端空格,中間的不會去除,返回一個新字符串 trim()*/String string = str4.substring(str4.indexOf(2));System.out.println(string);}}1.練習1?
package com.henu; /*** @author limengdong* @date 2019年7月19日* @classroom 208bigdata* @description:獲取指定字符串中,大寫字母、小寫字母、數字的個數。*/ public class Demo06 {public static void main(String[] args) {String str = "AbCDfg3876";char[] cs = str.toCharArray();int bigCount = 0;int smallCount = 0;int numberCount = 0;for(int i = 0; i < cs.length; i++) {if (cs[i] >= 48 && cs[i] <= 57) {numberCount++;}else if (cs[i] >= 65 && cs[i] <= 90) {bigCount++;}else if (cs[i] >= 97 && cs[i] <= 122) {smallCount++;}else {continue;}}System.out.println("大寫字母個數為:"+bigCount);System.out.println("小寫字母個數為:"+smallCount);System.out.println("數字個數為:"+numberCount);} }?2.練習2
package com.henu;import java.util.Arrays;/*** @author limengdong* @date 2019年7月19日* @classroom 208bigdata* @description:將字符串中,第一個字母轉換成大寫,其他字母轉換成小寫,并打印改變后的字符串* A = (char)a -32;*/ public class Demo07 {public static void main(String[] args) {//第一種寫法/*String str = "abCDfg3876";String str1 = str.toLowerCase();char[] cs = str1.toCharArray();cs[0] = (char) (cs[0] - 32);System.out.println(cs[0]);String str2 = Arrays.toString(cs);System.out.println(str2);*///第二種寫法String str = "abCDfg3876";String first = str.substring(0, 1);String end = str.substring(1);String big = first.toUpperCase();String small = end.toLowerCase();String res = big + small;System.out.println(res);}}3.練習三
package com.henu; /*** @author limengdong* @date 2019年7月19日* @classroom 208bigdata* @description:查詢大字符串中,出現指定小字符串的次數。* 如“hellojava,nihaojava,javazhenbang”中查詢出現“java”的次數。*/ public class Demo08 {public static void main(String[] args) {String string = "hellojava,nihaojava,javazhenbang";int count = 0;int index = -1;/*** string.indexOf("java")取出第一個java字符串所在的位置,并賦值index。* !=-1代表在字符串string中存在java字符串,當去過第一個index值后,* 然后substring(index+1),從第一個java后取字符串,然后再做判斷。*/while((index = string.indexOf("java")) != -1) {string = string.substring(index+1);count++;}System.out.println(count);}}?2.StringBuffer
package com.henu; /*** @author limengdong* @date 2019年7月19日* @classroom 208bigdata* @description:StringBuffer的方法使用。*/ public class Demo09 {public static void main(String[] args) {/*** StringBuffer 的方法使用*/StringBuffer sBuffer = new StringBuffer();sBuffer.append("java").append("天下第一");sBuffer.append("php").append("天下無敵");System.out.println(sBuffer);//java天下第一php天下無敵sBuffer.delete(1, 2);System.out.println(sBuffer);//jva天下第一php天下無敵sBuffer.insert(1, "a");System.out.println(sBuffer);//java天下第一php天下無敵sBuffer.replace(0, 5, "python");System.out.println(sBuffer);//python下第一php天下無敵sBuffer.reverse();System.out.println(sBuffer);//敵無下天php一第下nohtypSystem.out.println(sBuffer.toString());//敵無下天php一第下nohtyp/*** StringBuffer類方法查找練習*///?substring(int start, int end) 返回一個新的 String ,其中包含此序列中當前包含的字符的子序列。/* 創建一個字符串緩沖區對象。用于存儲數據。StringBuffer sb = new StringBuffer();添加數據。不斷的添加數據后,要對緩沖區的最后的數據進行操作,必須轉成字符串才可以。String str = sb.append(true).append("hehe").toString();*/int[] arr = {34,12,89,68};String str = toString_1(arr);System.out.println(str); }//練習:int[] arr = {34,12,89,68};將一個int[]中元素轉成字符串 格式 [34,12,89,68]public static String toString_1(int[] arr) {StringBuffer stringBuffer = new StringBuffer();stringBuffer.append("[");for(int i = 0; i < arr.length; i++) {if (i != arr.length-1) {stringBuffer.append(arr[i]+","); }else {stringBuffer.append(arr[i]+"]");}}return stringBuffer.toString();}}3.StringBuilder
package com.henu; /*** @author limengdong* @date 2019年7月19日* @classroom 208bigdata* @description:StringBuilder類*/ public class Demo10 {public static void main(String[] args) {/** 一個可變的字符序列。 此類提供與StringBuffer的API,但不保證同步。* 此類設計用作簡易替換為StringBuffer在正在使用由單個線程字符串緩沖區的地方(如通常是這種情況)。* 在可能的情況下,建議使用這個類別優先于StringBuffer ,因為它在大多數實現中將更快。 */}}?
?
?
?
總結
以上是生活随笔為你收集整理的java基础----String、StringBuffer、StringBuilder的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java小编程----反转字符串中的每一
- 下一篇: java基础----Date、DateF