String类和StringBuffer的比较

String类代表字符串类,字符串是常量,它们的值在创建之后不能更改。如果你修改了String的值,就相当于创建了一个新的对象,为不可变类。

StringBuffer类指的是String的字符串缓冲区,通过调用某些方法可以改变该序列的长度和内容,为可变类,所以说StringBuffer类对象是可修改修改对象。

String的特点:
1.为不可变对象,一旦被创建就不能修改它的值;

2.String类是final类型不可被继承;

StringBuffer的特点:

1.它是一个可变的对象,当你需要修改其内容的时候,可以通过调用其方法进行修改。

2.不能通过赋值符号对他进行赋值.​​​​​​。

3.字符串连接操作中StringBuffer的效率要比String高​​​​​​。

下面我来演示StringBuffer类的如何修改其内容的例子:

    String s = "abc";
	StringBuffer sb = new StringBuffer(s);//创建一个StringBuffer 对象,初始值为“abc”
	System.out.println(sb);
	sb.append("efg");//在末尾添加指定的字符串
	System.out.println(sb);
	String str = sb.toString();//将字符串缓冲对象转换为字符串对象
	System.out.println(str);//返回此序列中数据的字符串表示形式。
	int i=20;
	sb.append(i);//添加整数
    sb.insert(2,i);//将整数i插入字符串缓冲对象的索引2处
	System.out.println(sb);

字符串如何转换为字符或者字符数组呢?

接下来我来介绍几种简单的字符串String的转换方法;

String str = new String("abcdef");
char m= str.charAt(3);//返回str字符串中索引3处的字符值,输出的结果为字符d
char [] b=new char[str.length];
//将字符串str转换为字符数组
//方法1:
char [] a =str.toCharArray();//将字符串str转换为字符数组
//方法2:
for(int i=0;i<str.length;i++){//将字符串str转换为字符数组
b[i]=str.charAt[i];
}
char [] c={'a','b','c','d'};
//将字符数组转换为字符串
方法1:
String s=String.copyValueOf(c);
方法2:
String s1=String.valueof(c);
//将字符串中所有字符转换为大写
String s2=s1.toUpperCase();
//将字符串中所有字符转换为小写
String s3=s2.toLowerCase();

线程是否安全?

String: String中的对象是不可变的,也就可以理解为常量,显然线程安全。

StringBuffer:是线程安全的,因为对方法加了同步锁或者对调用的方法加了同步锁。

StringBudder:并没有对方法进行加同步锁,所以是非线程安全的。

什么时候使用哪个类型比较好?

1.如果要操作少量的数据用: String 
2.单线程操作字符串缓冲区 下操作大量数据 :StringBuilder 
3.多线程操作字符串缓冲区 下操作大量数据 : StringBuffer

猜你喜欢

转载自blog.csdn.net/coder150806/article/details/83095703
今日推荐