String、StringBuuffer、StringBuilder三者的区别
string
String 字符串常量(final修饰,不可被继承,线程不安全),String是常量,当创建之后即不能更改,可以给多个引用共享,在做大量字符串拼接的时候效率低。(可以通过StringBuffer和StringBuilder创建String对象(常用的两个字符串操作类)。)
StringBuffer、StringBuilder
可以改变字符串的长度和内容,是一个字符串缓冲区,在做大量字符串拼接的时候不会开辟新的空间。
StringBuffer 字符串变量(线程安全,效率低)
其也是final类别的,不允许被继承,其中的绝大多数方法都进行了同步处理,包括常用的Append方法也做了同步处理(synchronized修饰)。其自jdk1.0起就已经出现。其toString方法会进行对象缓存,以减少元素复制开销。
public synchronized String toString() {
if (toStringCache == null) {
toStringCache = Arrays.copyOfRange(value, 0, count);
}
return new String(toStringCache, true);
}
1
2
3
4
5
6
StringBuilder 字符串变量(非线程安全,效率高)
其自jdk1.5起开始出现。与StringBuffer一样都继承和实现了同样的接口和类,方法除了没使用synch修饰以外基本一致,不同之处在于最后toString的时候,会直接返回一个新对象。
public String toString() {
// Create a copy, don’t share the array
return new String(value, 0, count);
}
1
2
3
4
---------------------
最新文章
- jqueyr获取动态创建的元素
- c++中的指针
- 通过指定函数/方法形参类型提高PHP代码可靠性
- mui slider 改变默认index
- [Unity2D]游戏引擎介绍
- hiho_1044 状态压缩
- MYSQL数据库重点:事务与锁机制
- ubuntu14.04+opencv 3.0+python2.7安装及测试
- supervisor 部署文档
- Qt Windows下链接子系统与入口函数(终结版)(可同时存在main和WinMain函数)
- SQL中on条件与where条件的区别(转载)
- 高性能MySQL之【第十五章 备份与恢复】学习记录
- Android通过WebService实现图片的上传和下载(一)
- Leetcode_114_Flatten Binary Tree to Linked List
- 2、前端学习笔记之——css
- 学习django就看这本书了!django book 2.0中文版
- Java探针
- python小结 1
- 【翻唱】Keep On Fighting
- Extjs 文件上传
热门文章
- [信息学奥赛一本通oj1741]电子速度 题解
- linux 命令参数列表过长以及find用法
- ";New page after"; by code
- USACO 5.3 章节
- cpupower:Shows and sets processor power related values
- think PHP提取字符串中的数字,并到数据库中使用in查询所关联表的字段值
- js的浏览器判断方法
- 年度重大升级,IntelliJ IDEA 2019.2 稳定版发布
- leetcode.排序.451根据字符出现频率排序-Java
- <;每日一题>;题目4:for循环套生成器的面试题