ClickHouse Apache 双重检验锁 nginx反向代理 CPU variables delphi highcharts scope architecture msbuild mysql在线测试 matlab中log函数 java三维数组 ipex接口 chrome发送post请求 js对象添加元素 nikto扫描web漏洞 mysql新增用户和权限 python实例教程 python程序代码 python函数大全 java程序实例 java8函数式接口 java的socket通信 java匿名函数 jdk环境配置 javahttp php入门例子 超级兔子ie修复专家 java小程序 linux多线程编程 手机知识 js转数字 脚本网站 骰子牛牛怎么玩 古特里克的杀生刀 暴力猴 淘宝退货怎么上门取件 js添加节点
当前位置: 首页 > 学习教程  > 编程语言

java之StringBuffer类详解

2021/1/28 23:56:11 文章标签:

StringBuffer类 这里对java中的StringBuffer类做一个介绍! 知识引入部分: 字符串的特点: 字符串是常量,他们的值在创建之后不能被更改。 字符串的内容一旦发生了变化,那么马上就会创建一个新的对象。 注意: 字符串的内容不适宜频繁的修改&…

StringBuffer类
这里对java中的StringBuffer类做一个介绍!

知识引入部分:
字符串的特点: 字符串是常量,他们的值在创建之后不能被更改。

字符串的内容一旦发生了变化,那么马上就会创建一个新的对象。

注意: 字符串的内容不适宜频繁的修改,因为一旦修改,马上就会创建一个新的对象。

如果需要频繁的修改字符串的内容,建议使用字符串缓冲类(StringBuffer)。

StringBuffer 其实就是一个存储字符的容器。

案例引入:

public class Demo1 {

	public static void main(String[] args) {
		String str1 = "hello";
		String str2 = str1 + " world";
		// 字符串的内容一旦发生了变化,那么马上就会创建一个新的对象。
		System.out.println("str1与str2是同一个对象吗?"+(str1 == str2)); //false
	}
}

如果需要频繁的修改字符串的内容,建议使用字符串缓冲类(StringBuffer)。

StringBuffer 其实就是一个存储字符的容器。

StringBuffer的构造函数:
1. StringBuffer() 构造一个不带字符的字符串缓冲区,其初始容量为 16 个字符。
2. StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
3. StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

笔试题目: 使用StringBuffer无参的构造函数创建一个对象时,默认的初始容量是多少?如果长度不够用了,自动增长多少?
解答: StringBuffer底层是依赖了一个字符数组才能存储字符数据的,该字符数组默认的初始容量是16,如果字符数组的长度不够使用时,自动增长1倍+2。

StringBuffer常用的方法:

增加:
	append(boolean b) 可以添加任意类型的数据的
	insert(int offset, boolean b) 指定索引值插入对应的内容

删除:
	delete(int start, int end) 根据指定开始与结束的索引值删除对应的内容。
	deleteCharAt(int index) 根据指定的索引值删除一个字符。

修改:
	replace(int start, int end, String str) 根据指定的开始与结束的索引值把对应的位置替换成相应的内容。
	reverse() 反转字符串缓冲类的内容。
	setCharAt(int index, char ch) 把指定索引值的字符替换成对应的字符。
	substring(int start, int end) 根据指定的索引值截取子串。
	ensureCapacity(int minimumCapacity) 指定StringBuffer内部的字符数组长度的。
	
查看:
	indexOf(String str,int fromIndex) 查找指定的字符串第一次出现的索引值,并且指定开始查找的位置。
	capacity() 查看当前字符数组的长度
	charAt(int index) 根据指定的索引值查找字符
	lastIndexOf(String str,int fromIndex)
	length() 查看存储的字符个数
	toString() 把字符串缓冲类的内容转成字符串返回。

StringBuffer与 StringBuilder的相同处于不同处:

相同点:
	1. 两个类都是字符串缓冲类。
	2. 两个类的方法都是一致的。
	
不同点: 
	1. StringBuffer是线程安全的,操作效率低,StringBuilder是线程非安全的,操作效率高。
	2. StringBuffer是jdk1.0出现的,StringBuilder是jdk1.5的时候出现的。

推荐使用: StringBuilder,因为操作效率高。

代码笔记:

public class Demo2 {

	public static void main(String[] args) {
		// 先使用StringBuffer无参的构造函数创建一个字符串缓冲类。
		StringBuffer stringBuffer = new StringBuffer();
		stringBuffer.append("javaabcjavaabcajahd");
		/* 添加的方法
		stringBuffer.append(true);
		stringBuffer.append(3.14f);*/

		// 插入的方法
		//stringBuffer.insert(2, "小明");

		/*//删除的方法
		stringBuffer.delete(2, 4); //删除的时候也是包头不包尾
		//根据指定的索引值删除一个字符。
		stringBuffer.deleteCharAt(3);*/
		
		/*//修改的方法
		stringBuffer.replace(2, 4, "陈大富"); //替换字符串对应位置的内容
		stringBuffer.reverse(); //反转字符串的内容
		stringBuffer.setCharAt(3, '红');
		String subString = stringBuffer.substring(2,4);
		System.out.println("子串的内容是: "+subString);
		stringBuffer.ensureCapacity(20); 指定字符串缓冲类中字符数组的长度。
		*/
		
		//查看的方法
		int index = stringBuffer.indexOf("abc",0);
		System.out.println("索引值为: "+index);
		
		System.out.println("查看字符数组的长度: "+stringBuffer.capacity());
		System.out.println("存储的字符个数: "+stringBuffer.length());
		System.out.println("根据指定的索引值查找字符: "+stringBuffer.charAt(2));

		System.out.println("字符串缓冲类的内容: " + stringBuffer);
		
		test(stringBuffer.toString());
	}
	
	//若test方法需要接收一个字符串,这时就需要toString方法把StringBuffer里面的内容转换成字符串返回。
	public static void test(String str) {
		
	}
}

分享到此结束!!!


本文链接: http://www.dtmao.cc/news_show_650328.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?