Skip to content

String类

1908字约6分钟

java

2024-10-24

1.定义:

实现了CharSequence接口的类(CharBuffer、Segment、StringBuffer、StringBuilder)

2.字符串的操作

1.创建字符串

四种方式

// 字符串的定义
String s1 = "字符串s1";
String s2 = new String("abc s2");
char[] char1 = {'c','h','a','r','s','3'};
String s3 = new String(char1);

2.字符串的拼接

两种方式

// 字符串的拼接,在字符尾部拼接
String s4 = s1 + s2;
String s5 = s2.concat(s3);

3.字符串的其他操作

1.charAt(int index) 取出字符串指定下标的字符

// charAt(int index) 取出字符串指定下标的字符
System.out.println(s1.charAt(0));
// 取出下标为0的字符
/*输出为:
 *字
 */

2.codePointAt(int index) 返回字符串指定下标的字符的Unicode值

// codePointAt(int index) 返回字符串指定下标的字符的Unicode值
System.out.println(s1.codePointAt(0));
// 取出下标为0的字符对应的Unicode码
/*输出为:
 *23383
 */

3.compareTo(String s) 返回字符串与字符串s的差值(字典顺序比较)

// compareTo(String s) 返回字符串与字符串s的差值(字典顺序比较)
String str = "abc";
String str1 = "bbc";
System.out.println(str.compareTo(str1));
/*输出为:
 *-1
 */

4.compareToIgnoreCase(String s) 不区分大小写返回字符串1与字符串2的差值(字典顺序比较)

用于验证码的不区分大小写

// compareToIgnoreCase(String s) 不区分大小写返回字符串1与字符串2的差值(字典顺序比较)
// 用于验证码的不区分大小写
String ss = "ABC";
System.out.println(ss.compareToIgnoreCase(str1));
/*输出为:
 *-1
 */

5.contains(String s) 判断一个字符串有无包含另一个字符串s

String sss = "BC";
System.out.println(ss.contains(sss) == true);
/*输出为:
 *true
 */

6.contentEquals(String s) 判断两个字符串是否相等

// contentEquals(String s) 判断两个字符串是否相等
System.out.println(ss.contentEquals(sss) == false);
/*输出为:
 *true
 */

7.equalsIgnoreCase(String s) 忽略大小写比较字符串

// equalsIgnoreCase(String s) 忽略大小写比较字符串
System.out.println(str.equalsIgnoreCase(ss) == true);
/*输出为:
 *true
 */

8.String.formatformat(String format, Object... args) 字符串的格式化

...表示可以有任意多个参数

// String.formatformat(String format, Object... args)  字符串的格式化
// ...表示可以有任意多个参数
int age = 18;
String name = "张三";
System.out.println(String.format("我叫%s,今年%d岁",name,age));
/*输出为:
 *我叫张三,今年18岁
 */

9.将其他类型转为String

9.1 拼接空字符串

int i = 1234567;
String s = i+"";
System.out.println(s+"是个"+s.length()+"位数");
/*输出为:
 *1234567是个7位数
 */

不太正规

9.2 String.valueOf()方法

// 2.String.valueOf()方法
String st = String.valueOf(i);
System.out.println(st+"是个"+st.length()+"位数");
/*输出为:
 *1234567是个7位数
 */

10.getBytes() 将字符串转为byte数组

// getBytes() 将字符串转为byte数组
System.out.println(str);
for (int j = 0; j < str.getBytes().length; j++) {
	System.out.print(str.getBytes()[j]+" ");
}
System.out.println();
/*输出为:
 *abc
 *97 98 99 
 */

11.startsWith(String s) 判断字符串是否以某个字符串开头

// startsWith(String s) 判断字符串是否以某个字符串开头
System.out.println(str.startsWith("a") == true);
/*输出为:
 *true
 */

12.endsWith(String s) 判断字符串是否以某个字符串结尾

// endsWith(String s) 判断字符串是否以某个字符串结尾
System.out.println(str.endsWith("c") == true);
/*输出为:
 *true
 */

13.getChars(int oldStart,int oldEnd, char[] ch,int newStart)

将此字符串中的字符复制到目标字符数组中

// getChars(int oldStart,int oldEnd, char[] ch,int newStart)
// 将此字符串中的字符复制到目标字符数组中。
char[] c1 = new char[3];
str.getChars(0, str.length(), c1, 0);
for (int j = 0; j < c1.length; j++) {
	System.out.print(c1[j]+" ");
}
System.out.println();
/*输出为:
 *a b c 
 */

14.isEmpty() 判断字符串是否为空

// isEmpty() 判断字符串是否为空
System.out.println(str.isEmpty() == false);
/*输出为:
 *true
 */

15.indexOf(String s) 返回指定子字符串最后一次出现的字符串中的索引

// indexOf(String s) 返回指定子字符串最后一次出现的字符串中的索引。
System.out.println(str.indexOf("c") == 2);
/*输出为:
 *true
 */

