Java之String、StringBuffer、StringBulider辨识
1、总引:
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
从这段话中,可以读出两点:
1)在修改自身对象时,String是不可变的,StringBuffer和StringBuilder是可变的;
2)同是可变下,StringBuffer是线程安全的(适用多线程),而StringBuilder则有速度优势(适用单线程)。
2、String和StringBuffer可变和不可变
public static void main(String args[]){String str = "hello";StringBuffer strBuffer = new StringBuffer();strBuffer.append(" world");System.out.println(str.getClass() + "@" + str.hashCode());System.out.println(strBuffer.getClass() + "@" + strBuffer.hashCode());str = "jason";strBuffer.append(" and jason");System.out.println(str.getClass() + "@" + str.hashCode());System.out.println(strBuffer.getClass() + "@" + strBuffer.hashCode()); }
结果:String的地址已改变,对象已经改变为另一个;StringBuffer地址不变,还是同样的对象。
class java.lang.String@99162322
class java.lang.StringBuffer@131204848
class java.lang.String@100897019
class java.lang.StringBuffer@131204848
3、适用场景
1)如果要操作少量的数据用 String;
2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
Java之String、StringBuffer、StringBulider辨识相关推荐
- 【翻译】Java中String, StringBuffer, StringBuilder的区别
2019独角兽企业重金招聘Python工程师标准>>> String 是 Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...
- Java之String,StringBuffer,StringBuilder
1.String 在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序.String 对象创建后则不能被 ...
- Java中String StringBuffer和StringBuilder的区别是什么
String StringBuffer 和 StringBuilder 的区别是什么?String 为什么是不可变的? 可变性 简单的来说:String 类中使用 final 关键字修饰字符数组来保存 ...
- java中 String StringBuffer StringBuilder的区别
* String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...
- Java中String,StringBuffer,StringBuilder的区别
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 运行速度 StringBuilder > StringBuffe ...
- Java 之String、StringBuffer 和 StringBuilder 三者区别介绍
String:字符串常量,字符串长度不可变,StringBuffer:字符串变量(Synchronized,即线程安全),StringBuilder:字符串变量(非线程安全). String Stri ...
- 2.Java中String,StringBuilder以及StringBuffer的关系与区别
String StringBuffer StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...
- 重温java中的String,StringBuffer,StringBuilder类
不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...
- 浅谈 Java 字符串(String, StringBuffer, StringBuilder)
我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...
最新文章
- Windows下solr的安装与部署
- linux 信号量锁 内核,Linux内核中锁机制之信号量、读写信号量
- 如何写出更好的代码(文末有福利)
- 阿里云搭建nacos
- 【英语学习】【Daily English】U02 Daily Routine L03 Tuesday night is curry night
- python 集合(set)
- Redis底部的几种存储结构(sds、dict、ziplist、intset、skiplist)
- bzoj4552[HEOI2016/TJOI2016]排序(二分+线段树)
- 屏蔽网站广告的Chrome谷歌浏览器插件推荐和下载地址
- 关闭ntp服务的 monitor monlist,解决漏洞CVE-2013-5211
- 前后端分离的项目部署到tomcat_阿里聚石塔部署前后端分离项目
- sha1校验工具android,Android 正式版与测试版签名(MD5,SHA1,SHA256)以及忘记keystore的应用正式版签名获取...
- MFC工具箱中各种控件
- 【论文阅读|深读】RolNE: Improving the Quality of Network Embedding with Structural Role Proximity
- CoinCola可盈可乐研究院2月报 | 加密货币集体上涨
- 传奇关于首饰盒装备系统“十二生肖”“五行八卦”等脚本实例
- iOS/iPhone 微信打开doc xls文件报错OfficeImportErrorDomain错误912 打不开文档
- mybatis报错 Invalid bound statement (not found)
- windows7经典开机音乐_Windows 7正式退休,微软出手,网友含泪告别情怀:感谢11年陪伴...
- python ftp上传/下载文件,带进度条显示
热门文章
- 存货编码数字_用友T3软件存货编码与存货代码有什么不同?
- linux 之 rpm 网站
- 3.17-3.18 HDFS2.x中高级特性讲解
- Zabbix监控Nginx性能状态
- 2014年湖北省TI杯大学生电子设计竞赛论文格式
- 数据库迁移之从oracle 到 MySQL
- InnoDB与MyISAM引擎区别
- ubuntu11.10设置了pppoe(自动拨号后),开机速度慢和无法连接无线网都解决办法...
- Redhat7.4安装Oracle11g详细步骤
- Android驱动中的Kconfig文件与Makefile文件