【java】学习路径17-StringBuffer、StringBuilder的使用与区别
本文讲解StringBuffer和StringBuilder的使用与区别。
1-- String
String类型我们已经很熟悉了,String一旦被赋值,其在堆中的数据便无法修改。
平时我们的“修改”都是直接在堆中创建一个新的字符串常量,然后重新引用这个新的字符串常量的。
//String 构造方法一旦被赋值,就不能被修改
String s1 = "remoo";
s1 = "aaa";
String s2 = new String("REMMO");
String s3 = new String(new char[] {'a','b'});
2-- StringBuffer
2-1 存储位置
与String不同的是StringBuffer的是可以被修改的。
StringBuffer也是储存在堆中,但是是在一个叫“缓冲区”的地方。
2-2 构造方法
构造方法有很多中,这里介绍两种。
StringBuffer sb = new StringBuffer("remoo");
StringBuffer sb1= new StringBuffer(10);//直接指定容量
第一种其实和String是一模一样的,不多介绍。
第二种是在开头指定了大小的。
2-3 append()方法
在原有的字符串后面增加。
sb.append(".rem");//追加字符串
那么现在sb存储的就是:remoo.rem
append()也可以接收各种数据。
sb.append('o');
sb.append(100f);
sb.append(true);
现在存储的则是:remoo.remo100.0true
2-4 链式编程
这个比较好理解。
sb.append(true).append("链式调用").append("——链式编程");
现在存储的则是:remoo.remo100.0truetrue链式调用—链式编程
2-5 capacity()
sb.capacity()
返回的是当前sb占用的字节数。
2-6 自动扩容机制
我们不用担心存不下,如果当前内存块被写满了,则会自动扩容。
如果下一个内存地址被占用,无法扩容时,则会重新开辟内存地址,新开辟的容量一般是原来的一倍。
那么在申请新的地址的时候,必然会花费不少时间
大家可以用capacity方法检查一下。
2-7 delete方法
通过索引删除字节。
sb1.delete(0,3);//使用索引删除开始包含,结束不包含。
效果 :
调用前:12345678901
调用后:45678901
2-8 insert方法
通过索引插入字符串。
sb1.insert(3, "qqq");//在第三个字符处加..
调用前:45678901
调用后:456qqq78901
2-9 subString方法
通过索引获取
Show(sb1.substring(0,3));
返回456
2-10 replace方法
sb1.replace(0,3,"!");
调用前:456qqq78901
调用后:!qqq78901
3-- StringBuilder
使用起来和StringBuffer一模一样!
4-- StringBuffer和StringBuilder的区别
//线程安全相关的问题,后面具体说
//StringBuffer安全,但是效率没有Builder高
//多线程最好使用Buffer
【java】学习路径17-StringBuffer、StringBuilder的使用与区别的更多相关文章
- Java学习笔记--String StringBuffer StringBuilder
String StringBuffer StringBuilder String http://docs.oracle.com/javase/7/docs/api/ 中文: http://www.cn ...
- Java学习之String StringBuffer StringBuilder区别
1.String:对象长度是不可变的,是线程安全. 2.StringBuffer:对象长度是可变的,是线程安全. 3.StringBuilder:对象长度是可变,不是线程安全.
- Java学习——String,StringBuffer和StringBuilder
Java学习——String,StringBuffer和StringBuilder 摘要:本文主要介绍了String字符串在内存中的存储情况,以及StringBuffer和StringBuilder的 ...
- Java学习路径及练手项目合集
Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 实验楼上的[Java 学习路径]中将首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE ...
- Java学习路径(抛光砖)
这就是我刚刚在五孔问答中找到的Java学习路线图抛光砖价格.我个人认为,这条Java学习路线是可以的.它是2018年相对较新的Java学习路线,更符合企业就业标准. Java学习路径的第一阶段:Jav ...
- 重温java中的String,StringBuffer,StringBuilder类
不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...
- 【Java基础】String StringBuffer StringBuilder
String String是不可变的 我们都知道String不是基本数据类型,而是一个对象,并且是final类型的,不可变的.(public final class String) 查看以下代码: S ...
- 浅谈 Java 字符串(String, StringBuffer, StringBuilder)
我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...
- Android/Java 中的 String, StringBuffer, StringBuilder的区别和使用
Android 中的 String, StringBuffer 和 StringBuilder 是移动手机开发中经常使用到的字符串类.做为基础知识是必须要理解的,这里做一些总结. A.区别 可以从以下 ...
随机推荐
- 腾讯云数据库TDSQL-大咖论道 | 基础软件的过去、现在、未来
近十年来,中国基础软件发展势头迅猛,市场前景看高,越来越多的企业也正在进行基础软件升级.那中国基础软件行业目前在国际市场上有什么优势,面临哪些困境,以及未来基础软件行业会如何发展呢?腾讯云数据库邀请沙 ...
- 李呈祥:bilibili在湖仓一体查询加速上的实践与探索
导读: 本文主要介绍哔哩哔哩在数据湖与数据仓库一体架构下,探索查询加速以及索引增强的一些实践.主要内容包括: 什么是湖仓一体架构 哔哩哔哩目前的湖仓一体架构 湖仓一体架构下,数据的排序组织优化 湖仓一 ...
- VisionPro · C# · 界面显示视觉结果图像
程序界面通过 CogRecordDisplay 控件显示视觉运行结果图像. 按指定图像显示,代码如下: using System; using System.Windows.Forms; using ...
- 018(Phone List)(字典树)
题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1471 题目思路: 这不就是一个超级明显的字典树嘛 字典树,又称单词查找树,Trie树,是一种树形 ...
- 013(oulipo)
题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1455 题目描述:在母串里找子串出现的次数 题目思路:与字符串的搜索有关那就立刻找到哈希 从s[1 ...
- Springboot 整合 MongoDB
Springboot 整合 MongoDB 这节我们将整合 Spring Boot 与 Mongo DB 实现增删改查的功能,并且实现序列递增. Mongo DB 的基本介绍和增删改查的用法可以参考我 ...
- 梯度下降GD,随机梯度下降SGD,小批量梯度下降MBGD
阅读过程中的其他解释: Batch和miniBatch:(广义)离线和在线的不同
- 创建多线程程序的第一种方式_创建Thread类的子类
创建多线程程序的第一种方式:创建Thread类的子类java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类 实现步骤: 1.创建一个Thread类的子类 ...
- 小米社区APP深度体验
小米社区APP深度体验 版本:3.0.210928 BUG 1,在暗黑模式下,会员一栏中的成就等级小字未作深色模式调整,从而造成文字难于识别. 2,在暗黑模式下,会员页中底部的会员产品首页视觉没有完美 ...
- Java方法的重写
package Demo.oop.APP.Demo04; //启动器 public class application { public static void main(String[] args) ...