16.replace(String oldStr,String newStr)替换字符串中的某个子串

// replace(String oldStr,String newStr)替换字符串中的某个子串
System.out.println(str);
System.out.println(str.replace("b", "bbb"));
/*输出为:
 *abc
 *abbbc
 */

17.split(String s) 以s为界限截取字符串为字符串数组

// split(String s) 以s为界限截取字符串为字符串数组
String ssss = "a,b,c,d,e,f";
String[] c2 = ssss.split(",");
for (int j = 0; j < c2.length; j++) {
	System.out.print(c2[j]+" ");
}
System.out.println();
/*输出为:
 *a b c d e f 
 */

18.返回字符串的子串

18.1 substring(int start) 返回指定下标开始的子串

// substring(int start) 返回指定下标开始的子串
System.out.println(s1.substring(1));
/*输出为:
 *符串s1
 */

18.2 substring(int start,int end) 返回指定下标区间的子串(左闭右开)

// substring(int start,int end) 返回指定下标区间的子串(左闭右开)
System.out.println(s1.substring(1,3));
/*输出为:
 *符串
 */

19.toLowerCase() 将字符串转为小写

// toLowerCase() 将字符串转为小写
System.out.println(ss.toLowerCase());
/*输出为:
 *abc
 */

20.toUpperCase() 将字符串转为大写

// toUpperCase() 将字符串转为大写
System.out.println(str.toUpperCase());
/*输出为:
 *ABC
 */

21.trim() 去除字符串两端的不可见字符

// trim() 去除字符串两端的不可见字符
String test = "\t abcd efg \t";
System.out.println(test.trim());
/*输出为:
 *abcd efg
 */

StringBuffer类

常用函数

1.append() 在字符串后面追加一个变量(int、boolean、char、char[]、CharSequence、double、float、long、String、Object、StringBuffer)

追加后不会产生新的字符串

// append(int i) 在字符串后面追加一个数字并转换为字符串
// 追加后不会产生新的字符串
StringBuffer sb  = new StringBuffer("abcdefg");
for (int i = 0; i < 10; i++) {
	sb.append(i);
}
System.out.println(sb);
/*输出为:
 *abcdefg0123456789
 */

2.delete(int start,int end) 删除指定下标区间的字符

// delete(int start,int end) 删除指定下标区间的字符
StringBuffer sb1  = new StringBuffer("abcdefg");
System.out.println(sb1.delete(2, 6));
/*输出为:
 *abg
 */

3.deleteCharAt(int index) 删除字符串指定下标的字符

// deleteCharAt(int index) 删除字符串指定下标的字符
StringBuffer sb2  = new StringBuffer("abcdefg");
System.out.println(sb2.deleteCharAt(3));
/*输出为:
 *abcefg
 */

4.insert(int index, char ch) 在字符串的指定位置插入字符

// insert(int index, char ch) 在字符串的指定位置插入字符
StringBuffer sb3  = new StringBuffer("abcdefg");
System.out.println(sb3.insert(3, '4'));
/*输出为:
 *abc4defg
 */

5.setCharAt(int index, char ch) 替换字符串指定位置的字符

// setCharAt(int index, char ch) 替换字符串指定位置的字符
StringBuffer sb4  = new StringBuffer("abcdefg");
sb4.setCharAt(3, '4');
System.out.println(sb4);
/*输出为:
 *abc4efg
 */

6.reverse() 字符串反转

// reverse() 字符串反转
StringBuffer sb5  = new StringBuffer("abcdefg");
System.out.println(sb5.reverse());
/*输出为:
 *gfedcba
 */

7.substring(int index) 截取字符串从指定下标开始的子串

// substring(int index) 截取字符串从指定下标开始的子串
StringBuffer sb6  = new StringBuffer("abcdefg");
System.out.println(sb6.substring(2));
/*输出为:
 *cdefg
 */

8.substring(int start,int end) 截取字符串从指定下标范围的子串

// substring(int start,int end) 截取字符串从指定下标范围的子串
StringBuffer sb7  = new StringBuffer("abcdefg");
System.out.println(sb7.substring(2,5));
/*输出为:
 *cde
 */

9.capacity() 返回当前字符串容量

// capacity() 返回当前字符串容量
StringBuffer sb8  = new StringBuffer("abcdefg");
System.out.println(sb8.capacity());
/*输出为:
 *23
 */

Java字符容量计算:比如StringBuffer sb=new StringBuffer("abcdefg");输出sb.capacity();

长度为23,因为StringBuffer在为对象分配长度的时候,起始会分配一个字,也就是两个字节长度即(16位),每增加一个字符,长度就会在16的基础上加 1 。故而容量为16+7=23

10.charAt(int index) 返回字符串在指定索引的字符

//charAt(int index) 返回字符串在指定索引的字符
System.out.println(sb8.charAt(2));
/*输出为:
 *c
 */