在java中,String类对象的内容是不能被改变的,例如String s="123"; 那么s的内容是不能够被改变的。
所谓内容不能变,不是说s="456"就不行了,那只是指向了别的字符串,而是说类似s[2]='9'这种试图修改"123"这个字符串的语句是不成立的
StringBuffer类是java提供的一个能够修改内容的作用类似字符串的字符串缓冲区类
定义对象:StringBuffer sbf=new StringBuffer(字符串或空);
StringBuffer类中提供了大量的功能:
sbf.append(参数)//参数类型可以为各种类型,但不包括byte 和 short:
作用是将参数内容添加到sbf中内容的结尾处,sbf这个对象的内容已经被修改,返回值就是sbf这个对象
sbf.insert(int index,String s)
作用是在下标为index处添加指定内容s,返回值同样是sbf这个对象
String str=sbf.toString()
作用是把sbf的内容生成字符串,返回值类型是String
sbf.delete(int start,int end)
作用是把从start到end(不包括end)的内容删除
sbf.deleteCharAt(int index)
作用是删除index位置的字符
sbf.getChars(int srcBegin,int srcEnd,char[] chs,int dstBegin)
作用是从sbf中取出从srcBegin到srcEnd(不包括srcEnd)的内容,并从下标为dstBegin开始,保存如字符数组chs中,无返回
sbf.replace(int start,int end,String s)
作用是把从start到end(不包括end)的内容改为s,返回sbf这个对象
sbf.setCharAt(int index,char c)
作用是把index位置的内容改为c,无返回值
sbf.reverse()
作用是内容反转,返回sbf这个对象
StringBuffer类中也有一些和String相同的功能:
sbf.charAt()
sbf.indexOf()
sbf.substring()
sbf.lastIndexOf()
sbf.length()
==============================================================================================================================
在JDK1.5版本后,java推出StringBuilder类,其中包含的功能和StringBuffer基本一致,区别就在于StringBuffer会保证线程同步,StringBuilder则不同步
StringBuffer任何情况下都会判断一下锁,效率较低,建议使用StringBuilder,当遇到多线程安全问题时,手动加锁即可。
==============================================================================================================================
顺便说一下基本数据类型对象包装类,这些类中提供了一些功能给对应的基本数据类型对象使用
主要应用:实现基本数据类型与字符串实现相互转换:
例如:int a=Integer.parseInt("123");//a=123
这些类中提供的功能还有很多,具体查阅API文档