String类和StringBuffer类的区别
2017-03-27 15:54
316 查看
相同点:
String类和StringBuffer类都用来处理字符串。
String类和StringBuffer类都提供了length()、toString()、charAt()和substring()方法,它们的用法在两个类中相同。
对于String类和StringBuffer类,字符在字符串中的索引位置都从0开始。
不同点:
String类是不可变类 ,而StringBuffer是可变类。String对象创建后,它的内容无法改变。
输出结果:
java
novatest
2.String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法。
3.两个类都覆盖了Object类的toString()方法,但是各自的实现方式不一样:
String类的toString()方法返回当前String实例的本身的引用。
StringBuffer类的toString()方法返回一个以当前StringBuffer的缓冲区中的所有字符为内容的新的String对象的引用。
4.String类对象可以用操作符”+”进行连接,而StringBuffer类对象之间不能用”+”操作符进行连接。
采用StringBuffer可以减少Java虚拟机创建String对象的次数,减少动态分配和回收内存的次数,因此可以使程序性能大大提高。
单线程运行效率:
String << StringBuffer < StringBuilder
String类和StringBuffer类都用来处理字符串。
String类和StringBuffer类都提供了length()、toString()、charAt()和substring()方法,它们的用法在两个类中相同。
对于String类和StringBuffer类,字符在字符串中的索引位置都从0开始。
不同点:
String类是不可变类 ,而StringBuffer是可变类。String对象创建后,它的内容无法改变。
public class TestString { public static void main(String[] args) { String s = new String("java"); s.concat("test"); //连接test字符串 s.replace('j', 'k'); //将字符串中的j换为k s.toUpperCase(); //将字符串中的所有字母换为大写 s.toLowerCase(); //将字符串中的所有字母换为小写 System.out.println(s); StringBuffer sb = new StringBuffer("java"); sb.append("test"); //在原字符串末尾连接test字符串 sb.replace(0,2,"no"); //将位置0到2的字符串替换为no System.out.println(sb); } }
输出结果:
java
novatest
2.String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法。
String s1 = new String("java"); String s2 = new String("java"); System.out.println(s1.equals(s2)); //打印true,在String类中equals()方法是内容的比较,尽管s1和s2是两个不同的对象 StringBuffer sb1 = new StringBuffer("java"); StringBuffer sb2 = new StringBuffer("java"); System.out.println(sb1.equals(sb2));//打印false
3.两个类都覆盖了Object类的toString()方法,但是各自的实现方式不一样:
String类的toString()方法返回当前String实例的本身的引用。
StringBuffer类的toString()方法返回一个以当前StringBuffer的缓冲区中的所有字符为内容的新的String对象的引用。
String s = "java"; System.out.println(s==s.toString()); //打印true,==比较的是两个对象的地址值 System.out.println(s.equals(s.toString())); //打印true StringBuffer sb = new StringBuffer("java"); System.out.println("java"==sb.toString()); //打印false System.out.println(sb.equals(sb.toString()));//打印false
4.String类对象可以用操作符”+”进行连接,而StringBuffer类对象之间不能用”+”操作符进行连接。
采用StringBuffer可以减少Java虚拟机创建String对象的次数,减少动态分配和回收内存的次数,因此可以使程序性能大大提高。
单线程运行效率:
String << StringBuffer < StringBuilder
相关文章推荐
- Java中String类StringBuffer类和StringBuilder类的区别
- String类和StringBuffer类的区别
- String类和StringBuffer类的区别
- Java String类和StringBuffer类的区别
- String类和StringBuffer类的区别
- String类和StringBuffer类的区别
- 关于String类和StringBuffer类的区别
- StringBuffer类和String类的区别
- Java String类和StringBuffer类的区别
- String类和StringBuffer类的区别
- Java中String类和StringBuffer类的区别
- String类,Stringbuilder类,Stringbuffer类之间的区别
- String类和StringBuffer类的区别
- String类和StringBuffer类的区别
- java中String类、StringBuffer类、StringBuilder类的区别(未完待续)
- String类和StringBuffer类的区别
- String类、StringBuffer类和StringBuilder类的区别
- String类和StringBuffer类的区别
- Java中 String类、StringBuilder类、StringBuffer类 区别与如何选择
- String类和StringBuffer类的区别