首页 > 学院 > 开发设计 > 正文

String、StringBuffer与StringBuilder之间区别

2019-11-08 18:30:37
字体:
来源:转载
供稿:网友

String、StringBuffer与StringBuilder之间区别

package sun.rain.amazing;import org.junit.Test;/** * String、StringBuffer与StringBuilder之间区别 * * 主要是对字符串内容可变的操作进行相应的方法操作 * 针对于 String 和 StringBuffer 和 StringBuilder * 一些方法的应用 及其之间的区别 * @author sunRainAmazing * */public class StringChange { /** * 1、String类对象为不可变对象,一旦你修改了String对象的值, * 隐性重新创建了一个新的对象,释放原String对象, * StringBuffer类对象为可修改对象,可以通过append()方法来修改值 * 2、String类对象的性能远不如StringBuffer类。 * *=================================== * * String 是final类,即不能被继承. 为不可变对象,一旦被创建,就不能修改它的值. * 对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去. * * 是一个可变对象,它只能通过构造函数来建立, * StringBuffer stringBuffer = new StringBuffer(); * StringBuffer stringBuffer = new StringBuffer(String str); * * 注意:不能通过赋值符号对他进行赋值. * stringBuffer = "welcome to here!";//error * * 对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer * 中赋值的时候可以通过它的append方法. * stringBuffer.append("hello"); * 字符串连接操作中StringBuffer的效率要比String高: * * ================================== * * 将stringBuffer 转为 String 类型 * 1. 直接进行调用 toString()方法即可 * 2. 直接拼接 stringBuffer + "" * 3. 使用 String.valueOf(stringBuffer); *//** * ================================ * * 1.在执行速度方面的优劣 StringBuilder > StringBuffer > String * String:字符串常量 ----是不可变的常量 final 修饰的 内容一旦创建不可改变 * StringBuffer、StringBuilder:字符串常量 -----内容是可变的,一个对象 * * 2.String类型的变量一旦改变内容,实质是另外创建了一个对象,将变量所对应的物理地址重新引用 * * String str = "内容创建,物理地址不可变"; * str = str+"内容改变或拼接效果";//实际上是重新创建了一个物理地址 重新引用 * System.out.PRint(str);// 这里的str 不再是 指向最初创建的那个物理地址。 * * 3.String 类重写了equals方法 ,而StringBuffer没有重写equals方法 * * 4.StringBuilder:线程非安全的、StringBuffer:线程安全的 * 对于三者使用的总结: * 1.对于String类型的数据 ,判断字符串内容是否相等, 操作少量的数据 * 2.StringBuilder:主要用于单线程的多数据字符串的操作,线程不安全 * 3.StringBuffer:主要用于多线程操作字符串,线程安全 * * ================================ */ /** * 可变字符串和不可变字符串的操作的方法 * substring() * 给出字符串的两个位置,pos1和pos2, 如何替换pos1和pos2之间的字串 * 用subString , String.substring(0,pos1) * + newString * + String.substring(pos2+1) * * StringBuffer类为可变字符串的修改提供了3种方法,在字符串中间插入和改变某个位置所在的字符。 * 1.在字符串后面追加:用append()方法将各种对象加入到字符串中。 * 2.在字符串中间插入:用insert()方法。 * 3.改变某个位置所在的字符,用setCharAt()方法 */ //将tomcat 换成 Maria @Test public void testChangeString(){ String replaceStr = "tomcat"; String str = "欢迎您"+ replaceStr +"来到WEB世界"; //获取第一个截取的长度 int index = str.indexOf(replaceStr); //获取第二个截取的长度 int length = index + replaceStr.length(); String newStr = "Maria"; str = str.substring(0, index)+newStr+str.substring(length+1); System.out.println(str); } @Test public void testStringBufferInsert(){ String str = "欢迎您来到WEB世界"; StringBuffer stringBuffer = new StringBuffer(str); String newStr = "Maria"; stringBuffer.insert(str.indexOf("您")+1, newStr); System.out.println(stringBuffer.toString()); }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表