String、String Builder、和String Buffer三者之间的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangwei_620/article/details/80766194

一.String类

是自定义数据类型,不是基本数据类型,String一共有11中数据类型

1.length方法
String str = new String("王巍");
System.out.println(str.length());

二.StringBuffer和StringBuilder(方法都相同)

与String的区别是StringBuilder是可以修改的字符串的而String是不可以修改的
1. StringBuilder.append方法:
StringBuilder sBuilder = new StringBuilder("时刻保持正念");
sBuilder.append("--");
System.out.println(sBuilder);
2. StringBuilder.charAt(3)表示的是检索特定字符串的索引值
StringBuilder sBuilder = new StringBuilder("时刻保持正念");
System.out.println(sBuilder.charAt(3));
3.StringBuilder.insert(位置,值) 表示插入内容
StringBuilder sBuilder = new StringBuilder("时刻保持正念");
sBuilder.insert(6, "bling");
System.out.println(sBuilder);
4.sBuilder.toString() 转化为字符串
StringBuilder sBuilder = new StringBuilder("时刻保持正念");

System.out.println(sBuilder.toString());
5.基本类型和包装类型的转换

包装类主要是为基本数据类型需要对象的时候提供支持
包装类主要提供了两大类方法:
1. 将本类型和其他基本类型进行转换的方法
2. 将字符串和本类型及包装类互相转换的方法
基本类型转换为字符串有三种方法:
1. 使用包装类的 toString() 方法
2. 使用String类的 valueOf() 方法
3. 用一个空字符串加上基本类型, 得到的就是基本类型数据对应的字符串

三.三者之间的区别

当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类。和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder类在Java 5中被提出,它和StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的(不能同步访问)。
由于StringBuilder相较于StringBuffer有速度优势,所以多数情况下建议使用StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用StringBuffer类。
在这方面运行速度快慢为:StringBuilder > StringBuffer > String
String最慢的原因:

  String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
 如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线程的情况下,还是建议使用速度比较快的StringBuilder。

String:适用于少量的字符串操作的情况
  StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
  StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况





猜你喜欢

转载自blog.csdn.net/wangwei_620/article/details/80766194