日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

十三、StringBuffer

發布時間:2024/4/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十三、StringBuffer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

StringBuffer的含義:

  • StringBuffer是線程安全的可變字符串

String和StringBuffer的區別:

  • A、String的長度和內容是不可改變的,StringBuffer是可變的
  • B、StringBuffer拼接字符串在常量池中不會浪費過多的空間

StringBuffer的構造方法:

    public StringBuffer():無參構造方法

    public StringBuffer(int capacity):指定容量的字符串緩沖區對象

    public StringBuffer(String str):指定字符串內容的字符串緩沖區對象  

1 public class StringBufferDemo_my { 2 public static void main(String[] args) { 3 //創建StringBuffer對象 4 StringBuffer sb = new StringBuffer(); 5 // public StringBuffer():無參構造方法 6 System.out.println("sb:"+sb);//打印發現不是地址值,說明重寫toString方法。 7 System.out.println("長度是:"+sb.length());//0 8 System.out.println("容量是:"+sb.capacity());//16,因為容量默認是16 9 10 // public StringBuffer(int capacity):指定容量的字符串緩沖區對象 11 StringBuffer sb2 = new StringBuffer(50); 12 System.out.println("sb2:"+sb2);//打印發現不是地址值,說明重寫toString方法。 13 System.out.println("sb2長度是:"+sb2.length());//0 14 System.out.println("sb2容量是:"+sb2.capacity());//50,改了容量了 15 16 // public StringBuffer(String str):指定字符串內容的字符串緩沖區對象 17 StringBuffer sb3 = new StringBuffer("hello"); 18 System.out.println("sb3:"+sb3);//打印發現不是地址值,說明重寫toString方法。 19 System.out.println("sb3長度是:"+sb3.length());//5 20 System.out.println("sb3容量是:"+sb3.capacity());//21,16+5=21; 21 22 } 23 }

StringBuffer的方法

  • append添加功能
1 public class StringBufferDemo_my { 2 public static void main(String[] args) { 3 //創建StringBuffer對象 4 StringBuffer sb = new StringBuffer(); 5 StringBuffer sb2 = sb.append("hello"); 6 System.out.println(sb);//hello 7 System.out.println(sb2);//hello 8 System.out.println("--------------"); 9 //為什么兩個都是hello,因為StringBuffer創建了一個緩沖區,這個添加就是針對這一個緩沖區的 10 //并不會額外創建對象。返回的也是他自己本身 11 12 //append可以鏈式編程,只不過是添加在字符串的后面 13 sb.append("java").append(true).append(32.23); 14 System.out.println(sb); 15 //insert可以在制定的字符串索引位置添加字符串 16 sb.insert(5, "world"); 17 System.out.println(sb); 18 } 19 }
  • delete刪除功能
1 public class StringBufferDemo_my { 2 public static void main(String[] args) { 3 //創建StringBuffer對象 4 StringBuffer sb = new StringBuffer(); 5 sb.append("hello").append("world").append("java"); 6 //刪除特定索引處的字符 7 sb.deleteCharAt(0);//elloworldjava 8 System.out.println(sb); 9 //刪除一段索引的字符串 10 sb.delete(0, 4);//worldjava---為什么是worldjava而不是oworldjava因為java中這樣的方法大部分是包左不包右 11 System.out.println(sb); 12 } 13 }
  • 替換功能replace
1 /* 2 * StringBuffer的替換功能: 3 * public StringBuffer replace(int start,int end,String str):從start開始到end用str替換 4 * 5 */ 6 public class StringBufferDemo_my { 7 public static void main(String[] args) { 8 //創建StringBuffer對象 9 StringBuffer sb = new StringBuffer(); 10 sb.append("hello").append("world").append("java"); 11 //需求是把world替換成“節日快樂” 12 sb.replace(5, 10, "節日快樂");//hello節日快樂java。為什么是5到10,因為包左不包右。 13 System.out.println(sb); 14 } 15 }
  • 反轉功能
1 /* 2 * StringBuffer的反轉功能: 3 * public StringBuffer reverse() 4 */ 5 public class StringBufferDemo { 6 public static void main(String[] args) { 7 // 創建字符串緩沖區對象 8 StringBuffer sb = new StringBuffer(); 9 10 // 添加數據 11 sb.append("霞青林愛我"); 12 System.out.println("sb:" + sb); 13 14 // public StringBuffer reverse() 15 sb.reverse(); 16 System.out.println("sb:" + sb); 17 } 18 }
  • 截取功能。substring
1 /* 2 * StringBuffer的截取功能:注意返回值類型不再是StringBuffer本身了 3 * public String substring(int start) 4 * public String substring(int start,int end) 5 * 6 */ 7 public class StringBufferDemo_my { 8 public static void main(String[] args) { 9 //創建StringBuffer對象 10 StringBuffer sb = new StringBuffer(); 11 sb.append("helloworldjava"); 12 System.out.println(sb); 13 sb.substring(0, 5); 14 System.out.println(sb);//打印的是helloworldjava,因為返回的是String類型字符串 15 String s = sb.substring(0, 5);//我們用String字符串接受 16 System.out.println(s);//hello,打印發現截截取了hello字符串 17 } 18 }
  • 把數組轉換成字符串
1 /* 2 * 把數組拼接成一個字符串 3 */ 4 5 public class StringBufferTest2_my { 6 public static void main(String[] args) { 7 // 定義一個數組 8 int[] arr = { 44, 22, 44, 32, 66 }; 9 int[] arr2 = {33,44,55,66,77,88}; 10 // 用方法做拼接 11 String s1 = arrayTostring(arr); 12 System.out.println(s1); 13 14 String s2 = arrayTostring(arr2); 15 System.out.println(s2); 16 } 17 18 public static String arrayToString2(int[] arr) { 19 // 用StringBuffer同樣是調方法 20 StringBuffer sb = new StringBuffer(); 21 sb.append("["); 22 for(int i = 0; i<arr.length ; i++) { 23 if( i == arr.length -1) { 24 sb.append(arr[i]); 25 }else { 26 sb.append(arr[i]+" ,"); 27 } 28 } 29 sb.append("]"); 30 String s = sb.toString(); 31 return s; 32 } 33 34 public static String arrayTostring(int[] arr) { 35 String s = ""; 36 s += "["; 37 for (int i = 0; i < arr.length; i++) { 38 if (i == arr.length - 1) { 39 s += arr[i]; 40 } else { 41 s += arr[i] + " ,"; 42 43 } 44 } 45 s += "]"; 46 return s; 47 } 48 }
  • 把一個字符串反轉的兩種方法
1 import java.util.Scanner; 2 3 /* 4 * 把字符串反轉 5 * 6 * 方式一:字符串拼接 7 * 用字符串做拼接,思想是寫一個方法,定義一個空的字符串,然后利用toCharArray方法把字符串字符數組 8 * 寫一個for循環,倒著遍歷,把字符數組的值都賦值給字符串,返回這個字符串。 9 * 方式二:用StringBuffer 10 * 11 */ 12 public class StringBufferDemo3_my { 13 public static void main(String[] args) { 14 //創建鍵盤錄入對象 15 Scanner sc = new Scanner(System.in); 16 //錄入字符串 17 System.out.println("請輸入數據"); 18 String str = sc.nextLine(); 19 20 //用String做拼接 21 String s = myReverse(str); 22 System.out.println(s); 23 24 25 //利用stringBuffer 26 String str2 = myReverse2(str); 27 System.out.println(str2); 28 29 } 30 public static String myReverse2(String s) { 31 StringBuffer sb = new StringBuffer(); 32 sb.append(s); 33 sb.reverse(); 34 return sb.toString(); 35 } 36 37 public static String myReverse(String s) { 38 String result= ""; 39 char[] cha = s.toCharArray(); 40 for( int i = cha.length-1; i>=0 ; i--) { 41 result += cha[i]; 42 } 43 return result; 44 } 45 46 47 }
  • 判斷一個字符串是不是對成的字符串
1 import java.util.Scanner; 2 3 /* 4 * 判斷一個字符串是不是對成的字符串 5 * 6 */ 7 8 public class StringBufreTest4_my { 9 public static void main(String[] args) { 10 //創建字符錄入對象 11 Scanner sc = new Scanner(System.in); 12 //錄入數據 13 System.out.println("請錄入數據"); 14 String str = sc.nextLine(); 15 System.out.println(isSame(str)); 16 17 } 18 public static boolean isSame(String s) { 19 return new StringBuffer(s).reverse().toString().equals(s); 20 } 21 }
  • 下面再說幾個關于StringBuffer的面試題
1 /* 2 * 面試題: 3 * 1:String,StringBuffer,StringBuilder的區別? 4 * A:String是內容不可變的,而StringBuffer,StringBuilder都是內容可變的。 5 * B:StringBuffer是同步的,數據安全,效率低;StringBuilder是不同步的,數據不安全,效率高 6 * 7 * 2:StringBuffer和數組的區別? 8 * 二者都可以看出是一個容器,裝其他的數據。 9 * 但是呢,StringBuffer的數據最終是一個字符串數據。 10 * 而數組可以放置多種數據,但必須是同一種數據類型的。 11 * 12 * 3:形式參數問題 13 * String作為參數傳遞 14 * StringBuffer作為參數傳遞 15 * 16 * 形式參數: 17 * 基本類型:形式參數的改變不影響實際參數 18 * 引用類型:形式參數的改變直接影響實際參數 19 * 20 * 注意: 21 * String作為參數傳遞,效果和基本類型作為參數傳遞是一樣的。 22 */ 23 public class StringBufferDemo { 24 public static void main(String[] args) { 25 String s1 = "hello"; 26 String s2 = "world"; 27 System.out.println(s1 + "---" + s2);// hello---world 28 change(s1, s2); 29 System.out.println(s1 + "---" + s2);// hello---world 30 31 StringBuffer sb1 = new StringBuffer("hello"); 32 StringBuffer sb2 = new StringBuffer("world"); 33 System.out.println(sb1 + "---" + sb2);// hello---world 34 change(sb1, sb2); 35 System.out.println(sb1 + "---" + sb2);// hello---worldworld 36 37 } 38 39 public static void change(StringBuffer sb1, StringBuffer sb2) { 40 sb1 = sb2; 41 sb2.append(sb1); 42 } 43 44 public static void change(String s1, String s2) { 45 s1 = s2; 46 s2 = s1 + s2; 47 } 48 }

?

轉載于:https://www.cnblogs.com/ssshhh/p/11026398.html

總結

以上是生活随笔為你收集整理的十三、StringBuffer的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。