Java学习--String、StringBuffer与StringBuilder
2014-01-24 15:41
711 查看
String并不是基本数据类型,而是一个对象,并且是不可变的对象。String类为final型的不可被继承,而且通过查看JDK文档会发现几乎每一个修改String对象的操作,实际上都是创建了一个全新的String对象。
字符串为对象,那么在初始化之前,它的值为null,到这里就有必要提下””、null、new String()三者的区别。null 表示string还没有new ,也就是说对象的引用还没有创建,也没有分配内存空间给他,而””、new String()则说明了已经new了,只不过内部为空,但是它创建了对象的引用,是需要分配内存空间的。
在字符串中存在一个非常特殊的地方,那就是字符串池。每当我们创建一个字符串对象时,首先就会检查字符串池中是否存在面值相等的字符串,如果有,则不再创建,直接返回字符串池中对该对象的引用,若没有则创建然后放入到字符串池中并且返回新建对象的引用。这个机制是非常有用的,因为可以提高效率,减少了内存空间的占用。所以在使用字符串的过程中,推荐使用直接赋值(即String s=”aa”),除非有必要才会新建一个String对象(即String s = new String(”aa”))。
1、String:在字符串不经常变化的场景中可以使用String类,如:常量的声明、少量的变量运算等。
2、StringBuffer:在频繁进行字符串的运算(拼接、替换、删除等),并且运行在多线程的环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装等。
3、StringBuilder:在频繁进行字符串的运算(拼接、替换、删除等),并且运行在单线程的环境中,如SQL语句的拼装、JSON封装等
字符串为对象,那么在初始化之前,它的值为null,到这里就有必要提下””、null、new String()三者的区别。null 表示string还没有new ,也就是说对象的引用还没有创建,也没有分配内存空间给他,而””、new String()则说明了已经new了,只不过内部为空,但是它创建了对象的引用,是需要分配内存空间的。
在字符串中存在一个非常特殊的地方,那就是字符串池。每当我们创建一个字符串对象时,首先就会检查字符串池中是否存在面值相等的字符串,如果有,则不再创建,直接返回字符串池中对该对象的引用,若没有则创建然后放入到字符串池中并且返回新建对象的引用。这个机制是非常有用的,因为可以提高效率,减少了内存空间的占用。所以在使用字符串的过程中,推荐使用直接赋值(即String s=”aa”),除非有必要才会新建一个String对象(即String s = new String(”aa”))。
1、String:在字符串不经常变化的场景中可以使用String类,如:常量的声明、少量的变量运算等。
2、StringBuffer:在频繁进行字符串的运算(拼接、替换、删除等),并且运行在多线程的环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装等。
3、StringBuilder:在频繁进行字符串的运算(拼接、替换、删除等),并且运行在单线程的环境中,如SQL语句的拼装、JSON封装等
相关文章推荐
- Java 深入学习(8) —— String、StringBuilder、StringBuffer的区别
- Java基础学习总结(65)——Java中的String,StringBuilder和StringBuffer比较
- JAVA学习笔记——字符串操作(String,StringBuffer,StringBuilder)
- 你不知道的Java学习笔记12--String、StringBuffer、StringBuilder比较
- Java学习(二):String、StringBuffer和StringBuilder
- Java 学习笔记 04 String 、StringBuilder 和 StringBuffer区别和联系
- java基础学习笔记之String、StringBuffer、StringBuilder
- 【Java学习】String、StringBuffer和StringBuilder
- JAVA基础学习day13--String、StringBuilder与StringBuffer与包装类
- java学习---String、StringBuffer与StringBuilder之间区别
- Java学习资料-String、StringBuffer、StringBuilder
- 【学习总结】java高级特性之String、StringBuffer、StringBuilder
- java学习笔记(7) -- String、StringBuffer、StringBuilder的区别
- 【JAVA_SE学习笔记】String、StringBuffer和StringBuilder
- Java学习札记14:一个比较String、StringBuffer和StringBuilder之间效率差别的简单例子
- 【Java学习笔记】String、StringBuffer和StringBuilder
- 【Java学习笔记】String、StringBuffer和StringBuilder
- Java字符串操作类学习笔记:String、StringBuffer、StringBuilder
- 【Java学习笔记】Day 3 String及StringBuilder及StringBuffer 【待整理】
- Java学习札记13:浅析Java中的String、StringBuffer和StringBuilder的区别