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 ...
随机推荐
- 找到一个牛的一逼的,超简易ssm和ssh的学习网址
http://how2j.cn 蛋疼的是,我早就用springboot了!不过,可以给公司新人看.
- python显示中文出错以及抛出UnicodeDecodeError的处理办法
程序开头粘贴如下代码即可: # -*- coding:utf-8 -*- import sys default_encoding = 'utf-8' if sys.getdefaultencoding ...
- 利用JAVA多线程来提高数据处理效率
肿瘤大数据挖掘中经常需要处理上百亿行的文本文件,这些文件往往高达数百GB,假如文件结构简单统一,那么用sed和awk 处理是非常方便和快速的.但有时候会遇到逻辑较为复杂的处理流程,这样我一般会用JAV ...
- Node.js 网络
稳定性: 3 - 稳定 net 模块提供了异步网络封装,它包含了创建服务器/客户端的方法(调用 streams).可以通过调用 require('net') 包含这个模块. net.createSer ...
- Android源码解析——AsyncTask
简介 AsyncTask 在Android API 3引入,是为了使UI线程能被正确和容易地使用.它允许你在后台进行一些操作,并且把结果带到UI线程中,而不用自己去操纵Thread或Handler.它 ...
- 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
在上篇博客初识Spring Boot框架中我们初步见识了SpringBoot的方便之处,很多小伙伴可能也会好奇这个Spring Boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单 ...
- Android ocr识别文字介绍(文字识别)
最近在做身份证号码识别,在网上搜索的一番后发现目前开源的OCR中tesseract-ocr算是比较强大的了,它由HP于1985年到1995年间开发,后来由google直接负责,经过谷歌进一步开发后,目 ...
- Servlet常用操作(基础)
----------------------------------------------------------------------------------------------[版权申明: ...
- Angularjs + Bootstrap 制作的一个TODO List
看了一个关于Angularjs的视频,视频内容讲解的是如何制作一款TODO list形式的SPA(Simple Page Application,单页面应用).为了增强理解,下面写了一篇文章,用以复习 ...
- syslog(),closelog()与openlog()--日志操作函数
在典型的 LINUX 安装中,/var/log/messages 包含所有的系统消息,/var/log/mail 包含来自邮件系统的其它日志消息,/var/log/debug 可能包含调试消息.根据你 ...