補充注意:
1、StringBuilder
?的?append
?方法可以接收整數類型的參數,并將其自動轉換為字符串后添加到?StringBuilder
?中
2、該方法適用于所有基本數據類型(如?long
、double
?等)和對象(通過調用其?toString()
?方法)
?
一、String 類基礎
創建方式
String a = new String();
?→ 創建空字符串對象(等價于""
)String b = new String("neirong");
?→ 基于已有字符串創建對象(不推薦,直接用String b = "neirong";
更高效)字符串不可變性
- String 對象創建后內容不可變,所有操作(如
concat
)都會返回新字符串
二、String 常用方法
字符操作
java
char c = b.charAt(4); // 返回索引4對應的字符'r'(索引從0開始) char[] ch = str.toCharArray(); // 轉換為字符數組
比較方法
java
int t = str.compareTo("code"); // 按字典序比較:相等返回0 boolean boo = str.equals("code"); // 內容比較:true
拼接與截取
java
String str1 = str.concat("sss"); // 等價于 str + "sss" → "codesss" String sub = str.substring(2, 4); // 左閉右開區間 → "de"
查找定位
java
int ind = str.indexOf("de"); // 返回子串首次出現位置:2
狀態判斷
java
int len = str.length(); // 返回字符串長度:4 boolean flag = str.isEmpty(); // 判斷是否為空:false
三、StringBuilder?類?
核心特點
- 可變字符序列,適合頻繁修改場景(如循環拼接)
- 非線程安全,性能優于
StringBuffer
常用操作
java
StringBuilder stro = new StringBuilder(); stro.append("absc").append("efg"); // 鏈式調用 → "abscdefg" stro.reverse(); // 反轉內容 → "gfedcba"
與 String 的轉換
java
String s = stro.toString(); // 轉換為String對象
四、關鍵對比
特性 String StringBuilder 可變性 不可變 可變 線程安全性 安全(不可變) 不安全 性能(循環拼接) 低(每次生成新對象) 高(直接修改內部數組) 適用場景 少量操作、常量定義 大量動態拼接
五、最佳實踐
優先使用字面量創建字符串
java
String s = "hello"; // 比new String("hello")更高效
循環拼接用 StringBuilder
java
StringBuilder sb = new StringBuilder(); for (int i = 0; i < 1000; i++) {sb.append(i); // 避免使用String的+操作符 }
謹慎使用
substring
- 在 Java 8 及以前,
substring
可能導致內存泄漏(保留原字符串引用)- Java 9 + 已修復此問題(改用復制機制)
六、常見誤區
compareTo
與equals
的區別
compareTo
返回比較結果的數值(-1/0/1)equals
返回布爾值
isEmpty
與null
的區別java
String s = ""; s.isEmpty(); // true s == null; // false
StringBuilder
的append
返回值java
StringBuilder sb = new StringBuilder(); sb.append("a").append("b"); // 返回當前對象,無需接收返回值
?我的代碼:
package day714;public class string {public static void main(String[] args) {String a=new String();String b=new String("neirong");System.out.println(a);System.out.println(b);char c=b.charAt(4);System.out.println(c);String str="code";int t=str.compareTo("code");System.out.println(t);String str1=str.concat("sss");System.out.println(str1);boolean boo=str.equals("code");System.out.println(boo);int ind=str.indexOf("de");System.out.println(ind);int len=str.length();System.out.println(len);String sub=str.substring(2,4);System.out.println(sub);char[] ch=str.toCharArray();boolean flag=str.isEmpty();System.out.println(flag);StringBuilder stro=new StringBuilder();stro.append("absc");System.out.println(stro);stro.append("efg");System.out.println(stro);StringBuilder stroo=new StringBuilder();stroo=stro.reverse();System.out.println(stroo);}
}
/*********************String 常用方法********************1、char charAt(int index);返回指定索引字符(從0)*2、int compareTo(Object o);字符串與o比較,大返回1,等0,小-1*3、String concat(String str);指定字符串鏈接到指定字符串的結尾*4、boolean equals(String string1);將此字符串與指定的字符串比較*5、int indexOf(String str)返回a穿再b串中第一次出現的位置*6、int length();返回此字符串的長度*7、String substring(int beginIndex,int endIndex);左閉右開*8、char[] toCharArray();//字符串轉換成字符數組*9、boolean isEmpty();//判斷字符串是否為空******************************************************/
/**************StringBuilder常用方法************************ StringBuilder str=new StringBuilder();* 這里要特別記清楚append()和reverse()是StringBuilder 類** 1、void append(Object obj) //尾部加上字符串obj* 2、int indexOf(String str) //同上* 3、StringBuilder reverse() //反轉* 4、boolean isEmpty() //判空同上* 5、int charAt(int index) * ********************************************************/