JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder
2016-06-18 15:58
591 查看
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
- duilib + cef简单浏览器的demo
- K most frequent words from a file
- Altium Designer 16 (AD16) 破解版下载 百度网盘分享 16.1.9 (Build 221) 更新
- iOS开发UI篇—Modal简单介绍
- if,continue,break,while,do-while, switch,return,foreach,for等条件语句的使用
- 解决缺少apue.h的问题
- Android UiAutomator: 从apk中启动实现方法
- Android UI设计和形成原理(实现三级菜单)
- UITableview 滚动到底部
- String、StringBuffer与StringBuilder之间区别
- suid sgid
- webpack知识,在html里通过webpack使用commonJS规范,可以require各种包
- require(),include(),require_once()和include_once()之间的区别
- 项目总结3 类似网易云音乐导航栏指示器(个性推荐、歌单等)的简单实现(一)
- dz query
- 357. Count Numbers with Unique Digits
- EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他
- Qualcomm Symphony System Manager SDK使用举例
- QT UI更改编译后,输出无变化 解决