JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder

讲完String,我们来聊聊他的小兄弟

一.StringBuffer概述

关于StringBuffer这个对象,Buffer是什么意思?缓冲区的意思,String一旦初始化时不可以被改变的,而StringBuffer是可以的,这就是区别,特点:

StringBuffer是一个容器

可以字节操作多个数据类型

最终会通过toString方法变成字符串

存储

StringBuffer append():将指定的数据作为参数添加到已有数据的结尾处

删除

StringBuffer delete(start , end)删除缓冲区的数据,包含start,不包含end

StringBuffer deleteCharAt(index)删除指定位置的字符

获取

char charAt(int index)

int indexOf(String str)

int lasrIndexOf(String str)

String subString(int start,int end)

修改

StringBuffer replace(start,end,string)

void setChatAt(int dex,char ch)

反转

String reverse()

将缓存区的数据存储到数组中

void getChars(int srcBegin,int srcEnd ,char[] dst,int dstBegin)

有着这样的特性,那我们逐步来讲一下

package com.lgl.hellojava;

//公共的 类 类名

public class HelloJJAVA {

public static void main(String[] args) {

/**

* StringBuffer

*/

StringBuffer sb = new StringBuffer();

StringBuffer append = sb.append(78);

sop(sb == append);

sop(sb.toString());

sop(append.toString());

}

/**

* 输出

*/

public static void sop(Object obj) {

System.out.println(obj);

}

}

这算是比较常见的吧,我们没必要这么麻烦,我们可以简化

sb.append("abc").append(36);

sop(sb.toString());

我们可以直接输出字符串

这个连续的方法叫做方法调用链

因为StringBuffer的特性,我们可以在里面插入数据,我现在想在a后面插入字符串,怎么实现呢?

sb.append("abc").append(36);

sb.insert(1, "lgl");

sop(sb.toString());

没错。insert,他的两个参数,一个是下标,一个是数据,这样,我们就插入成功了

我们再来聊一下删除

/**

* 删除

*/

public static void method_delete() {

StringBuffer sb = new StringBuffer("abcdefg");

sop(sb.toString());

// 删除bc

// sop(sb.delete(1, 3).toString());

// 删除d

sop(sb.deleteCharAt(3));

// 清空缓冲区

sop("all:" + sb.delete(0, sb.length()));

}

其实这些都是比较简单的

OK,按照顺序我们现在讲获取了,其实我们在将String的时候就已经讲过了,这里就不多说了。我们说修改,修改是比较经典的,修改数据我们这样写

/**

* 修改

*/

public static void method_update() {

StringBuffer sb = new StringBuffer("abcdefg");

// 替换一部分

sop(sb.replace(1, 4, "java"));

// 替换一个

sb.setCharAt(sb.length() - 1, 'k');

sop(sb.toString());

}

结果

OK,修改成功,将缓冲区存储到数组中

/**

* 将缓存区的数据存储到数组中

*/

public static void method_getchar() {

StringBuffer sb = new StringBuffer("abcdefg");

char[] chs = new char[4];

/**

* 从1开始,4结束,存在chs里,从头1开始存

*/

sb.getChars(1, 4, chs, 1);

for (int i = 0; i < chs.length; i++) {

sop("char[" + i + "] = " + chs[i] + ";");

}

}

输出的结果,嘿嘿

二.StringBuilder

这个在JDK1.5之后才有

StringBuffer:线程同步

StringBuilder:线程不同步

开发中不建议使用StringBuilder

我们看一下他的API说明:

用法差不多,就不多讲了,本篇闲到这里

有兴趣加群:555974449

