1.1 StringBuilder類概述
StringBuilder:是一個可變的字符串。字符串緩沖區類。
String和StringBuilder的區別:
String的內容是固定的
StringBuilder的內容是可變的
1.1.1 +=拼接字符串耗費內存原因:
每次拼接都會產生新的字符串對象,而利用StringBuilder來拼接字符串自始至終用的都是同一個StringBuilder容器
1.2 StringBuilder類的常用方法
A:構造方法:
StringBuilder()
B:成員方法:
public int capacity():返回當前容量 (理論值)
public int length():返回長度(已經存儲的字符個數)
public StringBuilder append(任意類型):添加數據,并返回自身對象
public StringBuilder reverse():反轉功能
1.2.1 案例代碼十三:
package com.itheima_01;
/** StringBuilder:是一個可變的字符串。字符串緩沖區類。** String和StringBuilder的區別:* String的內容是固定的。* StringBuilder的內容是可變的。** 構造方法:* StringBuilder()** 成員方法:* public int capacity():返回當前容量* public int length():返回長度(字符數)** 容量:理論值* 長度:實際值*/
public class StringBuilderDemo {
public static void main(String[] args) {
//創建對象
StringBuilder sb = new StringBuilder();
System.out.println("sb:"+sb);
System.out.println("sb.capacity():"+sb.capacity());
System.out.println("sb.length():"+sb.length());
}
}
1.2.2 案例代碼十四:
package com.itheima_02;
/** 添加功能* public StringBuilder append(任意類型):添加數據,并返回自身對象* 反轉功能* public StringBuilder reverse()*/
public class StringBuilderDemo {
public static void main(String[] args) {
//創建對象
StringBuilder sb = new StringBuilder();
//public StringBuilder append(任意類型)
//StringBuilder sb2 = sb.append("hello");
/*
System.out.println("sb:"+sb);
System.out.println("sb2:"+sb2);
System.out.println(sb == sb2); //true
*/
/*
sb.append("hello");
sb.append("world");
sb.append(true);
sb.append(100);
*/
//鏈式編程
sb.append("hello").append("world").append(true).append(100);
System.out.println("sb:"+sb);
//public StringBuilder reverse()
sb.reverse();
System.out.println("sb:"+sb);
}
}
1.3 StringBuilder案例1.3.1 案例一需求:
StringBuilder和String通過方法完成相互轉換
1.3.1.1 案例代碼十五:
package com.itheima_03;
/** StringBuilder和String的相互轉換** StringBuilder -- String* public String toString():通過toString()就可以實現把StringBuilder轉成String** String -- StringBuilder* StringBuilder(String str):通過構造方法就可以實現把String轉成StringBuilder*/
public class StringBuilderTest {
public static void main(String[] args) {
//StringBuilder -- String
/*
StringBuilder sb = new StringBuilder();
sb.append("hello").append("world");
String s = sb.toString();
System.out.println(s);
*/
//String -- StringBuilder
String s = "helloworld";
StringBuilder sb = new StringBuilder(s);
System.out.println(sb);
}
}
1.3.2 案例二需求:
利用StringBuilder把數組拼接成一個字符串
舉例:
int[] arr = {1,2,3};
結果:
[1, 2, 3]
1.3.2.1 案例代碼十六:
package com.itheima_03;
/** 把數組拼接成一個字符串* 舉例:* int[] arr = {1,2,3};* 結果:* [1, 2, 3]*/
public class StringBuilderTest2 {
public static void main(String[] args) {
//定義一個數組
int[] arr = {1,2,3};
//寫方法實現拼接
//調用方法
String s = arrayToString(arr);
//輸出結果
System.out.println("s:"+s);
}
/** 兩個明確:* 返回值類型:String* 參數列表:int[] arr*/
public static String arrayToString(int[] arr) {
StringBuilder sb = new StringBuilder();
//[1, 2, 3]
sb.append("[");
for(int x=0; x<arr.length; x++) {
if(x==arr.length-1) {
sb.append(arr[x]);
}else {
sb.append(arr[x]).append(", ");
}
}
sb.append("]");
String result = sb.toString();
return result;
}
}
1.3.3 案例三需求:
利用StringBuilder完成字符串反轉
1.3.3.1 案例代碼十七:
package com.itheima_03;import java.util.Scanner;/** 把字符串反轉** 分析:* A:鍵盤錄入一個字符串* B:寫方法實現反轉* String -- StringBuilder -- reverse() -- String* C:調用方法* D:輸出結果*/
public class StringBuilderTest3 {
public static void main(String[] args) {
//鍵盤錄入一個字符串
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字符串:");
String s = sc.nextLine();
//寫方法實現反轉
//調用方法
String result = myReverse(s);
//輸出結果
System.out.println("result:"+result);
}
/** 兩個明確:* 返回值類型:String* 參數列表:String*/
public static String myReverse(String s) {
//String -- StringBuilder -- reverse() -- String
StringBuilder sb = new StringBuilder(s);
sb.reverse();
String result = sb.toString();
return result;
}
}
1.3.4 案例四需求:
判斷一個字符串是否是對稱字符串
例如"abc"不是對稱字符串,"aba"、"abba"、"aaa"、"mnanm"是對稱字符串
1.3.4.1 案例代碼十八:
package com.itheima_03;
import java.util.Scanner;/** 判斷一個字符串是否是對稱字符串* 例如"abc"不是對稱字符串,"aba"、"abba"、"aaa"、"mnanm"是對稱字符串** 分析:* A:鍵盤錄入一個字符串* B:寫方法實現判斷一個字符串是否是對稱字符串* 把字符串反轉,和反轉前的字符串進行比較,如果內容相同,就說明是對稱字符串* C:調用方法* D:輸出結果*/
public class StringBuilderTest4 {
public static void main(String[] args) {
//鍵盤錄入一個字符串
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字符串:");
String s = sc.nextLine();
//寫方法實現判斷一個字符串是否是對稱字符串
//調用方法
boolean b = isSymmetry(s);
//輸出結果
System.out.println("b:"+b);
}
/** 兩個明確:* 返回值類型:boolean* 參數列表:String s*/
public static boolean isSymmetry(String s) {
//把字符串反轉,和反轉前的字符串進行比較,如果內容相同,就說明是對稱字符串
StringBuilder sb = new StringBuilder(s);
sb.reverse();
String result = sb.toString();
return result.equals(s);
}
}
轉載于:https://blog.51cto.com/13587708/2084585