字符串 String

文章目录

    • 简介
    • 字符串的拼接
    • 字符串的比较
    • 字符串的截取
    • 字符串的替换
    • 字符串的大小写转换
    • 字符串的查找
    • 字符串的高效创建和使用

简介

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

字符串的拼接

  • 加 + 号
  • concat 方法
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

字符串的比较

  • 是否相等:equals, equalsIgnoreCase
  • 比较大小
    • compareTo (正数,左边的大;负数,左边的小;0 相等)
    • compareToIgnoreCase
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

字符串的截取

  • substring 第一个参数表示起始位置(包含它)的索引,第二个参数表示结束位置(不包含它)的索引。(左闭右开
  • split 按照指定的分隔符,对字符串进行拆分
  • trim 剪掉字符串两端的空白字符
System.out.println(s1.substring(0, 4));  // abcc

字符串的替换

  • replace 将旧子串全部替换为新子串
  • replaceAll 按照指定的多个规则,将多个不同的旧子串替换为新子串
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

字符串的大小写转换

  • toLowerCase
  • toUpperCase
String s5 = "helloWorld";
System.out.println(s5.toLowerCase()); // helloworld
System.out.println(s5.toUpperCase()); // HELLOWORLD
System.out.println(s5); // helloWorld

字符串的查找

  • indexOf 获取子串第一次出现的位置(索引)
  • lastIndexOf 获取子串最后一次出现的位置(索引)
  • charAt 获取指定位置的字符
  • contains 判断是否包含子串
  • startsWith 判断是否以子串开头
  • endsWith 判断是否以子串结尾
  • isEmpty 判断是否为空字符串
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

你可能感兴趣的:(#,Java,基础,java,字符串,String)