java stringbuffer 转数组_JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder...相关推荐

  1. java的类型转换关键字_Java基础知识:注释、关键字、标识符、数据类型、常量、变量、数据类型转换...

    1.java中注释有三种形式 单行注释:// 多行注释:/**/ 文档注释:/** */ 2.java中的关键词(不需要记忆) 关键词的特点:均由小写字母组成,代码编辑器会给颜色提示 在这里插入图片描 ...

  2. java教学楼的属性_java设计一个父类建筑物building,由它派生出教学楼类classroom,然后采用一些数据进行测试....

    public class Building { public String bname;//建筑物名称 public int floors;//代表总层数 public double area;//代 ...

  3. java 二进制流转图片_java转发二进制图片流【原】

    packagecom.rosellete.iescp.cshop.tool.http;importjavax.servlet.http.HttpServletResponse;import java. ...

  4. java 内存读写文件_Java的文件读写操作

    file(内存)----输入流---->[程序]----输出流---->file(内存) 当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStr ...

  5. java stringbuffer数组_Java中字符数组、String类、StringBuffer三者之间相互转换

    一.StringBuffer与String的相互转换 1.将StringBuffer转换成String StringBuffer类成员toString函数可将其转换成String类型. StringB ...

  6. java stringbuffer详解_Java常用类StringBuffer详解

    内容多为最近学习的自我总结,可能有些地方写的不严谨,甚至会有错误的地方,仅供参考,如发现错误敬请指出,谢谢! 灰色字体为补充扩展内容,多为帮助自己理解. StringBuffer概述: 线程安全的可变 ...

  7. java字符串拼接例子_Java详解【String】+【StringBuilder vs StringBuffer】+【字符串拼接】...

    String详解 注意区分对象和对象的引用 首先来看一下我在jdk中找到的String源代码,这里只截取开头的小小一部分 public final class String implements ja ...

  8. java 类数组_Java常用类-字符串、日期类、算法及数组工具类等

    大家好,乐字节的小乐又和大家见面了.这次要给大家讲述的是Java常用类. 主要有以下知识点: Ø 字符串相关类(String .StringBuffer.StringBuilder) Ø 算法及数组工 ...

  9. java stringbuffer长度限制_Java中的String、StringBuffer和StringBuilder

    作为作为一个已经入了门的java程序猿,肯定对Java中的String.StringBuffer和StringBuilder都略有耳闻了,尤其是String 肯定是经常用的.但肯定你有一点很好奇,为什 ...

最新文章

  1. Remove Nth Node From End of List leetcode java
  2. 性能测试第三章-性能测试核心原理
  3. UVA10943简单递推
  4. U2L蔚然成风,曙光为什么能抢了VMware的风头?
  5. WebService只能在本地使用,无法通过网络访问的解决办法
  6. mysql命令单词_mysql命令大全
  7. Android开发学习之以CameraAPI方式实现相机功能(二)——相机功能配置
  8. 前端宽度一至显示宽度不一致_html2canvas在不同设备生成图片大小不一致问题
  9. dd wipe 命令磁盘清空shell脚本,笔记本台机MAC通用
  10. pythonreduce()函数、sorted()函数、reversed_cmp函数、类和对象
  11. 【现代通信原理笔记】6 信源编码
  12. 山水功放与音箱接线图_功放接线示意图(图文详解)
  13. python function terminated_Calibre 转换 TXT 文件出现 Errno 21 错误的解决方法 – 书伴
  14. pci-e 无线网卡 linux,Fedora14 无线网卡(瑞昱 RTL8191SE Wireless LAN 802.11N PCI-E NIC)驱动安装...
  15. 中华石杉Java面试突击第一季笔记二(分布式搜索引擎)
  16. 右键没有新建文本文件了.解决方法.
  17. eval函数和repr函数
  18. 一款极简的原生农历日期滚动选择器(小程序版本)体积小,速度快
  19. Pycharm2018激活注册码(有效期至2019.05)python
  20. Linux上安装ArcGIS for Server超详细教程——以Redhat6.5上安装ArcGIS for Server 10.3.1为例

热门文章

  1. 多层感知机MLP、RBF网络、Hopfield网络、自组织映射神经网络、神经网络算法地图
  2. matplotlib画图、如何提高图像分辨率?
  3. Error Correction and DeNovo Genome Assembly for the MinION Sequencing Reads mixing Illumina Short Re
  4. 最大公约数 最小公倍数
  5. vs2019 MFC 中 cannot open include file 'afxres.h' 问题解决方法
  6. tkinter的函数与实例
  7. 12.多线程的实现方式、线程安全问题的产生与解决以及生产者与消费者问题
  8. jquery 使用小技巧
  9. 基于Matlab的声波信号处理,基于声卡和Matlab平台的语音信号增强处理系统
  10. python 用for循环生成字典_我需要创建一个for循环来生成嵌套字典