String和StringBuffer的区别

本文详细介绍了Java中String类及其不可变性特点,并对比了StringBuffer类的使用方式和内部实现机制,包括构造方法、常用方法及两者之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String
String的构造方法

一般有三种(1String();
(2String(String value);  //用字符串来构造3String(char[] value);  //用字符数组来定义

String的常用方法

1)length(); //返回字符串的长度2char charAt(int index); //返回字符串中index位置上的字符3)getChars(int srcBegin, int srcEnd, char dst[], int dstBegin);  
//从目标若干字符中取字符串放入dst[]数组中,从srcBegin位置开始到srcEnd-1位置结束,dstBegin为提取的字符放在dst[]中的起始位置。
例如:
String s="01234567";
char[] dst=new char[3];
s.getChars(1,4,dst,0); //数组dst内容为{‘1’,‘2’,‘3’}4)equals(String str)  //判断两个字符串内容是否相同,区分大小写
    equalsIgnoreCase(String str) //不区分大小写,判断两个字符串内容是否相同5int compareTo(String str);  //按字典次序比较两个字符串的大小,如果源字符串较小,返回值<0;两个字符串相等,返回0;如果源字符串叫大,返回>0;

(6)indexOf() 和lastIndexOf()  //在字符串中检索特定字符或子字符串。7)concat(String str) //把字符串str附加在当前字符串的末尾。8)substring() //返回字符串的一个子字符串9)replaceAll(String str1, String str2) //把所有str1替换为str2
   replaceFirst(String str1, String str2) //替换第一个str1为str2

(10)trim();  //把字符串首尾的空格删除11)String valueOf() //把基本类型转换为String类型12)toUpperCase() 和 toLowerCase() //转换大小写

StringBuffer
StringBuffer的构造方法

(1) StringBuffer()  //建立一个空的缓冲区,默认长度为16
(2) StringBuffer(int length) //建立一个长度为length的空缓冲区
(3) StringBuffer(String str) //缓冲区的初始内容为字符串str,后面还有16个空的缓冲区供再次分配

StringBuffer的常用方法

1)length() //返回StringBuffer的长度2)append() //想StringBuffer中添加新的字符串。3)toString() //返回缓冲区内的字符串4)charAt(int index) //取某一位的字符
  setCharAt(int index, char ch) //将index位置上的字符换为ch5)subString() //与String中的subString用法相同6)getChars(int srcBegin, int srcEnd , char[] dst, int dstBegin) //提取字符串放入dst字符数组中7)insert(int offset, String str) //在offset位置插入字符串str

StringBuffer和String的区别
(1)String是不可变类,String对象创建后,其内容无法改变,一些看起来能够改变字符串的方法,实际上是创建了一个新的字符串并返回。
StringBuffer则可以直接改变缓冲区里的字符串内容。

(2)String 类覆盖了equals() 方法,而StringBuffer 类没有覆盖equals() 方法。

(3)两个类都覆盖了toString()方法,但实现方法不一样。
String类的toString() 方法返回当前String实例的本身的引用。
StringBuffer 的toString() 方法返回一个以当前StringBuffer的缓冲区中所有字符串为内容的心的String对象的引用。

(4)String类可以用“+”进行连接,而StringBuffer不可以。
当然前面说过,String类是一个不可以改变的类,那么每一次“+”,都会重新新建一个String对象,如果“+”的次数很多,可以变为StringBuffer后再进行append操作,这样可以节约更多的空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值