① 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方法将其转换为字符串。