Java 字符串

String 和 StringBuilder

String

  1. 如何创建 String 对象
    • String s1 = “test”
    • String s2 = new String();
    • String s3 = new String(“test”)
  2. String 对象的常用方法
方法 说明
[charAt(int index)] 返回指定索引位置的字符
[concat(String str)] 将指定字符串连接到该字符串的结尾
[contains(CharSequence s)] 判断是否包含指定的字符序列
[endsWith(String suffix)] 判断字符串是否以指定的后缀结束
[equals(Object obj)] 比较字符串是否相等
[equalsIgnoreCase(String str)] 比较字符串是否相等,忽略大小写
[indexOf(int ch)] 返回指定字符在该字符串中首次出现处的索引
[indexOf(String str)] 返回指定子字符串在该字符串中首次出现处的索引
[isEmpty()] 判断字符串是否为空
[length()] 返回字符串的长度
[replace(char oldChar, char newChar)] 使用新值替换字符串中出现的所有旧值
[split(String regex)] 根据给定正则表达式的匹配拆分此字符串
[startsWith(String prefix)] 判断字符串是否以指定的前缀开始
[substring(int beginIndex)] 返回一个新的字符串,它是此字符串的一个子字符串
[toCharArray()] 将此字符串转换为一个新的字符数组
[toLowerCase()] 使用默认语言环境的规则将此 String 所有字符都转换为小写
[toUpperCase()] 使用默认语言环境的规则将此 String 所有字符都转换为大写
[trim()] 返回字符串的副本,删除前导空白和尾部空白
  1. == 和 equals 方法的区别
比较项 == 运算符 equals() 方法
比较对象 比较两个对象的引用是否指向同一个对象(内存地址是否相同) 比较两个对象的内容是否相同
适用类型 基本数据类型(如 int、double 等)和引用数据类型(如 String、Integer 等) 引用数据类型(如 String、Integer 等)
默认行为 基本数据类型比较值是否相同,引用数据类型比较引用是否相同 对于引用数据类型,默认比较对象的内容是否相同
重写 不能重写 可以被子类重写以实现自定义的比较逻辑

总的来说:

  • == 比较的是对象的内存地址,equals() 比较的是对象的内容。
  • 对于基本数据类型,== 比较的是值是否相同。
  • 对于引用数据类型,如果没有重写 equals() 方法,那么 equals() 方法等价于 ==
  • 通常比较引用数据类型的相等性时,应该使用 equals() 方法,因为这样可以比较对象的内容。
  1. String 的不可变性
    • String 对象一旦被创建,则不能修改,是不可变的。
    • 所谓的修改其实是创建了新的对象,所指向的内存空间不变,

StringBuilder

  1. 与 String 区别
    • String 具有不可变性,而 StringBuilder 不具备
  2. 使用建议
    • 当频繁操作字符串时,使用 StringBuilder
  3. StringBuilder 和 StringBuffer
    • 二者基本相似
    • StringBuffer 是线程安全的,StringBuilder 则没有,所以性能略高。
  4. 常用方法
    • StringBuilder append(String str)
    • StringBuilder delete(int start,int end)
    • StringBuilder insert(int offset,String str)
    • StringBuilder replace(int start,int end,String str)