目录
前言
Hi~ 你好!
欢迎点击我的博客 : )
这是我的学习总结,希望也能帮助到你
我的博客地址:hi~,我在这里~,欢迎关注哦,
三连不迷路,优质内容持续更新!
一. String常用方法
1. 字符串构造
String str1 = "String"; 使用常量串构造
String str2 = new String("String");直接newString对象
char[]arr = {'q','w','e','r'};
String str3 = new String(arr); 用字符数组构造
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
String str = "";
String str1 = "String"; 使用常量串构造
System.out.println(str1.length());获取字符串长度
System.out.println(str.isEmpty()); 如果字符串长度为0,返回true,否则返回false
System.out.println(str1.isEmpty());
调用的时候,点号前面的字符串类型不一定是变量,也可以是常量
System.out.println("Hello".length());
学一个类的时候要从构造方法开始学习,一个类要实例化对象,就会调用构造方法
String是引用类型,内部并不存储字符串本身
2. String对象的比较
2.1 比较相不相同
== 和 equals方法
equals() 按照数组下标依次比较,比较引用对象的内容是否相同
String str1 = "key";
String str2 = "key";
String str3 = new String("key");
String str4 = new String("key");
System.out.println(str1 == str2);//两个字符串都是取自常量池中,所以为true
System.out.println(str3 == str4);//false
System.out.println(str1 == str3);//false
System.out.println(str1.equals(str4));//ture 比较两个引用所指向的内容是否一致
对于基本类型变量,==比较两个变量中存储的值是否相同
对于引用类型变量,==比较两个引用变量引用的是否为同一个对象String类重写了父类Object中equals方法,Object中equals默认按照==比较,
String重写equals方法
2.2 比较大小
compareTo方法
equals返回的是boolean类型,而compareTo返回的是int类型
按字典次序比较,当字符不等时,返回这两个字符的差值
当属于另一个的子串时,返回两个字符串长度差
String str1 = "apple";
String str2 = "abple";
String str3 = "appleTree";
System.out.println(str1.compareTo(str2)); 按照字典序比较
//返回值为14 str1大于str2 返回整数,小于返回负数,差值为字典序的差 相等返回0;
System.out.println(str3.compareTo(str1));//str3和str1比较
//返回值=4,为多出来的字符串长度
//忽略大小写比较
String str4 = "AppLe";
System.out.println(str1.compareToIgnoreCase(str4)); 忽略大小写比较
//相等返回值=0;
System.out.println(str1.equalsIgnoreCase(str4));//true
String类实现了Comparable接口,比较大小重写了compareTo方法
按照字典序比较
3. 字符串查找
String str1 = "distinguish";
char c = str1.charAt(1);//返回index位置上字符
System.out.println(c);//1下标,是i
for (int i = 0; i < str1.length(); i++) {
System.out.print(str1.charAt(i));//遍历字符串打印
}
System.out.println(" ");
System.out.println(str1.indexOf('s'));//2 返回以一个s出现的位置
System.out.println(str1.lastIndexOf('s')); //9 //从后往前开始找字符's',返回索引
System.out.println(str1.indexOf('s',3));//9
System.out.println(str1.lastIndexOf('s',8));//2
// 返回自第8个位置开始,s出现的位置 // 返回'x'第一次出现的位置,没有返回-1
System.out.println(str1.indexOf("ting"));//3 在主串中找子串出现的位置
System.out.println(str1.lastIndexOf("is",7));//1
charAt返回index位置上字符
indexOf (ch) 返回ch第一次出现的位置,没有返回-1
lastIndexOf(int ch) 从后往前找,返回ch第一次出现的位置,没有返回-1
以此类推
4. 字符串转化
4.1 数值和字符串转化
public static void main(String[] args) {
String str1 = String.valueOf(12345); //数字转字符串
String str2 = String.valueOf(3.1415); //double
System.out.println(str1);//12345
System.out.println(str2);//3.1415
String str3 = String.valueOf(new Student("we",33));//传一个对象
System.out.println(str3);//Learn.Student@4554617c
System.out.println("-------------------");
// 字符串转数字
int i = Integer.parseInt(str1);
double v = Double.parseDouble(str2);
System.out.println(i);//12345
System.out.println(v);//3.1415
}
4.2 大小写转换
public static void main(String[] args) {
String str1 = "abcd";
String str2 = "ABcd";
System.out.println(str1);//abcd
System.out.println(str2);//ABcd
System.out.println(str1.toUpperCase());//ABCD
System.out.println(str2.toLowerCase());//abcd
}
4.3 字符串转数组
public static void main(String[] args) {
//字符串转数组
String str1 = "hello";
char[] charArray = str1.toCharArray();
System.out.println(Arrays.toString(charArray));//[h, e, l, l, o]
//数组转字符串
String str2 = new String(charArray);
System.out.println(str2);//hello
}
4.4 格式化输出
public static void main(String[] args) {
String str = String.format("%d-%d-%d", 2023,10,7);
System.out.println(str);//2023-10-7
}
5. 字符串替换
public static void main(String[] args) {
//字符串的替换
String str1 = "aabbccddaabbccdd";
String ret1 = str1.replace('a', 'A');//AAbbccddAAbbccdd
System.out.println(ret1);//替换不是修改原来的,而是产生一个新的对象
//String实现CharSequence接口,传字符串类型进行向上转型
String ret2 = str1.replace("bbcc", "qqww");
System.out.println(ret2);//aaqqwwddaaqqwwdd
System.out.println(str1.replaceAll("cc","88"));//aabb88ddaabb88dd
System.out.println(str1.replaceFirst("ccdd","1111"));//aabb1111aabbccdd
//把第一个出现的xxx替换
}
String实现CharSequence接口,传字符串类型进行向上转型由于字符串是不可变对象 , 替换不修改当前字符串 , 而是产生一个新的字符串
6. 字符串拆分
从一个完整的字符串之中截取出部分内容 split
public static void main(String[] args) {
//字符串的拆分
String str1 = "do you hear the people sing";
String[] s1 = str1.split(" ");
System.out.println(Arrays.toString(s1));//[do, you, hear, the, people, sing]
String[] s2 = str1.split(" ",3);//限制为最多分三组
for (int i = 0; i < s2.length; i++) {
System.out.println(s2[i]);//do
// you
// hear the people sing
}
String str2 = "111.222.333.444.555";
String[] split = str2.split("\\.");//加\\转义
System.out.println(Arrays.toString(split));//[111, 222, 333, 444, 555]
}
public static void main3(String[] args) {
String str1 = "111\\222\\333\\444\\555";
System.out.println(str1);//111\222\333\444\555
String[] split = str1.split("\\\\");
System.out.println(Arrays.toString(split));//[111, 222, 333, 444, 555]
}
public static void main4(String[] args) {
String str1 = "222&333=555";
String[] split = str1.split("&|=");
System.out.println(Arrays.toString(split));//[222, 333, 555]
}
public static void main(String[] args) {
//多次分割
String str1 = "2*3=3*2=1*6=6*1";
String[] split1 = str1.split("=");
for (int i = 0; i < split1.length; i++) {
// System.out.println(split1[i]);
String[] split = split1[i].split("\\*");
// for (int j = 0; j < split.length; j++) {
// System.out.println(split[j]);
// }
for (String x:split) {
System.out.println( x);
}
}
}
字符"|","*","+"都得加上转义字符,前面加上 "\\"
如果是 "\" ,那么就得写成 "\\\\" 如果一个字符串中有多个分隔符,可以用 "|" 作为连字符
7. 字符串的截取
从一个完整的字符串之中截取出部分内容
public static void main(String[] args) {
String str1 = "abcdefg";
String substring1 = str1.substring(3);
System.out.println(substring1);//defg 从3开始一直到截取完所以字符
String substring2 = str1.substring(2, 6);
System.out.println(substring2);//cdef 左闭右开 //返回新的字符串对象
}
1. 索引从0开始
2.左闭右开
8. trim()
去掉字符串中的左右空格,保留中间空格
public static void main(String[] args) {
String str = " String test ";
String trim = str.trim();//去掉字符串中的左右空格,保留中间空格
System.out.println(trim);//String test
}
trim 会去掉字符串开头和结尾的空白字符(空格, 换行, 制表符...)
后记
看到这里,希望能帮到你~
您的点赞 ,收藏 ,关注 是我创作的最大动力!
同时也欢迎在评论区进行交流,共同进步~