① java怎麼把2個字元串拼接在一起
String類的方法:
①利用運算符"+"
②public String concat(String str)進行字元串的拼接操作
StringBuffer的方法:
①public StringBuffer append(String str)將str添加到當前字元串緩沖區的字元序列的末尾
②public StringBuffer insert(int offset,String str)在當前字元串緩沖區的字元序列的下標
索引offset插入str。如果offset等於舊長度,則str添加在字元串緩沖區的尾部
如圖所示
② Java字元串連接
1. String類是final修飾的不可變類,+號運算,會創建一些對象進行操作。
StringBuffer與StringBuilder,是可改變的對象,每當使用這兩個對象對字元串做操作時, 實際上是在一個對象上操作的,所以速度快 .
2. StringBuilder:線程非安全的
StringBuffer:線程安全的
3. 大量字元串數據時的性能 StringBuilder > StringBuffer >String
使用情況的說明:
1. String + : 適合比較少量的字元串數據拼接
(比如System.out.println("姓名:"+name+"年齡:"+age))
2. StringBuilder : 大量字元串數據, 單線程下使用
(比如,一個main線程里進行,無其他線程)
3.StringBuffer : 大量字元串數據, 多線程下使用
(比如,多個Thread去操作)
③ java 中concat連接兩個字元串,其中一個設為null,那返回的值就是null嗎
不是。
或b任一為null,均會拋出空指針異常;
public String concat(String str) {
int otherLen = str.length();
if (otherLen == 0) {
return this;
}
int len = value.length;
char buf[] = Arrays.Of(value, len + otherLen);
str.getChars(buf, len);
return new String(buf, true);
}
④ java兩個字元串使用+拼接字元串,在內存中是怎樣實現的
你好:c存放內存,str存放內存,之後加好連接後指向一個新的內存存放reslut(str結果),new的話都會在堆中創建,在棧(Stack)中如果數值存在的話,就不會創建了。以下就是說明的+的實現過程,他實際上是new的,所以在堆中會創建,即佔用新的內存,如果str不等於result的話,還會在棧(Stack)中創建。
str += "c";等效於:str = new StringBuffer(str).append("c").toString();
雖然編譯器對字元串加號做了優化,它會用StringBuffer的append方法進行追加。再是通過toString方法轉換成String字元串的。
它與純粹的append方法是不同的:
一是每次都要創建一個StringBuilder對象;
二是每次執行完畢都要調用toString方法將其轉換為字元串。