String、StringBuilder的使用
阿新 • • 發佈:2020-07-15
1. String類概述
String 類代表字串,Java 程式中的所有字串文字(例如“abc”)都被實現為此類的例項。也就是說,Java 程式中所有的雙引號字串,都是 String 類的物件。String 類在 java.lang 包下,所以使用的時候不需要導包!
2. String類的特點
-
字串不可變,它們的值在建立後不能被更改
-
雖然 String 的值是不可變的,但是它們可以被共享
-
字串效果上相當於字元陣列( char[] ),但是底層原理是位元組陣列( byte[] )
3. String類的構造方法
-
常用的構造方法
方法名 說明 public String() 建立一個空白字串物件,不含有任何內容 public String(char[] chs) 根據字元陣列的內容,來建立字串物件 public String(byte[] bys) 根據位元組陣列的內容,來建立字串物件 String s = “abc”; 直接賦值的方式建立字串物件,內容就是abc -
示例程式碼
public class StringDemo01 {
public static void main(String[] args) {
//public String():建立一個空白字串物件,不含有任何內容
String s1 = new String();
//public String(char[] chs):根據字元陣列的內容,來建立字串物件
char[] chs = {'a', 'b', 'c'};
String s2 = new String(chs);
System.out.println("s2:" + s2);
//public String(byte[] bys):根據位元組陣列的內容,來建立字串物件
byte[] bys = {97, 98, 99};
String s3 = new String(bys);
System.out.println("s3:" + s3);
//String s = “abc”; 直接賦值的方式建立字串物件,內容就是abc
String s4 = "abc";
System.out.println("s4:" + s4);
}
}
4. 建立字串物件兩種方式的區別
-
通過構造方法建立
通過 new 建立的字串物件,每一次 new 都會申請一個記憶體空間,雖然內容相同,但是地址值不同
-
直接賦值方式建立
以“”方式給出的字串,只要字元序列相同(順序和大小寫),無論在程式程式碼中出現幾次,JVM 都只會建立一個 String 物件,並在字串池中維護
5. 字串的比較
==號的作用
-
比較基本資料型別:比較的是具體的值
-
比較引用資料型別:比較的是物件地址值
equals方法的作用
-
方法介紹
public boolean equals(String s) 比較兩個字串內容是否相同、區分大小寫
-
示例程式碼
public class StringDemo02 {
public static void main(String[] args) {
//構造方法的方式得到物件
char[] chs = {'a', 'b', 'c'};
String s1 = new String(chs);
String s2 = new String(chs);
//直接賦值的方式得到物件
String s3 = "abc";
String s4 = "abc";
//比較字串物件地址是否相同
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s3 == s4);
System.out.println("--------");
//比較字串內容是否相同
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4));
}
}
6.
StringBuilder 是一個可變的字串類,我們可以把它看成是一個容器,這裡的可變指的是 StringBuilder 物件中的內容是可變的
-
String類:內容是不可變的
-
StringBuilder類:內容是可變的
8. StringBuilder類的構造方法
-
常用的構造方法
方法名 說明 public StringBuilder() 建立一個空白可變字串物件,不含有任何內容 public StringBuilder(String str) 根據字串的內容,來建立可變字串物件 -
示例程式碼
public class StringBuilderDemo01 {
public static void main(String[] args) {
//public StringBuilder():建立一個空白可變字串物件,不含有任何內容
StringBuilder sb = new StringBuilder();
System.out.println("sb:" + sb);
System.out.println("sb.length():" + sb.length());
//public StringBuilder(String str):根據字串的內容,來建立可變字串物件
StringBuilder sb2 = new StringBuilder("hello");
System.out.println("sb2:" + sb2);
System.out.println("sb2.length():" + sb2.length());
}
}
9. StringBuilder類新增和反轉方法
-
新增和反轉方法
方法名 說明 public StringBuilder append(任意型別) 新增資料,並返回物件本身 public StringBuilder reverse() 返回相反的字元序列 -
示例程式碼
public class StringBuilderDemo01 {
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);
// sb.append("hello");
// sb.append("world");
// sb.append("java");
// sb.append(100);
//鏈式程式設計
sb.append("hello").append("world").append("java").append(100);
System.out.println("sb:" + sb);
//public StringBuilder reverse():返回相反的字元序列
sb.reverse();
System.out.println("sb:" + sb);
}
}
10. StringBuilder和String相互轉換
-
StringBuilder轉換為String
public String toString():通過 toString() 就可以實現把 StringBuilder 轉換為 String
-
String轉換為StringBuilder
public StringBuilder(String s):通過構造方法就可以實現把 String 轉換為 StringBuilder
-
示例程式碼
public class StringBuilderDemo02 {
public static void main(String[] args) {
/*
//StringBuilder 轉換為 String
StringBuilder sb = new StringBuilder();
sb.append("hello");
//String s = sb; //這個是錯誤的做法
//public String toString():通過 toString() 就可以實現把 StringBuilder 轉換為 String
String s = sb.toString();
System.out.println(s);
*/
//String 轉換為 StringBuilder
String s = "hello";
//StringBuilder sb = s; //這個是錯誤的做法
//public StringBuilder(String s):通過構造方法就可以實現把 String 轉換為 StringBuilder
StringBuilder sb = new StringBuilder(s);
System.out.println(sb);
}
}
11. 幫助文件檢視StringBuilder常用方法
方法名 | 說明 |
---|---|
public StringBuilder append (任意型別) | 新增資料,並返回物件本身 |
public StringBuilder reverse() | 返回相反的字元序列 |
返回長度,實際儲存值 | |
public String toString() | 通過toString()就可以實現把StringBuilder轉換為String |