JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder
JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder
一.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说明:
用法差不多,就不多讲了,本篇闲到这里
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
早期(编译器)优化
一、概述 前端编译器:把.java文件转变成.class文件的过程,Sun的JavacJIT编译器:后端运行期编译器(Just in time Compiler ),把字节码转变成机器码,HotSpot VM的C1、C2编译器AOT编译器:直接吧.java文件编译成本地机器码代码 本章接仅限于第一种编译过程 二、Javac编译器 编译过程分为3个过程 解析与填充符号表过程 插入式注解处理器的注解处理过程 分析与字节码生成过程 1、解析与填充符号表 解析步骤包括词法分析、语法分析两个过程 词法分析是将源代码的字符流转变为标记(Token)集合,单个字符是程序编写过程的最小元素,而标记则是编译过程的最小元素,关键字、变量名、字面量、运算符都可以成为标记。 语法分析是根据标记序列构造抽象语法树(Abstract Syntax Tree)的过程,抽象语法树是一种用来描述程序代码语法结构的树形表示方式,语法树的每一个节点都代表着程序代码中的一个语法结构,例如包、类型、修饰符、运算符、接口、返回值甚至代码注解。 符号表(Symbol table)是由一组符号地址和符号信息构成的表格 2、注解处理器...
- 下一篇
Association, Composition and Aggregation in UI5, CRM, S/4HANA and C4C
UI5 UI5使用Association和Aggregation描述控件之间的关系。 Aggregation:parent和子控件在lifecycle上存在依赖关系: When a ManagedObject is destroyed, all aggregated objects are destroyed as well and the object itself is removed from its parent. That is, aggregations won't contain destroyed objects or null/undefined. 比如UI5的转盘控件Carousel: 一旦转盘被析构,里面显示的page当然也没有继续存在的意义了,需要跟着被析构。 而Association描述了在lifecycle层面的一种soft dependency关系: Managed associations also form a relationship between objects, but they don't define a lifecycle for the...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8安装Docker,最新的服务器搭配容器使用
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音