Java之String,StringBuffer,StringBuilder

一.String

1.String是java.lang包下的一个类,不是基本数据类型

java.lang包下的不需要导包,可以直接使用:
JVM会自动加载java.lang下的类

2.String是一个final类:

String不能被继承,其方法不能被重写

String的常用方法:
先学构造:

new String("XXX");
new String(byte[],charset);
new String(byte[]);
String msg = "abc";

3. ==和equals的区别?

equals():比较的字符串的内容是否相同

引用变量1==引用变量2:
比较的两个引用指向对象的物理地址是否相同:
判断两个引用是否指向同一个对象

4. String常量池式:

在这里插入图片描述
1.首先去常量池查找有无该字符串,如果有,
直接把常量池中的字符串给当前引用

2.如果没有,则创建新字符串对象

5. String 常用的方法

String A = "饶"
String B = "饶"

A.equals(B):
//比较A和B的内容是否相同

A.equalsIgnoreCase(B):
//忽略大小写的内容比较

A.toUpperCase():String
//把字符串的内容全部转化为大写

A.toLowerCase():String
//把字符串的内容全部转化为小写

//字符串拼接:
A+B:
//A和B都可以是null

A.concat(B):
//注意:A和B都不能是null

A.length()
//获取字符串的长度

//A.indexOf(要判断的字符/字符串):
//下标
//如果没有找到返回值为-1

二.StringBuilder

1. StringBuilder是一个可变的字符序列

因为在类中提供了修改私有成员变量的方法
常用的方法是append 和 insert,就是在StringBuilder对象本身上,进行修改操作。

2. 构造方法

		1、构造方法作用:创建当前对象、将其他类型的数据,转换成当前类型
		2、StringBuilder的构造方法:
		 	StringBuilder():创建一个生成器,初始容量为16个字符
		 	StringBuilder(int capacity):创建一个生成器,初始容量为capacity大小
		 	StringBuilder(String str):创建一个生成器,初始值就是str这些字符,初始大小是str.length+16
		3、获取容积的方法:
		 	capacity()容量
		 	length():字符串的长度

3. 常用方法

添加功能:

//添加功能
//1、append(任意类型):可以将任意数据类型,转成字符串,添加到生成器中

//2、insert(int index, 任意数据类型):可以将任意数据类型,添加到指定的位置
 	
public class Demo2_添加功能 {

	public static void main(String[] args) {
		StringBuilder sb=new StringBuilder();
	//	sb.insert(1, "a");//没有1的索引。会报异常
		sb.insert(0, "a");
		sb.insert(0, "b");
		sb.append("abcd").append("abcd")
		.append("abcd").append("abcd");
		System.out.println(sb);
		//扩容规则是初始化容量*n+2
		System.out.println(sb.capacity());
		test1();
		test2();
	}
	
	public static void test1() {
		StringBuilder sb=new StringBuilder("abc");
		sb.insert(1,"xyz");
		sb.append("abcd").append("abcd").append("abcd").append("abcd");
		System.out.println(sb);
		//扩容规则是初始化容量*n+2
		System.out.println(sb.capacity());
	}
	
	public static  void test2() {
		StringBuilder sb=new StringBuilder(8);
		sb.append("xyzw").append("xyzw").append("xyzw");
		System.out.println(sb);
		//扩容规则是初始化容量*n+2
		System.out.println(sb.capacity());
	}
}

删除功能

// 1、deleteCharAt(int index) :删除指定索引的字符

// 2、delete(int start, int end):删除指定范围的字符,被删除的部分包含头不包含尾
public class Demo3_删除功能 {
	public static void main(String[] args) {
	
		StringBuilder sb=new StringBuilder("abcdefg");
		sb.deleteCharAt(1);//删除指定索引的字符串,删除之后重新索引
		System.out.println(sb);//acdefg
		sb.delete(0, 2);
		System.out.println(sb);
		
	}
}

替换和反转功能

// 1、replace(int start, int end ,String str):
// 	将字符串缓冲区中的从start开始到end-1这部分内容,替换成str
 	
// 2、reverse():将原有字符序列进行反转
public class Demo3_删除功能 {
	public static void main(String[] args) {
		StringBuilder sb=new StringBuilder("abcdefg");
		//含头不含尾
		System.out.println(sb.replace(1, 2, "你好世界"));
		//反转
		System.out.println(sb.reverse());
	}
}

三.String 和 StringBuilder拼接字符串的区别

1、使用String类型拼接字符串:时间和空间上都非常浪费,浪费的程度和数组规模相关。

2、使用StringBuilder拼接字符串:时间和空间上都非常节省,无论循环多少次,都只创建两个对象。

String和StringBuilder的相互转换:

1、String转成StringBuilder
 	1、StringBuilder的构造方法
 	2、append方法 (常用)
2、StringBuilder转成String类型
 	1、toString的方法(常用)
 	2、使用String的构造方法

	//String--->StringBuilder
	String str="abc";
	StringBuilder sb=new StringBuilder(str);
	sb.append(str);
	
	//StringBuilder---->string
	StringBuilder sb2=new StringBuilder("abc");
	String s1=sb2.toString();

	String s2=new String(sb2);

四.StringBuffer和StringBuilder的区别

1、共同点:

都是字符串的缓冲区,都是字符串的生成器,都是可变的字符序列,用法几乎一样

2、不同点:

1、出现版本不同:
 	StringBuffer在jdk1.0出现的
 	StringBuilder在jdk1.5出现的
2、线程安全性不同:
 	StringBuffer:线程安全的,同步的操作,多线程下面比较安全
 	
    StringBuilder:线程不安全的,异步操作,单线程操作
    
3、效率不同:
 	StringBuilder效率高于StringBuffer

3、使用场景

StringBuilder:在单线程操作的时候,速度最快,因为他是线程不安全的

StringBuffer:在多线程的时候使用,因为他是线程安全的

String:少量字符串操作的时候

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值