*09-常用对象API(StringBuffer类-特点&添加功能)
*10-常用对象API(StringBuffer类-插入&删除&查找&修改)
操作容器进行删除。
* 2,删除:
* StringBuffer delete(start,end):包含头,不包含尾。
* StringBuffer deleteCharAt(int index):删除指定位置的元素
清空缓冲区:
//清空缓冲区。
// sb.delete(0,sb.length());
// sb = new StringBuffer();
* 3,查找:
* char charAt(index);
* int indexOf(string);
* int lastIndexOf(string);
* 4,修改:
* StringBuffer replace(start,end,string);
* void setCharAt(index,char);
----------------------------小结------------------------------
package cn.itcast.p2.stringbuffer.demo;
public class StringBufferDemo {
/**
* @param args
*/
public static void main(String[] args) {
/*
* StringBuffer:就是字符串缓冲区。
* 用于存储数据的容器。
* 特点:
* 1,长度的可变的。
* 2,可以存储不同类型数据。
* 3,最终要转成字符串进行使用。
* 4,可以对字符串进行修改。
*
*
* 既然是一个容器对象。应该具备什么功能呢?
* 1,添加:
* StringBuffer append(data);//short、byte不能添加。
* StringBuffer insert(index,data);
* 2,删除:
* StringBuffer delete(start,end):包含头,不包含尾。
* StringBuffer deleteCharAt(int index):删除指定位置的元素
* 3,查找:
* char charAt(index);
* int indexOf(string);
* int lastIndexOf(string);
* 4,修改:
* StringBuffer replace(start,end,string);
* void setCharAt(index,char);
*
* 增删改查 C(create)U(update)R(read)D(delete)
*
*
*
*/
bufferMethodDemo_2();
}
private static void bufferMethodDemo_2() {
StringBuffer sb = new StringBuffer("abce");
// sb.delete(1, 3);//ae
//清空缓冲区。
// sb.delete(0,sb.length());
// sb = new StringBuffer();
// sb.replace(1, 3, "nba");
// sb.setCharAt(2, 'q');
// sb.setLength(10);
// System.out.println("sb:"+sb);
// System.out.println("len:"+sb.length());
System.out.println(sb.reverse());
}
private static void bufferMethodDemo_1() {
StringBuffer sb = new StringBuffer("abce");
// sb.append("xixi");
sb.insert(2, "qq");
System.out.println(sb.toString());
}
public static void bufferMethodDemo(){
//创建缓冲区对象。
StringBuffer sb = new StringBuffer();
sb.append(4).append(false);//.append("haha");
sb.insert(1, "haha");
// sb.append(true);
System.out.println(sb);
}
}
反转:
*11-常用对象API(StringBuffer类-可变长度数组)
小插曲:
可变长度数组的原理:
区别是效率。
*12-常用对象API(StringBuilder类)
StringBuffer 1.0之后就有。StringBuilder 是1.5之后出来的。
区别是:
StringBuffer线程安全。StringBuilder线程不安全。
StringBuffer是怎么同步的?
class StringBuffer jdk1.0
{
object lock;
public StirngBuffer append(int x)
{
synchronized(lock)
{
}
}
public synchronized StringBuffer delete(int start,int end)
{
synchronized(lock)
{
}
}
}
慢。调用一次方法都会判断锁一次。只是考虑了安全。
因此在单线程的情况下,可以用StringBuilder。
<span style="white-space:pre"> </span>/*
* jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder
*
* 不同的是:
* StringBuffer是线程同步的。通常用于多线程。
* StringBuilder是线程不同步的。通常用于单线程。 它的出现提高效率。
*
* jdk升级:
* 1,简化书写。
* 2,提高效率。
* 3,增加安全性。
*/
*13-常用对象API(StringBuilder类-练习)
StringBuffer 和StringBulider什么时候用呢?
/**
* 将一个int数组变成字符串。
*/
public static String arrayToString(int[] arr){
String str = "[";
for (int i = 0; i < arr.length; i++) {
if(i!=arr.length-1)
str+=arr[i]+", ";
else
str+=arr[i]+"]";
}
return str;
}
public static String arrayToString_2(int[] arr){
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if(i!=arr.length-1)
sb.append(arr[i]+", ");
else
sb.append(arr[i]+"]");
}
return sb.toString();
}