String, StringBuffer,StringBuilder
String, StringBuffer,StringBuilder的区别
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,都实现了CharSequence、Serializable接口。
StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,如下就是,可知这两种对象都是可变的。
char[] value;
StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象 , 它只能通过构造函数来建立, 如: StringBuffer sb = new StringBuffer();
不能通过赋值符号对他进行付值. , 如 sb = "welcome to here!";//error
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer中赋值的时候可以通过它的append方法. sb.append("hello");
1.可变与不可变
String类中使用字符数组保存字符串private final char value[];,看源码,因为有“final”修饰符,所以可以知道string对象是不可变的。
String 为不可变对象,一旦被创建,就不能修改它的值. . 对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去,一旦创建直到这个对象被销毁。
构造器
equals方法
compareTo方法
contentEquals(StringBuffer sb):
字符串拼接:
将字符数组连缀成字符串。 String.copyValueOf(char[] data ); String.copyValueOf(char[] data, int offset, int count);
byte[] getBytes()
2.是否多线程安全
String中的对象是不可变的, 显然线程安全 。
AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。
StringBuffer对方法加了同步锁或者对调用的方法加了同步锁synchronized,所以是 线程安全的 。看源码:
StringBuilder并没有对方法进行加同步锁,所以是 非线程安全的 ,看源码。
3.StringBuilder和StringBuffer
StringBuilder与StringBuffer有公共父类AbstractStringBuilder( 抽象类 )。
capacity比length大,不需要关注。可以通过设置setlength重新设置大小。
抽象类与接口的其中一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。
StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer会在方法上加synchronized关键字,进行同步。
单线程中,那么使用StringBuilder效率高于StringBuffer,频繁的修改字符串所以首先考虑StringBuilder,多线程的情况使用StringBuffer.不频繁修改情况下使用String。
String, StringBuffer,StringBuilder相关推荐
- String,StringBuffer,StringBuilder三者的异同
String,StringBuffer,StringBuilder三者的异同:? String:不可变的字符序列;底层使用char[]存储(用final修饰) StringBuffer:可变的字符序列 ...
- 重温java中的String,StringBuffer,StringBuilder类
不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...
- 浅谈 Java 字符串(String, StringBuffer, StringBuilder)
我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...
- String, StringBuffer, StringBuilder之间的区别
String与StringBuffer/StringBuilder之间的主要区别 1.String对象不可变, 如果修改会重新创建一个对象, 然后把值保存进去. StringBuffer/String ...
- java中 String StringBuffer StringBuilder的区别
* String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...
- `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`
Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...
- StringBuffer类,StringBuffer类和String的区别、String,StringBuffer,StringBuilder之间的区别
1.概述 StringBuffer是一个线程安全的可变序列. 2.StringBuffer与String区别 (1)StringBuffer的长度和内容都可以发生改变,String却不行 (2)Str ...
- 2019-7-9 [JavaSE] String ,StringBuffer,StringBuilder比较 装箱和拆箱 日期类 正则
文章目录 1.StringBuffer类 方法: 利用StringBuffer开头与结束的时间计算: String ,StringBuffer,StringBuilder比较 2.装箱和拆箱 3.日期 ...
- 116day(String,StringBuffer,StringBuilder,模拟器和虚拟机的区别,复合命题的种类)
<2018年2月4日>[连续116天] 标题:String,StringBuffer,StringBuilder,模拟器和虚拟机的区别,复合命题的种类: 内容: A.详见http://bl ...
最新文章
- 谷歌新深度学习系统可以促进放射科医生的发展
- 鲲鹏数据开源库python_google_translator介绍
- lenovo vantage工具栏无反应 电池图标单击无法显示状态栏
- Spring Cloud GatewayAPI网关服务
- 2017年内容安全十大事件盘点
- ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器)
- Stomp-Spring服务器端的Web套接字Java客户端
- 总结各类损失函数【修】
- 经营你的iOS应用日志(二):异常日志
- java 编码格式 utf 8_关于java生成UTF-8编码格式文件的诡异问题
- LINUX下载编译zlib
- 网络基础之TCP/IP五层模型
- 寻找春天nbsp;九宫格日记-2012.08.03
- 贪心算法——国王游戏(洛谷P1080)
- 你的人生是先装石头还是装沙子?
- 光伏电站远程监控应用方案
- springboot(一):构建最简单的springboot项目
- 树莓派4B debian嵌入式远程连接远程控制xrdp(Ubuntu为例)
- JAVA微信公众号开发第11微信发红包
- 史玉柱高调杀回IT产业 2亿元豪赌网游征途
热门文章
- Canvas drawImage
- Linux-sed command
- [MyBatis]诡异的Invalid bound statement (not found)错误
- 不使用border-radius,实现一个可复用的高度和宽度都自适应的圆角矩形
- FireFox不支持InnerText的解决方法
- java mediator模式_Java实现中介者模式-Mediator Pattern
- 上计算机课玩游戏检讨400字,上网课玩游戏检讨书
- 直接获取Program Files目录的API
- 有关 strongSwan 的英文文档
- 模块化加载_前端模块化概述