Java码农进阶之路~StringBuilder&StringBuffer&全线修饰符

一 StringBuilder与StringBuffer
StringBuffer -- JDK1.0 出来的,线程是安全的,耗费系统资源
StringBuilder -- JDK1.5出来的,线程不安全,节省系统资源

StringBuilder与StringBuffer都是可变的字符序列(修改的是对象本身)

操作StringBuffer的方法 一般是没有返回值

String线程不安全,不可变的字符序列(不能修改字符串本身)

1).StringBuffer方法

1.创建方式,拼接,获取长度,转字符串

public static void fun1() {
	//创建一个StringBuffer对象 
	StringBuffer sb = new StringBuffer();
	//容量 默认容量16
	System.out.println(sb.capacity());
	//长度
	System.out.println(sb.length());
	//拼接
	StringBuffer buffer = sb.append("wanglong").append(false);
	System.out.println(sb);
	//StringBuffer转换成 字符串类型
	String string = sb.toString();
	System.out.println(string);
}

2.插入,修改

public static void fun2() {
	//插入
	StringBuffer sb = new StringBuffer("wanglong");
	sb.insert(4, "da").append("nb");
	System.out.println(sb);//"wangdalongnb"
	//修改
	sb.setCharAt(1, 'x');
	System.out.println(sb);"wxngdalongnb"
}

3.删除 

 删除一段字符时,包头不包尾 (尾坐标可以越界,相当于清空字符串. 起始坐标 >= 0)

删除单个字符时,输入的是要删除的字符的角标

StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("wanglong");
//删除 --- 包头不包尾	尾坐标可以越界(相当于清空字符串),起始坐标 >= 0
stringBuffer.delete(0, 4);
System.out.println(stringBuffer);
//注意:传入的是要删除的字符的角标
stringBuffer.deleteCharAt(2);
System.out.println(stringBuffer);

4.字符数组 转化成 StringBuffer对象 -- 先转出字符串类型,再转出StringBuffer对象

char[] array = {'a','b','c'};
String string = String.valueOf(array);
StringBuffer sb = new StringBuffer(string);
System.out.println(sb);

5.反转

public static void fun4() {
	//从键盘输入一个字符串 将字符串反转
	System.out.println("请输入字符串");
	Scanner scanner = new Scanner(System.in);
	String string = scanner.nextLine();//"abcdefg"
	//转换成StringBuffer对象
	StringBuffer sb = new StringBuffer(string);
	//反转
	sb.reverse();
	System.out.println(sb);//"gfedcba"
}

6.替换

public static void fun5() {
	//替换
	StringBuffer sBuffer = new StringBuffer();
	sBuffer.append("wanglong");
	sBuffer.replace(0, 4, "lixiao");//"lixiaolong"
	System.out.println(sBuffer);
}
2).三个操作字符串的类 当做参数时的效果
public static void main(String[] args) {
	//字符串在当参数的时候,和基本数据类型一样
	//值传递 基本数据类型的包装类
	String string = "wanglong";
	fun1(string);
	System.out.println(string);
		
	//相当于传进去的是对象的地址
	StringBuffer sBuffer = new StringBuffer("wanglong");
	fun2(sBuffer);
	System.out.println(sBuffer);
		
	StringBuilder sBuilder = new StringBuilder("wanglong");
	fun3(sBuilder);
	System.out.println(sBuilder);
}
public static void fun1(String str) {
	str = "haha";
}
public static void fun2(StringBuffer sb) {
	sb.append("haha");
}
public static void fun3(StringBuilder sb) {
	sb.append("haha");
}

3).为什么系统要给基本数据类型增加包装类?

有类 技能增加成员方法,静态方法

public class Demo04 {
	public static void main(String[] args) {
//		fun1();
		//如果值在[-128,127]之间
		//实际上 是从 系统已经创建好的数组
		//取出一个值给你
		//超过这个 范围 会新建一个对象给你
		//所以下面的两个对象 地址不同
//		Integer.valueOf(10);
		Integer num1 = -129;//Integer.valueOf
		Integer num2 = -129;//intValue
		System.out.println(num1 == num2);
		System.out.println(num1.equals(num2));
	}
	public static void fun1() {
		//创建一个Integer
		Integer n1 = new Integer(10);
		//转化成数字
		int i = n1.intValue();
		System.out.println(i);
		
		//一般直接用数字来声明
		//JDK1.5 自动装箱 和 自动拆箱
		//实际上 系统帮你调用了一个方法
		//Integer.valueOf()方法
		Integer n2 = 10;
		//运算的时候 会进行自动拆箱
		//n2.intValue()
		int sum = n2 + 5;
		System.out.println(sum);
	}
}
二 全线修饰符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值