Java字符串处理类:String、StringBuffer、StringBuilder
1 String
String类内容不可改变。
初始化:
String str1 = "Hello World";
String str2 = str1;
String str3 = str1 + " Akira!";
String str4 = "Welcome to " + 2025;
String str5 = String.format("Welcome to %d", 2025); // 格式化字符串,参考printf()
String moneyStr = "123.45";
double money = Double.parseDouble(moneyStr); // 使用Xxx.parseXxx()解析字符串
常用API:
int length()
:返回长度char charAt(int index)
:获取指定位置字符int indexOf(char c)
:查找第一个匹配的字符,失败则返回-1
int indexOf(String str)
:查找第一个匹配的字符串,返回首位的位置,失败则返回-1
boolean equals(Object o)
:判断是否相等int compareTo(String str)
:比较两个字符串的字典序、长度,大、小、相等分别返回1
、-1
、0
boolean startsWith(String str)
:判断是否以某字符串开头boolean endsWith(String str)
:判断是否以某字符串结尾String trim()
:去掉首尾的空白字符(空格与\n
等)String toLowerCase()
:全部转为小写字符String toUpperCase()
:全部转为大写字符String replace(char oldChar, char newChar)
:替换字符String replace(String oldRegex, String newRegex)
:替换字符串,可以长度不同或为空。String substring(int beginIndex, int endIndex)
:返回[beginIndex, endIndex)
上的子串String substring(int beginIndex)
:返回指定起始索引的子串toCharArray()
:将字符串转化为字符数组,使得可以for-each遍历
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
System.out.println(c);
}
for (char c : str.toCharArray()) {
System.out.println(c);
}
2 StringBuffer / StringBuilder
当需要对字符串进行频繁修改时,要用StringBuffer或StringBuilder类。这两个类的对象能够被多次修改,且不产生新的未使用对象,效率都比String高且节省内存。需要转回String时使用默认的toString()
方法即可。
- StringBuffer:多线程数据量多使用。线程安全,同步,效率低。
- StringBuider:单线程数据量较多使用。线程不安全,不同步,效率高。(算法题中更常用)
初始化:
String str = "Hello";
StringBuilder sb = new StringBuilder(str);
常用API:
length()
、charAt()
、indexOf()
、substring()
同Stringvoid setCharAt(int index, char newChar)
:替换指定位置的字符为指定字符void append(String str)
:拼接字符串void reverse()
:翻转字符串
sb.append(" World!");
for (int i = 0; i < sb.length(); i++) {
sb.setCharAt(i, (char)(sb.charAt(i) + 1));
}
sb.reverse();
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf啊啊啊啊assagdgarofaweonf