本文讲解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的使用与区别的更多相关文章

  1. Java学习笔记--String StringBuffer StringBuilder

    String StringBuffer StringBuilder String http://docs.oracle.com/javase/7/docs/api/ 中文: http://www.cn ...

  2. Java学习之String StringBuffer StringBuilder区别

    1.String:对象长度是不可变的,是线程安全. 2.StringBuffer:对象长度是可变的,是线程安全. 3.StringBuilder:对象长度是可变,不是线程安全.

  3. Java学习——String,StringBuffer和StringBuilder

    Java学习——String,StringBuffer和StringBuilder 摘要:本文主要介绍了String字符串在内存中的存储情况,以及StringBuffer和StringBuilder的 ...

  4. Java学习路径及练手项目合集

    Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 实验楼上的[Java 学习路径]中将首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE ...

  5. Java学习路径(抛光砖)

    这就是我刚刚在五孔问答中找到的Java学习路线图抛光砖价格.我个人认为,这条Java学习路线是可以的.它是2018年相对较新的Java学习路线,更符合企业就业标准. Java学习路径的第一阶段:Jav ...

  6. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  7. 【Java基础】String StringBuffer StringBuilder

    String String是不可变的 我们都知道String不是基本数据类型,而是一个对象,并且是final类型的,不可变的.(public final class String) 查看以下代码: S ...

  8. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  9. Android/Java 中的 String, StringBuffer, StringBuilder的区别和使用

    Android 中的 String, StringBuffer 和 StringBuilder 是移动手机开发中经常使用到的字符串类.做为基础知识是必须要理解的,这里做一些总结. A.区别 可以从以下 ...

随机推荐

  1. Conda 虚拟环境移植

    这时候你应该位于具有待移植的环境的服务器: 1 进入你要移植的环境 conda activate your_env 2 导出当前conda环境到某个文件(文件名字可以自定义) conda env ex ...

  2. JVM学习笔记-从底层了解程序运行(一)

    1:JVM基础知识 什么是JVM 1. java虚拟机,跨语言的平台,实现java跨平台 2. 可以实现多种语言跨平台,只要该语言可以编译成.class文件 3. 解释执行.class文件 java是 ...

  3. 记住这几个git命令就够了

    git clone: 下载初始化git add:添加git commit -m ' ' :提交 带消息git push:推送git pull: 拉取 git config --global user. ...

  4. 基于Vue.js的Web视频播放器插件vue-vam-video@1.3.6 正式发布

    前言 今日正式发布一款基于Vue.js的Web视频播放器插件.可配置,操作灵活.跟我一起来体验吧! 线上地址体验 基于vue3.0和vue-vam-video,我开发了一款在线视频播放器. 网址: h ...

  5. ssh空闲一段时间后自动断网

    ssh空闲一段时间后自动断网 用客户端工具,例如securecrt连接linux服务器,有的会出现过一段时间没有任何操作,客户端与服务器就断开了连接. 造成这个的原因,主要是因为客户端与服务器之间存在 ...

  6. js烧脑面试题大赏

    本文精选了20多道具有一定迷惑性的js题,主要考察的是类型判断.作用域.this指向.原型.事件循环等知识点,每道题都配有笔者详细傻瓜式的解析,偏向于初学者,大佬请随意. 第1题 let a = 1 ...

  7. 有关golang信道的面试笔记

    信道是一个goroutine之间很关键的通信媒介. 理解golang的信道很重要,这里记录平时易忘记的.易混淆的点. 1. 基本使用 刚声明的信道,零值为nil,无法直接使用,需配合make函数进行初 ...

  8. windows10 使用elasticsearch和kibana

    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-windows-x86_64.zip https:// ...

  9. Hadoop学习 Hadoop-HA 解释和概念介绍

    一.Hadoop-HA 1.1 Hadoop1.x带来的问题 1.单点故障 a. 每个群集只有一个NameNode,NameNode存在单点故障(SPOF). ​ b. 如果该计算机或进程不可用,则整 ...

  10. python获取线程返回值

    python获取线程返回值 前言 工作中的需求 将前端传过来的字符串信息通过算法转换成语音,并将语音文件返回回去 由于算法不是我写的,只需要调用即可,但是算法执行速度相当缓慢 我的优化思路是,将前端的 ...