String和StringBuffer的区别?
2015-07-30 00:07
387 查看
这个我经常用的是String,说真的,用StringBuffer的次数还真是少,唯一让我觉得特别的方法就是appand这个方法是StringBuffer独有的,那么他们到底有什么区别呢,我们知道String是字符串,而字符串是对象,对象里有一个概念叫做可变对象和非可变对象,String属于非可变对象,StringBuffer属于可变对象,可能有人会问String str=“aa”;str="bb";这句话也能通过编译啊,没有任何错误啊,是的,这句话的确没有一丁点的错误,不过你忽略了一点,就是“aa”和“bb”是字符串吧,字符串是对象吧,他们压根就不是一个对象,说String是不可变对象,其实在String str="aa"这句话其实是一个引用的使用,他引用到了一个对象,str在等于“aa”之前他所指向的地址和后来并不是一样的,就是说他并不是把值给了str,而是把对象的引用给了他,换句话说就是把对象的地址给了他,然而你想改变“aa”这个对象地址的数据通过String是不可能实现的,就像这个程序:
这个程序返回值和输入的不会有变化。
下面说说StringBuffer,这个类型可以进行修改的,就是说他是在原来地址上进行修改,差别就在于此。
因此得到的结论是:如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法好了!
也许这就是你的程序的性能瓶颈!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
非可变对象一旦创建之后就不能再被改变,可变对象则可以在创建之后被改变。
String对象是非可变对象,StringBuffer对象则是可变对象。
为获得更佳的性能你需要根据实际情况小心谨慎地选择到底使用这两者中的某一个。
这个程序返回值和输入的不会有变化。
下面说说StringBuffer,这个类型可以进行修改的,就是说他是在原来地址上进行修改,差别就在于此。
因此得到的结论是:如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法好了!
也许这就是你的程序的性能瓶颈!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
非可变对象一旦创建之后就不能再被改变,可变对象则可以在创建之后被改变。
String对象是非可变对象,StringBuffer对象则是可变对象。
为获得更佳的性能你需要根据实际情况小心谨慎地选择到底使用这两者中的某一个。
相关文章推荐
- css学习心得
- ReactiveCocoa -函数式编程和响应式编程
- js代码实现微博导航栏
- 原生js与jQuery实现简单的tab切换特效对比
- 理解javascript中的原型和原型链
- 用javascript实现自动输出网页文本
- javascript中if和switch,==和===详解
- js判断浏览器类型及设备(移动页面开发)
- javascript设计模式之对象工厂函数与构造函数详解
- js代码验证手机号码和电话号码是否合法
- js代码实现随机颜色的小方块
- JS如何实现文本框随文本的长度而增长
- 使用js复制链接中的部分文字的方法
- jQuery代码实现发展历程时间轴特效
- javascript中递归函数用法注意点
- javaScript实现滚动新闻的方法
- javascript实现列表滚动的方法
- html,xml,xhtml,文档类型,网页关键字和网页描述
- html表格、表单元素、img标签、图像映射技术、html4引入flash
- html基本字体元素,排版标签,列表元素,html字符实体,字符编码原理