JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder
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的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder的更多相关文章
- c语言内存四区、数据存储范围和内存存储方向
(1)代码区通常是共享只读(代码无法修改)的,即可以被其他的程序调用,例如运行两个qq,除了数据不一样,代码都是一样的, 每次运行qq,都会将代码和数据加载到内存中,除了数据,每次加载的代码都是一样的 ...
- 分布式缓存系统 Memcached 数据存储slab与hashtable
缓存数据以item为基本单元,以双链表形式存放在对应级别大小的slabclass结构的chunk中.同时该item还存放在链式hashtable中bucket中,用于提供快速查找的索引. 首先是理解缓 ...
- JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!
JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...
- JAVA之旅(十)——异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别
JAVA之旅(十)--异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别 不知不觉,JAVA之旅这个系列已经更新到第十篇了,感觉如梦如幻,时间 ...
- 我的Java之旅 第五课 JAVA 语言语法 集合
JAVA集合只能存放引用类型的的数据,不能存放基本数据类型,int 可以用 Integer代替. 一.集合接口 1. Iterable<E> 实现这个接口允许对象成为 "fo ...
- 第十一章:Android数据存储(上)
数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也是开发平台必须提供的基础功能.不光是在Android平台上,在其他的平台上,数据的存储永远是不可缺少的一块.Androi ...
- 【Android开发日记】之入门篇(七)——Android数据存储(上)
在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...
- Android中的数据存储(二):文件存储 2017-05-25 08:16 35人阅读 评论(0) 收藏
文件存储 这是本人(菜鸟)学习android数据存储时接触的有关文件存储的知识以及本人自己写的简单地demo,为初学者学习和使用文件存储提供一些帮助.. 如果有需要查看SharedPreference ...
- 数据存储: sqlite,coredata plist 归档
sql 语句 结构化查询语言 通用数据库操作语言1.创建数据库create database 1407EDB2.删除数据库drop database 1407EDB3.备份use master ex ...
随机推荐
- P20 旅行助手,从未有过的至尊私人导游服务!
旅行可以让人暂时抛掉生活中的琐事,工作上的压力,寻找内心的宁静.有的人是为了想多去见识不同的事物和人文风情,有的人是想去感受大自然的馈赠,看历史古迹感受古人智慧.歌德说过:人之所以爱旅行,不是为了抵达 ...
- Java类加载器的工作原理
Java类加载器的作用就是在运行时加载类.Java类加载器基于三个机制:委托.可见性和单一性.委托机制是指将加载一个类的请求交给父类加载 器,如果这个父类加载器不能够找到或者加载这个类,那么再加载它. ...
- node之querystring模块
前言 querystring 模块提供了一些实用工具,用于解析与格式化 URL 查询字符串. 一.querystring.parse() 用于将一个查询字符串解析为JS 对象. const query ...
- Linux的哲学思想
1.一切皆文件:2.单一目的的小程序:3.组合小程序完成复杂任务:4.文本文件保存配置信息:5.尽量避免捕获用户接口:6.提供机制,而非策略. 说到底Linux的哲学思想在于方便和更好的管理后台,不同 ...
- Python小代码_11_生成小于 n 的裴波那契数列
def fib(n): a, b = 1, 1 while a < n: print(a, end=' ') a, b = b, a + b fib(100000) #输出结果 #1 1 2 3 ...
- 0428-css样式
一.CSS样式表 引入的三种方式1.内联样式:标签内部 style2.内嵌样式:<head></head>标签内部(<style></sty ...
- OpenCV RGB2LAB执行效率测试
代码 #include <iostream> #include <vector> #include <opencv2/opencv.hpp> #define ERR ...
- Microsoft Dynamics 365 Developer Toolkit下载地址
下载,支持Visual Studio 2012, 2013, 2015
- 安卓高级9 用原生intent分享
大家都用过安卓app时发现有个分享按钮如下: 所以今天特此分享用用原生完成: package qianfeng.com.simplesharedemo; import android.content. ...
- Spark Streaming中的操作函数分析
根据Spark官方文档中的描述,在Spark Streaming应用中,一个DStream对象可以调用多种操作,主要分为以下几类 Transformations Window Operations J ...