提取从索引位置开始至结尾处的字符串部分
截取的字符串中包括起始索引对应的字符;endIndex 表示结束索引,截取的字符串中不包括结束索引对应的字符
public static void main(String[] args) {
// 下标从0开始
String str = "Java";
System.out.println("substring(2)结果:"+str.substring(2)); // 从下标为2的字符串开始截到最后
System.out.println("substring(0,1)结果:"+str.substring(0,1));
System.out.println("substring(0,4)结果:"+str.substring(1,4));
}
substring(2)结果:va
substring(0,1)结果:J
substring(0,4)结果:ava
str 为需要分割的目标字符串。
sign 为指定的分割符,可以是任意字符串。
limit 表示分割后生成的字符串的限制个数,如果不指定,则表示不限制,直到将整个目标字符串完全分割为止
public static void main(String[] args) {
String family = "Grandpa,grandma,Dad,Mum,Baby";
String[] arr1 = family.split(","); // 不限制元素个数
String[] arr2 = family.split(",", 3); // 限制元素个数为3
System.out.println("所有家庭成员为:");
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]);
}
System.out.println("前三组家庭成员为:");
for (int j = 0; j < arr2.length; j++) {
System.out.println(arr2[j]);
}
}
所有家庭成员为:
Grandpa
grandma
Dad
Mum
Baby
前三组家庭成员为:
Grandpa
grandma
Dad,Mum,Baby
equals() 方法将逐个地比较两个字符串的每个字符是否相同
equalsIgnoreCase() 方法的作用和语法与 equals() 方法完全相同,唯一不同的是 equalsIgnoreCase() 比较时不区分大小写
public static void main(String[] args) {
String str1 = "abc";
String str2 = new String("abc");
String str3 = "ABC";
System.out.println(str1.equals(str2)); // 输出 true
System.out.println(str1.equals(str3)); // 输出 false
System.out.println(str1.equalsIgnoreCase(str3)); // 输出 true
}
equals() 方法比较字符串对象中的字符,而==运算符比较两个对象引用看它们是否引用相同的实例
public static void main(String[] args) {
String s1 = "java";
String s2 = new String(s1);
System.out.println(s1.equals(s2)); // 输出true
System.out.println(s1 == s2); // 输出false
}
compareTo() 方法用于按字典顺序比较两个字符串的大小,该比较是基于字符串各个字符的 Unicode 值
public static void main(String[] args) {
String str = "J";
String str1 = "j";
System.out.println("str.compareTo(str1)的结果是:" + str.compareTo(str1));
System.out.println("str1.compareTo(str)的结果是:" + str1.compareTo(str));
System.out.println("str1.compareTo('a')的结果是:" + str1.compareTo("j"));
}
str.compareTo(str1)的结果是:-32
str1.compareTo(str)的结果是:32
str1.compareTo('a')的结果是:0
Integer.parseInt(str)
Integer.valueOf(str).intValue()
public static void main(String[] args) {
String str = "123";
System.out.println("Integer.parseInt(str) : " + Integer.parseInt(str));
System.out.println("Integer.valueOf(str).intValue() : " + Integer.valueOf(str).intValue());
}
Integer.parseInt(str) : 123
Integer.valueOf(str).intValue() : 123
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = “” + i;
public static void main(String[] args) {
int num = 10;
System.out.println("String.valueOf(num):" + String.valueOf(num));
System.out.println("Integer.toString:" + Integer.toString(num));
String str3 = num + "";
System.out.println("str3:" + str3);
}
String.valueOf(num):10
Integer.toString:10
str3:10
public static void main(String[] args) {
String str = " hello ";
System.out.println(str.length()); // 输出 7
System.out.println(str.trim().length()); // 输出 5
}
将字符串中的字母全部转换为小写,非字母不受影响
将字符串中的字母全部转换为大写,非字母不受影响
public static void main(String[] args) {
String en = "Snow White";
System.out.println("原字符串:"+en);
System.out.println("使用 toLowerCase() 方法之后为:"+en.toLowerCase());
System.out.println("使用 toUpperCase() 方法之后为:"+en.toUpperCase());
}
原字符串:Snow White
使用 toLowerCase() 方法之后为:snow white
使用 toUpperCase() 方法之后为:SNOW WHITE
replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串)
public static void main(String[] args) {
String words = "hello java";
System.out.println("原始字符串是'"+words+"'");
System.out.println("replace(\"l\",\"D\")结果:"+words.replace("l","D"));
System.out.println("replace(\"hello\",\"你好\")结果:"+words.replace("hello","你好 "));
}
原始字符串是'hello java'
replace("l","D")结果:heDDo java
replace("hello","你好")结果:你好 java
将目标字符串中匹配某正则表达式的第一个子字符串替换成新的字符串
public static void main(String[] args) {
String words = "hello Dad,hello Mum";
String newStr = words.replaceFirst("hello","你好 ");
System.out.println(newStr); // 输出:你好 Dad,hello Mum
}
public static void main(String[] args) {
String words = "hello Dad,hello Mum";
String newStr = words.replaceAll("hello","你好 ");
System.out.println(newStr); // 输出:你好 Dad,你好 Mum
}
indexOf() 方法用于返回字符(串)在指定字符串中首次出现的索引位置,如果能找到,则返回索引值,否则返回 -1
public static void main(String[] args) {
String s = "Hello Java";
System.out.println(s.indexOf('v')); // 输出结果为8
System.out.println(s.indexOf('m')); // 找不到字母m的位置,输出结果为-1
}
lastIndexOf() 方法用于返回字符(串)在指定字符串中最后一次出现的索引位置,如果能找到则返回索引值,否则返回 -1
public static void main(String[] args) {
String words="Friday,Sunday";
System.out.println("原始字符串是'"+words+"'");
System.out.println("lastIndexOf(\"day\")结果:"+words.lastIndexOf("day")); // lastIndexOf("day")结果:10
}
StringBuffer() 构造一个空的字符串缓冲区,并且初始化为 16 个字符的容量。
StringBuffer(int length) 创建一个空的字符串缓冲区,并且初始化为指定长度 length 的容量。
StringBuffer(String str) 创建一个字符串缓冲区,并将其内容初始化为指定的字符串内容 str,字符串缓冲区的初始容量为 16 加上字符串 str 的长度。
public static void main(String[] args) {
StringBuffer str1 = new StringBuffer();
StringBuffer str2 = new StringBuffer(5);
StringBuffer str3 = new StringBuffer("我爱java");
System.out.println(str1.capacity()); // 输出 16
System.out.println(str2.capacity()); // 输出 5
System.out.println(str3.capacity()); // 输出 22
}
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer("hello,");
String str = "World!";
buffer.append(str);
System.out.println(buffer); // 输出:Hello,World!
}
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("hello");
sb.setCharAt(1,'E');
System.out.println(sb); // 输出:hEllo
}
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("She");
sb.deleteCharAt(2);
System.out.println(sb); // 输出:Sh
}
线程安全:
StringBuffer:线程安全
StringBuilder:线程不安全
速度:
一般情况下,速度从快到慢为 StringBuilder > StringBuffer > String,当然这是相对的,不是绝对的。
使用环境:
操作少量的数据使用 String。
单线程操作大量数据使用 StringBuilder。
多线程操作大量数据使用 StringBuffer。