个人主页:Ice_Sugar_7
所属专栏:快来卷Java啦
欢迎点赞收藏加关注哦!
字符数组
或者字符指针
。虽然可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面向对象的思想
String类
接下来一起来看看String类中的常用方法吧!
String类提供多种构造方式,常用的有以下三种:
// 使用常量串构造
String s1 = "hello world";
//使用new实例化对象
String s2 = new String("hello world");
//使用字符数组进行构造
char[] array = {'h','e','l','l','o','w','o','r','l','d'};
String s3 = new String(array);
在String的实现源码中,我们可以看到它的字段:
可见,字符串实际上是保存在字符数组
中的
字符串的比较是常见的操作之一,Java提供四种比较的方式:
==
比较的是变量中的值;对于引用类型比较的则是引用的对象的地址
,即是否引用同一个对象 public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
String str3 = "abcd"
System.out.println(str1.equals(str2));//输出true
System.out.println(str3.equals(str1));//输出false
}
int compareTo(String s)
比较方式:
先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值
public static void main(String[] args) {
String str1 = "abc";
String str2 = "aecd";
String str3 = "aecdefg";
System.out.println(str1.compareTo(str2)); //b和eASCII码相差3,输出-3(因为b小于e)
System.out.println(str2.compareTo(str3)); //str3比str2长,且前4个字符相同,此时返回二者长度差值
}
int compareToIgnoreCase(String str)
比较方式和compareTo方法一样,不过这个会忽略大小写
toUpperCase( ):将所有小写字母转换为大写
toLowerCase( ):大写字母转小写
public static void main(String[] args) {
String s = "hello";
// 字符串转数组
char[] ch = s.toCharArray();
System.out.println(Arrays.toString(ch));
}
public static void main(String[] args) {
String s1 = String.format("%d-%d-%d", 2024, 1,27);
String s2 = "乌蒙山";
String s3 = String.format("%s连着山外山",s2);
System.out.println(s1);
System.out.println(s3);
}
使用一个新的字符串替换已有的字符串数据,可以用以下的方法:
方法 | 功能 |
---|---|
String replaceAll(String regex, String replacement) | 替换所有的指定内容 |
String replaceFirst(String regex, String replacement) | 替换首个内容 |
public static void main(String[] args) {
String s1 = "hello world";
String s2 = s1.replaceAll("l","a");
System.out.println(s2);
String s3 = s1.replaceFirst("l","a");
System.out.println(s3);
}
将一个完整的字符串按照指定的分隔符
划分为若干个子字符串
方法 | 功能 |
---|---|
String[] split(String regex) | 将字符串按照指定分隔符拆分 |
String[] split(String regex, int limit) | 按指定格式,拆分为limit组 |
public static void main(String[] args) {
String str1 = "he llo w or ld";
String[] s1 = str1.split(" ");
System.out.println(Arrays.toString(s1));
String str2 = "hello world hello";
String[] s2 = str2.split(" ",2); //根据空格分割为两组
System.out.println(Arrays.toString(s2));
}
字符
|
、*
、+
、.
都得加上转义字符,前面加上\\
如果以\\
分割,那就要写成\\\\
如果一个字符串中有多个分隔符,可以用[]
,在里面写上分隔符就ok了(注意:此时上述字符就不用
加\
转义)
public static void main(String[] args) {
String str3 = "hello\\world\\hello";
String[] s3 = str3.split("\\\\");
System.out.println(Arrays.toString(s3));
String str4 = "Tomorrow=is.another day";
String[] s4 = str4.split("[=. ]"); //以=、.和空格作为分隔符
System.out.println(Arrays.toString(s4));
}
public static void main(String[] args) {
String str4 = "apple,banana;grape;strawberry,pear,lemon";
String[] s1 = str4.split(","); //第一次分割
for (String s:s1) {
String[] tmp = s.split(";"); //第二次分割,使用一个临时数组存储分割后的结果,然后打印
for(int i = 0;i < tmp.length;i++) {
System.out.print(tmp[i] + " ");
}
}
}
就是从一个完整的字符串中截取出部分内容
方法 | 功能 |
---|---|
String substring(int beginIndex) | 从指定索引截取到结尾 |
String substring(int beginIndex, int endIndex) | 截取部分内容 |
public static void main(String[] args) {
String str = "helloworld" ;
System.out.println(str.substring(0, 5));
}
注意:索引下标区间是左闭右开
,即包含0下标,不包含5下标
方法 | 功能 |
---|---|
String trim() | 去掉字符串中的左右空格,保留中间空格 |
int length() | 返回字符串长度 |
boolean isEmpty() | 判断字符串长度是否为0 |
public static void main(String[] args) {
String str = " hello world \n" ;
String str1 = str.trim();
System.out.print(str);
System.out.print(str1);
}