String 是一组字符组成的数据整体。用双引号括起来。
字符串类的全名是 java.lang.String
在 java 中,字符串也是对象。
字符串是按照字节存储的。
在字符串中,可以使用反斜线对特殊字符进行转义。
常用的转义字符有 \', \", \t, \n, \\
// 两种写法都行
String name1 = "jack"; // 对于这种写法,JVM 自动做了很多优化,比如如果多个变量的值是同一个字符串,它们会指向同一个内存空间。
String name2 = new String("rose");
// 第三种写法:char 数组生成字符串
char[] c = {'a', 'b', '中', 'c'};
String name3 = new String(c);
System.out.println(name3); // ab中c
String s1 = "a" + "b";
String s2 = "ab";
System.out.println(s1.hashCode()); // 3105
System.out.println(s2.hashCode()); // 3105
// 只要 + 号两侧,任意一个是字符串,就会进行字符串的拼接
String s3 = 1 + "abc";
s1 = s1.concat("ccc");
System.out.println(s3); // 1abc
System.out.println(s1); // abccc
String s4 = "Ab";
System.out.println(s2.equals(s4)); // false
System.out.println(s2.equalsIgnoreCase(s4)); // true
System.out.println(s2.compareTo(s4)); // 32,因为 a 的 ASCII 码是 97,而 A 的是 65
System.out.println(s2.compareToIgnoreCase(s4)); // 0
System.out.println(s1.substring(0, 4)); // abcc
String s = "hello_world_hello";
System.out.println(s.replace("hello", "hi")); // hi_world_hi
System.out.println(s.replaceAll("hello|world", "hi")); // hi_hi_hi
String s5 = "helloWorld";
System.out.println(s5.toLowerCase()); // helloworld
System.out.println(s5.toUpperCase()); // HELLOWORLD
System.out.println(s5); // helloWorld
System.out.println(s.indexOf("hello")); // 0
System.out.println(s.lastIndexOf("hello")); // 12
System.out.println(s.charAt(0)); // h
System.out.println(s.contains("hello")); // true
System.out.println(s.startsWith("hello")); // true
System.out.println(s.endsWith("hello")); // true
System.out.println("".isEmpty()); // true
System.out.println(" ".isEmpty()); // false
StringBuilder 类用于创建 StringBuilder 类型的字符串对象。
StringBuilder 对象的字符串操作会改变字符串本身,也就是说操作的是同一个字符串,不会额外开辟空间存储新的字符串。
// StringBuilder 创建字符串
// 它的方法会改变字符串对象本身
StringBuilder s6 = new StringBuilder();
for (int i = 0; i < 10; i++) {
s6.append(i);
}
System.out.println(s6); // 0123456789
System.out.println(s6.length()); // 10
System.out.println(s6.reverse()); // 9876543210
System.out.println(s6.insert(2, "aa")); // 98aa76543210
System.out.println(s6.toString()); // 98aa76543210