您的位置:首页 > 产品设计 > UI/UE

java字符串类(String,StringBuffer,StringBuilder)

2018-03-01 16:48 525 查看
Java中的字符串都是作为对象处理的,用字符串类来封装一个字符串的字符串序列以及有关的信息,如长度等。字符串类位于java.lang包中。有三个类:其中string类用来处理常量字符串, 而StringBuffer与StingBuilder则用来处理长度与内容可变的字符串,这三个类都被声明而final,不能被继承。StringBuilder类是JDK1.5引入的,与StringBuffer几乎完全一样,唯一的区别仅在于StringBuilder类没有实现原StringBuffer的线程安全功能,故性能有所提高,以供重视性能而安全要求不高的场合。
String类
字符串常量死用双引号括住的一串字符(如“Hello“),一个字符串常量就是一个String对象。String代表的支付不可修改的字符串序列,两个字符串对象用”+“或者”=+”运算符会产生新的字符串(这是由于编译的原因,String是不可修改的)。若java程序中有多处出现字符串常量“Hello”,内存中只会存在一个对象,两个对象名其实对内存的同一个引用。具体可参照我的另一篇博客 String源码分析。
String类的常用方法:
(1)int length():返回字符串的长度;
(2)char charAt(int index):获取字符串的指定位置的字符,其中index取值范围是0~字符串长度;
(3)int compare(String another):按Unicode码值逐字符串比较两个字符串的大小。如果源串较小就返回一个小于0的值;两者相等返回0;否则返回大于0的值;
(4)String concat(String str):把两个字符串str附加在当前字符串末尾;
(5)int indexOf(int ch):返回字符串ch在次字符串中第一次出现的位置;
         int indexOf(String str):返回制定字符串str在此字符串中第一次出现的位置;

         int lastIndexOf(int ch):返回指定地府传ch在此字符串中最后一次出现的位置;

         int lastIndexOf(String str):返回指定字符串str在此字符串中最后一次出现的位置;

(6)String toUpperCase():将字符串转换成大写;
        String toLowerCase():将字符串转换为小写;

(7)String substring(int beginIdex):返回一给新字符串,该子字符串从制定索引出的字符开始,知道次字符串末尾;
        String substring(int beginIndex,int endIndex):返回一个新字符串,该子字符串从指定beginIndex处开始,知道endIndex-1出的字符。

(8)static String valueOf():把基本数据类型转换为String类型。
(9)String[] split(String regex):将一个字符串按照制定的分隔符分隔,返回分隔后的字符串数组。

StringBuffer类

与String类不同,StringBuffer类表示内容与长度动态可变的字符串缓存。他有两个基本类型,长度与容量,长度即StringBuffer对象所表示的字符串的长度;容量是StringBuffer对象所拥有的内存空间大小。比如,某个StringBuffer对象的容量是100,但他存放的字符串长度可能仅为10.程序员可直接对缓存进行插入、删除、修改、替换的操作,操作结果会直接影响串对象。比之传统的字符数组,StringBuffer能自动管理字符串占用的内存空间,减免了程序员的负担。
StringBuffer的构造方法:public StringBuffer():构造一个不带字符的字符串缓存,初始容量为16个字符
public StringBuffer(int capacity):构造一个不带字符但指定厨师容量的字符串缓存
public StringBuffer(String str):构造一个字符串缓存,并将起内容初始化为制定的字符串内容。该缓存的初始容量为16加上字符串参数的长度
StringBuffer的常用方法:
StringBuffer append():向缓存中添加新的字符串
StringBuffer insert(int offset,String str):在字符串的offset位置插入字符串str。
StringBuffer delete(int start,int end):移除此序列的子字符串中的字符,该子字符串从制定的start出开始,一直到索引end-1处结束
StringBuffer reverse():将字符串列逆序


String与StringBuffer的区别:

(1)String代表字符串常量,Java程序中的所有字符串字面值(如“abc“)都作为此类的实例实现,他们的值在创建以后不能更改;StringBuffer代表可变字符序列,即一个字符串缓存,通过方法(如append()/delete()/insert()/replace()等)调用可改变字符序列的长度与内容。
(2)String重写了从Object继承的queals()方法来比较String对象的长度与值,而StringBuffer没有重写。
(3)String对象之间可用操作符"+"进行连接,而StringBuffer对象不可以,但可使用append()方法连接
(4)String可以比较大小,而StringBuffer不可以,必须先转成String再比较
(5)通常一个字符串使用String便可以进行大小比较,结构分析等,但若该字符串有频繁的插入、删除、修改等操作,会产生大量的临时String对象,内存消耗极大。考虑两者之间的转换
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: