Java字符串知识汇总

String类


从String对象中获取字符或字符数组
String str = "happy birthday";
//获取str中下标为4的字符 'y'
System.out.println(str.charAt(4));

//创建一个字符数组
char chardst[] = new char[15];
//从str中获取下标为8~14(左闭右开)的字符串,置于chardst字符数组中
str.getChars(8, 14, chardst, 0);
System.out.println(chardst);	// "rthday"

字符串的比较

str1.compareTo(str2)

//str1与str2比较,区分大小写。
//  > 0 表示: str1 > str2
//  == 0 表示: str1 == str2
//  < 0 表示: str1 < str2
str1.compareTo(str2);

//字符串str1与str2比较。忽略大小写,即不区分大小写。
str1.compareToIgnoreCase(str2);

str1.equals(str2)

//str1与str2是否相等,区分大小写。
//  == 0 表示: str1 == str2
//  != 0 表示: str1 != str2
str1.equals(str2);

//字符串str1与str2是否相等。忽略大小写,即不区分大小写。
str1.equalsIgnoreCase(str2);

字符串与其他类型的转换
//字符串转换为其他数据类型
Integer.parseInt("2000");
Long.parseLong("2000");
Float.parseFloat("3.1415926");
Double.parseDouble("3.1415926");

//其他数据类型转换为字符串
String str = String.valueOf(i);	//i指其他类型
i.toString();
字符串与字符数组互相的转换
String str = "abcdefg";
// 字符串转换为字符数组
char[] chstr = str.toCharArray();

// 字符数组转换为字符串
String strch = String.valueOf(chstr);

字符串查找
//查找字符ch第一次出现的下标 / 最后一次出现的下标
str.indexOf(char ch) / str.lastIndexOf(char ch)
//查找在指定索引之后的第一次ch出现的下标 / 指定索引之前的最后一次
str.indexOf(char ch, int beginIndex) / str.lastIndexOf(char ch, int beginIndex)

String str = "helloheelhappy";
System.out.println(str.indexOf('h',6));	// 9
System.out.println(str.lastIndexOf('h',6));	// 5
//查找str中第一次出现字符串str的开始下标 / 最后一次的开始下标
str.indexOf(String str) / str.lastIndexOf(String str)

String str = "heelhappyheelhappy";
System.out.println(str.indexOf("lha"));	//3
System.out.println(str.lastIndexOf("lha"));	//12
//查找在指定索引之后的第一次str出现的开始下标 / 指定索引之前的最后一次
str.indexOf(String str, int beginIndex) / str.lastIndexOf(String str, int beginIndex)

String str = "heelhappyheelhappy";
System.out.println(str.indexOf("lha", 7));	//12
System.out.println(str.lastIndexOf("lha", 7));	//3

截取、拆分

substring 与 split

String str = "hello, today is Monday";
// 截取字符串str中0~8(左闭右开)的字符串片段
str.substring(0,8);	// "hello, t"
//以空格分隔
String strarr[] = str.split(" ");
for (int i = 0; i < strarr.length; i++)
	System.out.println(strarr[i]);

替换、修改

concat, toLowerCase, toUpperCase, replace

String str = str1.concat(str2);	//合并str1与str2字符串
str.toUpperCase();	//全部大写
str.toLowerCase();	//全部小写

replaceFirst()方法区分大小写。
使用"(?i)"可以不区分大小写,如str1。

String str = "Hello, hEllo";
String str1 = str.replaceFirst("(?i)HELLO", "Bye");	//Bye, hEllo
String str2 = str.replaceFirst("(?-i)HELLO", "Bye"); //Hello, hEllo
String str3 = str.replaceFirst("hEllo", "Bye");	//Hello, Bye



StringBuffer类


创建字符串
  • StringBuffer类是字符串缓冲区,每个字符串缓冲区都有一定的容量,即存储空间。
  • 只要字符串缓冲区的序列长度没有超出该容量,就不需要新分配内部缓冲数组。如果容量不足导致溢出,则此容量自动增大。
  • StringBuffer创建的字符串的容量在长度基础上+16.
StringBuffer str = new StringBuffer("happy");
//获取str的长度 5
System.out.println("str.length = " + str.length());
//获取str容量 21
System.out.println("str capacity = " + str.capacity());

  • 注意一下两段代码的区别,以更好理解StringBuffer类的length和capacity。

第一段代码中设置长度为10,超过strbuff的容量,所以为其申请新的容量;
而第二段代码中,第一次设置的长度为3,没有超过容量,所以不需要申请额外的容量。

StringBuffer strbuff = new StringBuffer(8);
System.out.println(strbuff.length());	// 0
strbuff.append("abcdefg");
System.out.println(strbuff.length());	// 7
System.out.println(strbuff.capacity());	//8

strbuff.setLength(10);
System.out.println(strbuff.length());	// 10
System.out.println(strbuff.capacity());	// 18
System.out.println(strbuff);	//abcdefg

strbuff.setLength(3);
System.out.println(strbuff.length());	// 3
System.out.println(strbuff.capacity());	// 18
System.out.println(strbuff);	//abc
StringBuffer strbuff = new StringBuffer(8);
System.out.println(strbuff.length());	// 0
strbuff.append("abcdefg");
System.out.println(strbuff.length());	// 7
System.out.println(strbuff.capacity());	//8

strbuff.setLength(3);
System.out.println(strbuff.length());	// 3
System.out.println(strbuff.capacity());	// 8
System.out.println(strbuff);	//abc

strbuff.setLength(10);
System.out.println(strbuff.length());	// 10
System.out.println(strbuff.capacity());	// 18
System.out.println(strbuff);	//abc

替换、删除、获取子字符串

StringBuffer类对象可以在本对象中添加、删除、修改。这是其与String类的区别。

StringBuffer strbuff = new StringBuffer();
strbuff.append("happy birthday to you");
System.out.println(strbuff.length());	// 21
System.out.println(strbuff.capacity());	// 34

// 替换下标的字符
strbuff.setCharAt(15, '!');	//替换下标为15的字符
System.out.println(strbuff);	// happy birthday !o you

// 替换指定区间0~5(左闭右开)的字符串
strbuff.replace(0, 5, "That");
System.out.println(strbuff);	// That birthday !o you
		
//StringBuffer的getChars方法,获取一段子字符串
char chardst[] = new char[10];
strbuff.getChars(3, 12, chardst, 0);	
System.out.println(chardst);	// t birthda

System.out.println(strbuff.length());	// 20

// 删除15~21(左闭右开)的字符串
strbuff.delete(15, strbuff.length());
System.out.println(strbuff);	// That birthday !

// 删除下标为2的字符
strbuff.deleteCharAt(2);
System.out.println(strbuff);	// Tht birthday !

添加 append()

StringBuffer类的append()与String类的concat()方法类似。其区别在于StringBuffer类不需要创建新的字符串对象,是在原有字符串的基础上修改的;而String类会创建新的字符串对象。

StringBuffer strbuff = new StringBuffer();
strbuff.append("...");

插入 insert()
StringBuffer strbuff = new StringBuffer();
strbuff.insert(index, str);	//在下标为index的地方插入str,后面的元素向后移
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值