Java 常用类 05. Java String类
2021-12-17 本文已影响0人
yjtuuige
简介
- 字符串是常量,不可变性,每次创建都会是一个新的对象;
- 字符串字面值存储在字符串池中,可以共享;
-
String s = "Hello";
产生一个对象,存储在字符串池中; -
String s = new String("Hello");
产生两个对象,堆、池各一个;

常用方法
方法 | 描述 |
---|---|
toCharArray() |
将一个字符串变为字符数组 |
charAt(int index) |
从一个字符串中取出指定位置的字符 |
length() |
取得字符串的长度 |
indexOf(String str) |
从头开始查找指定的字符串首次出现的位置,找不到返回-1 |
indexOf(String str,int fromIndex) |
从指定位置开始查找指定的字符串首次出现的位置 |
lastIndexOf(String str) |
返回指定子字符串最后一次出现的字符串中的索引,没有会返回-1 |
trim() |
清除左右两端的空格 |
substring(int beginIndex ) |
从指定位置开始,一直取到尾进行字符串的截取 |
substring(int begin,int end) |
指定截取字符串的开始点和结束 |
split(String regex) |
按照指定的字符串进行拆分,返回一个字符串数组。(支持正则表达式) |
toUpperCase() |
将一个字符串全部变为大写字母 |
toLowerCase() |
将一个字符串全部变为小写字母 |
contains(CharSequence s) |
判断字符串是否包含某个字符或字符串 |
startsWith(String prefix) |
判断是否以指定的字符串开头 |
endsWith(String suffix) |
判断是否以指定的字符串结尾 |
equals(String str) |
判断两个字符串内容是否相等 |
equalsIgnoreCase(String str) |
不区分大小写比较两个字符串是否相等 |
replace(String oldString,String newString) |
把旧的字符替换成新的字符 |
replaceAll(String regex,String replacement) |
字符串替换(支持正则表达式) |
- 实例:
package com.base.demo04;
import java.util.Arrays;
public class Test06 {
public static void main(String[] args) {
// 常用字符串方法:
String str = "Hello,world!";
// 1.length(); 返回字符串的长度
System.out.println(str.length()); // 12
// 2.charAt(int index); 返回某个位置的字符
System.out.println(str.charAt(str.length() - 1)); // ! 最后一个字符
// 3.contains(String str); 判断是否包含某个字符串
System.out.println(str.contains("Hello")); // true
// 4.toCharArray(); 返回字符串对应的数组 Arrays.toString 转换成单个字符
System.out.println(str.toCharArray()); // Hello,world!
System.out.println(Arrays.toString(str.toCharArray())); // [H, e, l, l, o, ,, w, o, r, l, d, !]
System.out.println(str.indexOf("o")); // 4
System.out.println(str.indexOf("o", 5)); // 7 从第5个字符开始查找
// 5.lastIndexOf(); 返回字符串最后一次出现的位置
System.out.println(str.lastIndexOf("o")); // 7
String str2 = " Hello world ";
// 6.trim(); 去除前、后端的空格
System.out.println(str2.trim()); // Hello world
// 7.toUpperCase(); 将字符串全部转成大写
System.out.println(str2.toUpperCase()); // HELLO WORLD
// 8.toLowerCase(); 将字符串全部转换成小写
System.out.println(str2.toLowerCase()); // hello world
// 9.endsWith(String str); 判断是否以字符串 str 结尾
System.out.println(str.endsWith("wor")); // false
// 10.startsWith(String str); 判断是否以字符串 str 开头
System.out.println(str.startsWith("He")); // true
String say = "java is the,best language";
// 11.replace(char old, char new); 用新的字符或字符串替换旧的字符或字符串
System.out.println(say.replace("java", "python")); // python is the,best language
// 12.split(); 对字符串拆分 " " 空格各拆分 "[ ,]+" 多个空格+逗号 拆分
String[] arr = say.split("[ ,]+");
// 遍历数组
for (String s : arr) {
System.out.println(s);
}
// 13. 补充 equals(),compareTo();比较大小
String s1 = "hello";
String s2 = "HELLO";
System.out.println(s1.equalsIgnoreCase(s2)); // true 忽略大小写比较
String s3="abc"; // a->97
String s4="xyzdfsf"; // x->120
// 14.compareTo(); 两字符不同时比较字符字典序的ascii码
// 字符相同时比较长度 返回差值
System.out.println(s3.compareTo(s4)); // -23 第一个不同字符的差值
}
}
- 运行结果

- 实例
package com.base.demo04;
/*
需求:
1.已知 String str = "this is a text";
2.将 str 中的单词单独获取
3.将 str 中的 text 替换成 practice
4.在 text 前面插入一个 easy
5.将每个单词的首字母改为大写
*/
public class Test07 {
public static void main(String[] args) {
String str = "this is a text";
// 1.将 str 中的单词单独获取
String[] arr = str.split(" ");
for (String s : arr) {
System.out.println(s);
}
// 2.将 str 中的 text 替换成 practice
String str2 = str.replace("text", "practice");
System.out.println(str2);
// 3.在 text 前面插入一个 easy
String str3 = str.replace("text", "easy text");
System.out.println(str3);
// 4.将每个单词的首字母改为大写
for (int i = 0; i < arr.length; i++) {
char first = arr[i].charAt(0);
char upperFirst = Character.toUpperCase(first);
// substring(); 从指定位置开始,一直取到尾进行字符串的截取
String news = upperFirst + arr[i].substring(1);
System.out.println(news);
}
}
}

总结
- 使用 String 类中的方法能够对字符串相关操作,在一定程度上,更方便快捷。
- 存在一定的缺点,如在对一个字符串进行频繁修改时,在效率上极低。
- 为弥补上述缺点,可使用 StringBuffer和 StringBuilder 进行相关操作。
- 所写的 String 类方法只是部分内容,更多内容,可 查询 API 文档。