1.在java中,字符串使用String类进行表示,但是String类所表示的字符串有一个最大的问题:“字符串常量一旦声明则不可改变,而字符串对象可以改变,但是改变的是其内存地址的指向”.所以String类不适于被频繁修改的字符串操作上,在这种情况下可以使用StringBuffer类,而StringBuffer类方便用户进行内容修改,在String类中使用"+"作为数据库的连接操作,而StringBuffer类中使用append()方法进行数据的连接.
使用StringBuffer操作,StringBuffer的内容可以改变.
首先声明了一个StringBuffer类对象,而后使用append()方法进行了字符串数据的连接.由于StringBuffer对象的内容可以改变,所以在fun()方法中对其所做的修改会被保留.
开发中优先考虑String类
StringBuffer类主要用于频繁修改字符串的操作,但是在任何开发中,面对字符串的操作大部分情况下都先考虑String,只有小部分操作才考虑StringBuffer.
String类使用final定义,所以不可以被其他类继承.
String和StringBuffer都属于CharSequence接口的子类,那么就可以通过字符串为此接口实例化,虽然String和StringBuffer这两个类都是同一个接口的子类,不过这两个对象之间不能互相直接转型,必须按照两种类型的实例化对象的转换.
操作一:将String变为StringBuffer
方法一:直接利用StringBuffer类的构造方法,public StringBuffer(String str)
将String变为StringBuffer
利用StingBuffer类的append()方法
将String变为StringBuffer
将StringBuffer变为Sting,利用StringBuffer类的toString()方法完成.
StringBuffer除了可以改变内容这一特定外,同样定义了许多String类中所没有的方法,StringBuffer类中主要操作方法.
字符串反转操作,public StringBuffer reverse().
package class5;
public class TestDemo6 {
public static void main(String[] args) {
StringBuffer buffer=new StringBuffer();//实例化StringBuffer对象
buffer.append("Hello World");//将String变为StringBuffer
System.out.println(buffer.reverse()); //字符串反转
}
}
替换指定范围内的数据,public StringBuffer replace(int start,int end,String str);
package class5;
public class TestDemo6 {
public static void main(String[] args) {
StringBuffer buffer=new StringBuffer();//实例化StringBuffer对象
buffer.append("Hello World");//将String变为StringBuffer
System.out.println(buffer.replace(6,12,"MLDN")); //字符串替换
}
}
在指定位置插入数据,public StringBuffer insert(int offset,数据类型 变量);
public class TestDemo6 {
public static void main(String[] args) {
StringBuffer buffer=new StringBuffer();//实例化StringBuffer对象
buffer.append("Hello World").insert(0,"Hello");//连接并插入字符串
System.out.println(buffer);
}
}
运行结果
Hello World
这三个方法是StringBuffer不存在的方法
String的内容不可改变,StringBuffer的内容可以改变,如需要对字符串数据进行频繁修改,只能使用StringBuffer类.