java练习-String类、StringBuilder类、StringBuffer类10
目錄
- String類
- 1 String類的概述
- 2 String的特點
- 3 String面試題看程序寫結果
- 4 String面試題看程序寫結果2
- 5 String類的判斷功能
- 6 模擬用戶登錄練習
- 7 String類的獲取功能
- 8 字符串的遍歷
- 9 統計大寫,小寫及數字字符的個數練習
- 10 String類的轉換功能
- 11 把字符串的首字母轉大寫其他轉小寫練習
- 12 String類的其他功能:
- 13 把int數組拼接字符串的案例
- 14 字符串反轉的練習
- 15 在大串中查找小串出現的次數案例
- StringBuilder類
- 1 String類拼接問題
- 2 StringBuilder概述
- 3 構造方法
- 4 常用方法
- append方法
- toString方法
- StringBuffer
- 1 StringBuffer的概述
- 2 StringBuffer的添加功能
- 3 StringBuffer的刪除功能
- 4 StringBuffer的替換功能
- 5 StringBuffer的反轉功能
- 6 StringBuffer的截取功能
- 7 StringBuffer和String的相互轉換
- 8 判斷一個字符串是否對稱
- 9 String,StringBuffer,StringBuilder的區別
String類
1 String類的概述
字符串:就是由多個字符組成的一串數據。也可以看成是一個字符數組。
通過查看API,我們可以知道
A:字符串字面值"abc"也可以看成是一個字符串對象。
B:字符串是常量,一旦被賦值,就不能被改變。
構造方法:
- public String():空構造
- public String(byte[] bytes):把字節數組轉成字符串
- public String(byte[] bytes,int index,int length):把字節數組的一部分轉成字符串
- public String(char[] value):把字符數組轉成字符串
- public String(char[] value,int index,int count):把字符數組的一部分轉成字符串
- public String(String original):把字符串常量值轉成字符串
字符串的方法:
public int length():返回此字符串的長度。
例子:
public class StringDemo {public static void main(String[] args) {// public String():空構造String s1 = new String();System.out.println("s1:" + s1);System.out.println("s1.length():" + s1.length());System.out.println("--------------------------");// public String(byte[] bytes):把字節數組轉成字符串byte[] bys = { 97, 98, 99, 100, 101 };//byte范圍-128-127String s2 = new String(bys);System.out.println("s2:" + s2);System.out.println("s2.length():" + s2.length());System.out.println("--------------------------");// public String(byte[] bytes,int index,int length):把字節數組的一部分轉成字符串// 我想得到字符串"bcd"String s3 = new String(bys, 1, 3);System.out.println("s3:" + s3);System.out.println("s3.length():" + s3.length());System.out.println("--------------------------");// public String(char[] value):把字符數組轉成字符串char[] chs = { 'a', 'b', 'c', 'd', 'e', '愛', '林', '親' };String s4 = new String(chs);System.out.println("s4:" + s4);System.out.println("s4.length():" + s4.length());System.out.println("--------------------------");// public String(char[] value,int index,int count):把字符數組的一部分轉成字符串String s5 = new String(chs, 2, 4);System.out.println("s5:" + s5);System.out.println("s5.length():" + s5.length());System.out.println("--------------------------");//public String(String original):把字符串常量值轉成字符串String s6 = new String("abcde");System.out.println("s6:" + s6);System.out.println("s6.length():" + s6.length());System.out.println("--------------------------");//字符串字面值"abc"也可以看成是一個字符串對象。String s7 = "abcde";System.out.println("s7:"+s7);System.out.println("s7.length():"+s7.length());} }2 String的特點
1.一旦被賦值就不能改變,新的值開辟新的空間
2. String s = new String(“hello”)和String s = “hello”;的區別?
有。前者會創建2個對象,后者創建1個對象。
3. ==:比較引用類型比較的是地址值是否相同
equals:比較引用類型默認也是比較地址值是否相同,而String類重寫了equals()方法,比較的是內容是否相同。
3 String面試題看程序寫結果
public class StringDemo3 {public static void main(String[] args) {String s1 = new String("hello");String s2 = new String("hello");System.out.println(s1 == s2);// falseSystem.out.println(s1.equals(s2));// trueString s3 = new String("hello");String s4 = "hello";System.out.println(s3 == s4);// falseSystem.out.println(s3.equals(s4));// trueString s5 = "hello";String s6 = "hello";System.out.println(s5 == s6);// trueSystem.out.println(s5.equals(s6));// true} }4 String面試題看程序寫結果2
- 看程序寫結果
- 字符串如果是變量相加,先開空間,在拼接。
- 字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否則,就創建。
5 String類的判斷功能
- boolean equals(Object obj):比較字符串的內容是否相同,區分大小寫
- boolean equalsIgnoreCase(String str):比較字符串的內容是否相同,忽略大小寫
- boolean contains(String str):判斷大字符串中是否包含小字符串
- boolean startsWith(String str):判斷字符串是否以某個指定的字符串開頭
- boolean endsWith(String str):判斷字符串是否以某個指定的字符串結尾
- boolean isEmpty():判斷字符串是否為空。
注意:
字符串內容為空和字符串對象為空。
String s = “”;
String s = null;
6 模擬用戶登錄練習
模擬登錄,給三次機會,并提示還有幾次。
分析:
A:定義用戶名和密碼。已存在的。
B:鍵盤錄入用戶名和密碼。
C:比較用戶名和密碼。
如果都相同,則登錄成功
如果有一個不同,則登錄失敗
D:給三次機會,用循環改進,最好用for循環。
手寫:
public class Login {public static void main(String[] args) {String userName = "Test";String passWord = "Pass";String inputName;String inputPassword;Scanner sc = new Scanner(System.in);for(int i = 3; i > 0; i--){System.out.println("還有"+i+"次機會");System.out.println("請輸入用戶名:");inputName = sc.nextLine();System.out.println("請輸入密碼:");inputPassword = sc.nextLine();if (userName.equals(inputName) && passWord.equals(inputPassword)){System.out.println("登錄成功");break;}else{System.out.println("登錄失敗");}}} }答案:
public class StringTest {public static void main(String[] args) {// 定義用戶名和密碼。已存在的。String username = "admin";String password = "admin";// 給三次機會,用循環改進,最好用for循環。for (int x = 0; x < 3; x++) {// x=0,1,2// 鍵盤錄入用戶名和密碼。Scanner sc = new Scanner(System.in);System.out.println("請輸入用戶名:");String name = sc.nextLine();System.out.println("請輸入密碼:");String pwd = sc.nextLine();// 比較用戶名和密碼。if (name.equals(username) && pwd.equals(password)) {// 如果都相同,則登錄成功System.out.println("登錄成功");break;} else {// 如果有一個不同,則登錄失敗// 2,1,0// 如果是第0次,應該換一種提示if ((2 - x) == 0) {System.out.println("帳號被鎖定,請與班長聯系");} else {System.out.println("登錄失敗,你還有" + (2 - x) + "次機會");}}}} }7 String類的獲取功能
- int length():獲取字符串的長度。
- char charAt(int index):獲取指定索引位置的字符
- int indexOf(int ch):返回指定字符在此字符串中第一次出現處的索引。
- int indexOf(String str):返回指定字符串在此字符串中第一次出現處的索引。
- int indexOf(int ch,int fromIndex):返回指定字符在此字符串中從指定位置后第一次出現處的索引。
- int indexOf(String str,int fromIndex):返回指定字符串在此字符串中從指定位置后第一次出現處的索引。
- String substring(int start):從指定位置開始截取字符串,默認到末尾。
- String substring(int start,int end):從指定位置開始到指定位置結束截取字符串。
8 字符串的遍歷
for (int x = 0; x < s.length(); x++) {// char ch = s.charAt(x);// System.out.println(ch);// 僅僅是輸出,我就直接輸出了System.out.println(s.charAt(x));}9 統計大寫,小寫及數字字符的個數練習
-
需求:統計一個字符串中大寫字母字符,小寫字母字符,數字字符出現的次數。(不考慮其他字符)
-
舉例:
“Hello123World” -
結果:
大寫字符:2個
小寫字符:8個
數字字符:3個 -
分析:
前提:字符串要存在
A:定義三個統計變量
bigCount=0
smallCount=0
numberCount=0
B:遍歷字符串,得到每一個字符。
length()和charAt()結合
C:判斷該字符到底是屬于那種類型的
大:bigCount++
小:smallCount++
數字:numberCount++
這道題目的難點就是如何判斷某個字符是大的,還是小的,還是數字的。
ASCII碼表:
0 48
A 65
a 97
雖然,我們按照數字的這種比較是可以的,但是想多了,有比這還簡單的
char ch = s.charAt(x);
if(ch>=‘0’ && ch<=‘9’) numberCount++
if(ch>=‘a’ && ch<=‘z’) smallCount++
if(ch>=‘A’ && ch<=‘Z’) bigCount++
D:輸出結果。
手寫練習:
package cn.plsite.apiTest;public class StringTest2 {public static void main(String[] args) {String str = "Hello123WorldzZ9";int bigCount = 0;int smallCount = 0;int numCount = 0;for(int i = 0; i < str.length(); i++){if(str.charAt(i) >= 'A' && str.charAt(i) <= 'Z'){bigCount++;}if(str.charAt(i) >= 'a' && str.charAt(i) <= 'z'){smallCount++;}if(str.charAt(i) >= '0' && str.charAt(i) <= '9'){numCount++;}}System.out.println("大寫字母有"+bigCount+"個");System.out.println("小寫字母有"+smallCount+"個");System.out.println("數字有"+numCount+"個");} }10 String類的轉換功能
String的轉換功能:
- byte[] getBytes():把字符串轉換為字節數組。
- char[] toCharArray():把字符串轉換為字符數組。
- static String valueOf(char[] chs):把字符數組轉成字符串。
- static String valueOf(int i):把int類型的數據轉成字符串。
- 注意:String類的valueOf方法可以把任意類型的數據轉成字符串。
- String toLowerCase():把字符串轉成小寫。
- String toUpperCase():把字符串轉成大寫。
- String concat(String str):把字符串拼接。
運行結果:
74 97 118 97 83 69 ---------------- J a v a S E ---------------- JavaSE ---------------- 100 ---------------- toLowerCase:javase s:JavaSE toUpperCase:JAVASE ---------------- s3:helloworld s4:helloworld11 把字符串的首字母轉大寫其他轉小寫練習
需求:把一個字符串的首字母轉成大寫,其余為小寫。(只考慮英文大小寫字母字符)
舉例:
helloWORLD
結果:
Helloworld
分析:
A:先獲取第一個字符
B:獲取除了第一個字符以外的字符
C:把A轉成大寫
D:把B轉成小寫
E:C拼接D
練習:
public class StringTest4 {public static void main(String[] args) {String s1 = "helloWOrLd";String s2 = s1.substring(0,1);String s3 = s1.substring(1,s1.length());String s4 = s2.toUpperCase();String s5 = s3.toLowerCase();String s6 = s4.concat(s5);System.out.println(s6);} }標準答案:
public class StringTest {public static void main(String[] args) {// 定義一個字符串String s = "helloWORLD";// 先獲取第一個字符String s1 = s.substring(0, 1);// 獲取除了第一個字符以外的字符String s2 = s.substring(1);// 把A轉成大寫String s3 = s1.toUpperCase();// 把B轉成小寫String s4 = s2.toLowerCase();// C拼接DString s5 = s3.concat(s4);System.out.println(s5);// 優化后的代碼// 鏈式編程String result = s.substring(0, 1).toUpperCase().concat(s.substring(1).toLowerCase());System.out.println(result);} }注意:substring截取是左閉右開形式的
12 String類的其他功能:
替換功能:
- String replace(char old,char new)
- String replace(String old,String new)
去除字符串首尾兩處的空格
- String trim()
按字典順序比較兩個字符串:str和str2進行相比,當str比str2大時,輸出一個正整數;當str比str2小的時候輸出一個負整數;str和str2相等時輸出0。
*int compareTo(String str)
*int compareToIgnoreCase(String str)
運行結果:
s1:helloworld s2:hekkoworkd s3:hellak47rld --------------- s4: hello world --- s5:hello world--- 0 7 -1613 把int數組拼接字符串的案例
- 需求:把數組中的數據按照指定個格式拼接成一個字符串
- 舉例:
int[] arr = {1,2,3}; - 輸出結果:
“[1, 2, 3]” - 分析:
A:定義一個字符串對象,只不過內容為空
B:先把字符串拼接一個"["
C:遍歷int數組,得到每一個元素
D:先判斷該元素是否為最后一個
是:就直接拼接元素和"]"
不是:就拼接元素和逗號以及空格
E:輸出拼接后的字符串
改進版:
public class StringTest2 {public static void main(String[] args) {// 前提是數組已經存在int[] arr = { 1, 2, 3 };// 寫一個功能,實現結果String result = arrayToString(arr);System.out.println("最終結果是:" + result);}/** 兩個明確:返回值類型:String 參數列表:int[] arr*/public static String arrayToString(int[] arr) {// 定義一個字符串String s = "";// 先把字符串拼接一個"["s += "[";// 遍歷int數組,得到每一個元素for (int x = 0; x < arr.length; x++) {// 先判斷該元素是否為最后一個if (x == arr.length - 1) {// 就直接拼接元素和"]"s += arr[x];s += "]";} else {// 就拼接元素和逗號以及空格s += arr[x];s += ", ";}}return s;} }14 字符串反轉的練習
-
字符串反轉
-
舉例:鍵盤錄入”abc”
-
輸出結果:”cba”
-
分析:
A:鍵盤錄入一個字符串
B:定義一個新字符串
C:倒著遍歷字符串,得到每一個字符
a:length()和charAt()結合
b:把字符串轉成字符數組
D:用新字符串把每一個字符拼接起來
E:輸出新串
自己練習:
答案:
public class StringTest3 {public static void main(String[] args) {// 鍵盤錄入一個字符串Scanner sc = new Scanner(System.in);System.out.println("請輸入一個字符串:");String line = sc.nextLine();/*// 定義一個新字符串String result = "";// 把字符串轉成字符數組char[] chs = line.toCharArray();// 倒著遍歷字符串,得到每一個字符for (int x = chs.length - 1; x >= 0; x--) {// 用新字符串把每一個字符拼接起來result += chs[x];}// 輸出新串System.out.println("反轉后的結果是:" + result);*/// 改進為功能實現String s = myReverse(line);System.out.println("實現功能后的結果是:" + s);}/** 兩個明確:返回值類型:String 參數列表:String*/public static String myReverse(String s) {// 定義一個新字符串String result = "";// 把字符串轉成字符數組char[] chs = s.toCharArray();// 倒著遍歷字符串,得到每一個字符for (int x = chs.length - 1; x >= 0; x--) {// 用新字符串把每一個字符拼接起來result += chs[x];}return result;} }15 在大串中查找小串出現的次數案例
-
統計大串中小串出現的次數
-
舉例:
- 在字符串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"
-
結果:
- java出現了5次
-
分析:
A:定義一個統計變量,初始化值是0B:先在大串中查找一次小串第一次出現的位置a:索引是-1,說明不存在了,就返回統計變量b:索引不是-1,說明存在,統計變量++C:把剛才的索引+小串的長度作為開始位置截取上一次的大串,返回一個新的字符串,并把該字符串的值重新賦值給大串D:回到B
前提:是已經知道了大串和小串。
答案:
public class StringTest4 {public static void main(String[] args) {// 定義大串String maxString = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";// 定義小串String minString = "java";// 寫功能實現int count = getCount(maxString, minString);System.out.println("Java在大串中出現了:" + count + "次");}/** 兩個明確:返回值類型:int 參數列表:兩個字符串*/public static int getCount(String maxString, String minString) {// 定義一個統計變量,初始化值是0int count = 0;// 先在大串中查找一次小串第一次出現的位置int index = maxString.indexOf(minString);// 索引不是-1,說明存在,統計變量++while (index != -1) {count++;// 把剛才的索引+小串的長度作為開始位置截取上一次的大串,返回一個新的字符串,并把該字符串的值重新賦值給大串int startIndex = index + minString.length();maxString = maxString.substring(startIndex);// 繼續查index = maxString.indexOf(minString);}return count;} }優化:
public class StringTest5 {public static void main(String[] args) {// 定義大串String maxString = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";// 定義小串String minString = "java";// 寫功能實現int count = getCount(maxString, minString);System.out.println("Java在大串中出現了:" + count + "次");}/** 兩個明確:返回值類型:int 參數列表:兩個字符串*/public static int getCount(String maxString, String minString) {// 定義一個統計變量,初始化值是0int count = 0;/*// 先在大串中查找一次小串第一次出現的位置int index = maxString.indexOf(minString);// 索引不是-1,說明存在,統計變量++while (index != -1) {count++;// 把剛才的索引+小串的長度作為開始位置截取上一次的大串,返回一個新的字符串,并把該字符串的值重新賦值給大串// int startIndex = index + minString.length();// maxString = maxString.substring(startIndex);maxString = maxString.substring(index + minString.length());// 繼續查index = maxString.indexOf(minString);}*/int index;//先查,賦值,判斷while((index=maxString.indexOf(minString))!=-1){count++;maxString = maxString.substring(index + minString.length());}return count;} }StringBuilder類
1 String類拼接問題
由于String類的對象內容不可改變,所以每當進行字符串拼接時,總是會在內存中創建一個新的對象。例如:
public class StringDemo {public static void main(String[] args) {String s = "Hello";s += "World";System.out.println(s);} }在API中對String類有這樣的描述:字符串是常量,它們的值在創建后不能被更改。
根據這句話分析我們的代碼,其實總共產生了三個字符串,即"Hello"、"World"和"HelloWorld"。引用變量s首先指向Hello對象,最終指向拼接出來的新字符串對象,即HelloWord 。
由此可知,如果對字符串進行拼接操作,每次拼接,都會構建一個新的String對象,既耗時,又浪費空間。為了解決這一問題,可以使用java.lang.StringBuilder類。
2 StringBuilder概述
查閱java.lang.StringBuilder的API,StringBuilder又稱為可變字符序列,它是一個類似于 String 的字符串緩沖區,通過某些方法調用可以改變該序列的長度和內容。
原來StringBuilder是個字符串的緩沖區,即它是一個容器,容器中可以裝很多字符串。并且能夠對其中的字符串進行各種操作。
它的內部擁有一個數組用來存放字符串內容,進行字符串拼接時,直接在數組中加入新內容。StringBuilder會自動維護數組的擴容。原理如下圖所示:(默認16字符空間,超過自動擴充)
3 構造方法
根據StringBuilder的API文檔,常用構造方法有2個:
- public StringBuilder():構造一個空的StringBuilder容器。
- public StringBuilder(String str):構造一個StringBuilder容器,并將字符串添加進去。
4 常用方法
StringBuilder常用的方法有2個:
- public StringBuilder append(...):添加任意類型數據的字符串形式,并返回當前對象自身。
- public String toString():將當前StringBuilder對象轉換為String對象。
append方法
append方法具有多種重載形式,可以接收任意類型的參數。任何數據作為參數都會將對應的字符串內容添加到StringBuilder中。例如:
public class Demo02StringBuilder {public static void main(String[] args) {//創建對象StringBuilder builder = new StringBuilder();//public StringBuilder append(任意類型)StringBuilder builder2 = builder.append("hello");//對比一下System.out.println("builder:"+builder);System.out.println("builder2:"+builder2);System.out.println(builder == builder2); //true// 可以添加 任何類型builder.append("hello");builder.append("world");builder.append(true);builder.append(100);// 在我們開發中,會遇到調用一個方法后,返回一個對象的情況。然后使用返回的對象繼續調用方法。// 這種時候,我們就可以把代碼現在一起,如append方法一樣,代碼如下//鏈式編程builder.append("hello").append("world").append(true).append(100);System.out.println("builder:"+builder);} }備注:StringBuilder已經覆蓋重寫了Object當中的toString方法。
toString方法
通過toString方法,StringBuilder對象將會轉換為不可變的String對象。如:
public class Demo16StringBuilder {public static void main(String[] args) {// 鏈式創建StringBuilder sb = new StringBuilder("Hello").append("World").append("Java");// 調用方法String str = sb.toString();System.out.println(str); // HelloWorldJava} }StringBuffer
1 StringBuffer的概述
線程安全的可變字符串。StringBuffer的構造方法:
- public StringBuffer():無參構造方法
- public StringBuffer(int capacity):指定容量的字符串緩沖區對象
- public StringBuffer(String str):指定字符串內容的字符串緩沖區對象
StringBuffer的方法:
- public int capacity():返回當前容量。 理論值
- public int length():返回長度(字符數)。實際值
示例:
package cn.plsite.apiTest;public class StringBufferTest {public static void main(String[] args) {// public StringBuffer():無參構造方法StringBuffer sb = new StringBuffer();System.out.println("sb:" + sb);System.out.println("sb.capacity():" + sb.capacity());System.out.println("sb.length():" + sb.length());System.out.println("--------------------------");// public StringBuffer(int capacity):指定容量的字符串緩沖區對象StringBuffer sb2 = new StringBuffer(50);System.out.println("sb2:" + sb2);System.out.println("sb2.capacity():" + sb2.capacity());System.out.println("sb2.length():" + sb2.length());System.out.println("--------------------------");// public StringBuffer(String str):指定字符串內容的字符串緩沖區對象StringBuffer sb3 = new StringBuffer("hello");System.out.println("sb3:" + sb3);System.out.println("sb3.capacity():" + sb3.capacity());System.out.println("sb3.length():" + sb3.length());} }運行結果:
sb: sb.capacity():16 sb.length():0 -------------------------- sb2: sb2.capacity():50 sb2.length():0 -------------------------- sb3:hello sb3.capacity():21 sb3.length():52 StringBuffer的添加功能
-
public StringBuffer append(String str):可以把任意類型數據添加到字符串緩沖區里面,并返回字符串緩沖區本身
-
public StringBuffer insert(int offset,String str):在指定位置把任意類型的數據插入到字符串緩沖區里面,并返回字符串緩沖區本身
運行結果:
sb:hellotrue1234.56 sb:helloworldtrue1234.563 StringBuffer的刪除功能
- public StringBuffer deleteCharAt(int index):刪除指定位置的字符,并返回本身
- public StringBuffer delete(int start,int end):刪除從指定位置開始指定位置結束的內容,并返回本身
4 StringBuffer的替換功能
- public StringBuffer replace(int start,int end,String str):從start開始到end用str替換
5 StringBuffer的反轉功能
- public StringBuffer reverse():StringBuffer的反轉功能
6 StringBuffer的截取功能
StringBuffer的截取功能:注意返回值類型不再是StringBuffer本身了
- public String substring(int start)
- public String substring(int start,int end)
結果:
sb:helloworldjava s:worldjava sb:helloworldjava ss:world sb:helloworldjava7 StringBuffer和String的相互轉換
String – StringBuffer
注意:不能把字符串的值直接賦值給StringBuffer
- 方式1:通過構造方法
StringBuffer sb = new StringBuffer(s); - 方式2:通過append()方法
StringBuffer sb2 = new StringBuffer();
sb2.append(s);
StringBuffer – String
- 方式1:通過構造方法
String str = new String(buffer); - 方式2:通過toString()方法
String str2 = buffer.toString();
8 判斷一個字符串是否對稱
-
判斷一個字符串是否是對稱字符串
-
例如"abc"不是對稱字符串,“aba”、“abba”、“aaa”、"mnanm"是對稱字符串
-
分析:
判斷一個字符串是否是對稱的字符串,我只需要把
第一個和最后一個比較
第二個和倒數第二個比較
…
比較的次數是長度除以2。
9 String,StringBuffer,StringBuilder的區別
- A:String是內容不可變的,而StringBuffer,StringBuilder都是內容可變的。String類是不可變類,即一旦一個String對象被創建以后,包含在這個對象中的字符序列是不可改變的,直至這個對象被銷毀。StringBuffer對象則代表一個字符序列可變的字符串,當一個StringBuffer被創建以后,通過StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改變這個字符串對象的字符序列。一旦通過StringBuffer生成了最終想要的字符串,就可以調用它的toString()方法將其轉換為一個String對象。
- B:StringBuffer是同步的,數據安全,效率低,StringBuffer類中的方法都添加了synchronized關鍵字,也就是給這個方法添加了一個鎖,用來保證線程安全;StringBuilder是不同步的,數據不安全,效率高
Java9改進了字符串(包括String、StringBuffer、StringBuilder)的實現。在Java9以前字符串采用char[]數組來保存字符,因此字符串的每個字符占2字節;而Java9的字符串采用byte[]數組再加一個encoding-flag字段來保存字符,因此字符串的每個字符只占1字節。所以Java9的字符串更加節省空間,字符串的功能方法也沒有受到影響.
總結
以上是生活随笔為你收集整理的java练习-String类、StringBuilder类、StringBuffer类10的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sparkGraphX 图操作:preg
- 下一篇: GitHub标星90K,这份持续霸榜的L