您的位置:首页 > 产品设计 > UI/UE

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: