String、StringBuilder、StringBuffer
来源:互联网 发布:绿化预算软件 编辑:程序博客网 时间:2024/05/17 07:41
一,
String 字符串常量;
StringBuilder 字符串变量;
StringBuffer 字符串变量;
单从字面的意思可知,String是“字符常量”,是不可变的对象,可能有人会不同意,因为:
package string;public class StringN {public static void main(String[] args) {String s="aa";System.out.println(s);s="bb";System.out.println(s.toString());}}输出结果:
aa
bb
变量s明明已经改变了。表面上是改变了,实际上第二个s已经不是第一个s了;JVM对这段代码的解释:先创建一个对象s,赋值“aa”
。执行s=“bb”时,再创建一个新的对象s,赋值“bb”。因此每一次赋值都是在创建新的对象。因此说String对象是不可变的,也因此效
率很低。
在效率方面:StringBuilder》StringBuffer》String;
StringBuffer相对StringBuilder来说是线程安全的。通常我们使用字符串操作,都是在单线程中,因此推荐使用StringBuilder。
二,
字符串缓冲池:
package string;public class StringN {public static void main(String[] args) {String s0=new String("abc");String s1="abc";String s2=new String("abc");System.out.println(s0==s1);System.out.println(s0==s2);System.out.println(s1==s2);}}输出结果:
false
false
false
String s0=new String("abc");代码执行流程是:现在String pool中查找有没有值为“abc”的对象,没有就在String pool中创建
一个值为“abc”的对象,然后在利用new 的方式在有创建了一个值为“abc”的对象;这个对象放在内存堆中,s0引用指向堆中的对象。
String s1=“abc”;在String Pool中查找有没有值为“abc”的对象,没有就在String pool中创建。有就直接将String pool中对象
赋值给s1;
String s2=new String("abc");与第一行代码是一样的。
因此三个值都不一样。
- String 、StringBuffer 和 StringBuilder
- String,StringBuffer,StringBuilder(转载)
- String、StringBuffer和StringBuilder
- String,StringBuffer,StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String StringBuffer StringBuilder
- String StringBuffer StringBuilder
- String StringBuffer StringBuilder
- String StringBuffer StringBuilder
- String ,StringBuffer ,StringBuilder问题
- String StringBuffer StringBuilder
- String StringBuffer StringBuilder 区别
- StringBuilder StringBuffer String
- StringBuilder。StringBuffer。String
- String,StringBuffer与StringBuilder
- String、StringBuffer和StringBuilder
- String, StringBuffer, StringBuilder区别
- iOS 网络编程 GCDasynsocket socket 发送数据
- 父、子容器高度不定,实现垂直居中
- 导出和导入
- 修改cas-server3.5.1(一) cas取消https方法配置。
- multimap一对多映射
- String、StringBuilder、StringBuffer
- Echarts-echart和springMVC实现堆栈图
- ehcache实践
- Spring mvc 返回json格式
- Unity3d中UI开发的MVC模式
- 2012年5月SAT香港真题解析
- javascript的函数和对象
- Ubuntu系统访问Windows共享文件夹的方法
- AndroidStudio 添加svn插件