Java-初步认识-常用对象API(StringBuffer类-特点添加功能)

一.

这个对象以后开发中很常用,Buffer是缓冲区的意思,字符串缓冲区对象。

在java.lang包中,有StringBuffer类。缓冲区就是容器,对数据进行了临时存储,StringBuffer做就得就是这个事情。

之前学习的数组也是个容器,它也能存储东西,区别在哪里?

数组是固定长度的,StringBuffer是可变长度的。容器知识点要重点掌握,以后数据多了要存储起来使用。

数组定义完了之后,只能往里面存储同一类数据,StringBuffer可以存储不同类型数据,

append就是添加,不同的append方法很多,这里只是截图了一种。它会在缓冲区里面进行数据追加,byte和short类型的数据不可以添加(没什么事儿,short和byte类型,int都可以接收)。

添加方法append返回类型还是StringBuffer,返回的还是本类对象。

在演示添加数据的方法之前,先要建立一个缓冲区。

这个缓冲区一new出来,就能够存储16个字符。

缓冲区没啥,里面还是数组,只不过它把数组给封装了。对外提供这么一个方法,16代表着数组的长度。

想通过sb建立的s1,它们两者之间有什么联系。DOS结果显示都为4。

sb的输出结果是直接将缓冲区里面的内容变成了字符串。接着又进行sb==s1?结果显示为true。

有一个容器,把4放置在里面,返回来的依旧是容器。

通过上面截图中的方式,貌似可以不同建立s1就一样操作,但是我的疑问是,需要toString方法么

这个截图的结果是4true,打印出来的就是一个字符串。

缓冲区是用来存储字符串的,存储结束了要想用其中的数据,最终还要把它变成字符串才能用。缓冲区是用来存储数据的,存储完了,就要进行整合,变成一个大的数据,接着变成字符串才能继续使用。

缓冲区存入数据后,全都集中在一起。而数组中,是分开的。

sb.append(4)运算完了后,返回的是当前缓冲区对象,一个对象调用完方法之后,还是对象。下图就是方法调用链

这些通过append方法追加的数据,都是在尾部形成字符串的,如果想到添加到中间来怎么办?
采用insert方法,参数列表中有两个参数,插入的位置和插入的数据。

结果输出的是4hahafalse,4的位置是0,。想在哪儿放置就在哪儿放置,这就是缓冲区的特点。

字符串一旦确定就不能修改了,只有通过缓冲区可以进行变化。

DOS结果为abqqce,2的位置原先是c,现在变为qq了。

上面说了一些字符缓冲区的特点和里面所涉及的一些动作。

package stringbuffer.demo;

public class StringBufferDemo {

	public static void main(String[] args) {
		/*
		 * StringBuffer:就是字符串缓冲区
		 * 用于存储数据的容器。
		 * 特点
		 * 1.长度是可变的
		 * 2.可以存储不同类型的数据。
		 * 3.最终要转成字符串进行使用。
		 * 4.可以对字符串进行修改
		 * 
		 * 既然是一个容器,应该具备什么功能呢?
		 * 1.添加:
		 * 		StringBuffer append(data):
		 * 		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);
		 * 5.增删改查 c(create) U(update) R(read) D(dete)
		 * 	
		 * 
		 * StringBuffer();
		 * 线程安全。
		 * 
		 * 
		 * 
		 * 
		 * 
		 * 
		 */
		
//	bufferMethodDemo();
	bufferMethodDemo2();
		
	}

	public static void bufferMethodDemo2() {
		
		StringBuffer sb = new StringBuffer("abcdefgh");
		
		sb.delete(1, 3);//删除元素,包含头,不包含尾
		//清空缓冲区
//		sb.delete(0, sb.length());
		//sb = new StringBuffer//用这种方法清空内存,不合适,浪费内存
		System.out.println(sb);//adefgh
		
		sb.deleteCharAt(0);
		System.out.println(sb);//defgh
		
		sb.replace(0, 2, "gao");
		System.out.println(sb);//gaofgh
		sb.setCharAt(0, 'h');
		System.out.println(sb);//haofgh
		
		


	}

	public static void bufferMethodDemo() {
		//创建缓冲区对象。
		StringBuffer sb = new StringBuffer();
		
//		StringBuffer s1 = sb.append(4);
		
//		System.out.println(sb==s1);//true
		sb.append(4).append(false).append("haha");
		sb.insert(2, "搞");
//		sb.append(true);
		//缓冲区是存储数据的。用的话还需要转成字符串。
		System.out.println(sb);
		
	}

	
}

猜你喜欢

转载自blog.csdn.net/fighting_future/article/details/80472379