Java 字符串
String 和 StringBuilder
String
- 如何创建 String 对象
- String s1 = “test”
- String s2 = new String();
- String s3 = new String(“test”)
- 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() ] |
返回字符串的副本,删除前导空白和尾部空白 |
- == 和 equals 方法的区别
比较项 | == 运算符 |
equals() 方法 |
---|---|---|
比较对象 | 比较两个对象的引用是否指向同一个对象(内存地址是否相同) | 比较两个对象的内容是否相同 |
适用类型 | 基本数据类型(如 int、double 等)和引用数据类型(如 String、Integer 等) | 引用数据类型(如 String、Integer 等) |
默认行为 | 基本数据类型比较值是否相同,引用数据类型比较引用是否相同 | 对于引用数据类型,默认比较对象的内容是否相同 |
重写 | 不能重写 | 可以被子类重写以实现自定义的比较逻辑 |
总的来说:
==
比较的是对象的内存地址,equals()
比较的是对象的内容。- 对于基本数据类型,
==
比较的是值是否相同。 - 对于引用数据类型,如果没有重写
equals()
方法,那么equals()
方法等价于==
。 - 通常比较引用数据类型的相等性时,应该使用
equals()
方法,因为这样可以比较对象的内容。
- String 的不可变性
- String 对象一旦被创建,则不能修改,是不可变的。
- 所谓的修改其实是创建了新的对象,所指向的内存空间不变,
StringBuilder
- 与 String 区别
- String 具有不可变性,而 StringBuilder 不具备
- 使用建议
- 当频繁操作字符串时,使用 StringBuilder
- StringBuilder 和 StringBuffer
- 二者基本相似
- StringBuffer 是线程安全的,StringBuilder 则没有,所以性能略高。
- 常用方法
- StringBuilder append(String str)
- StringBuilder delete(int start,int end)
- StringBuilder insert(int offset,String str)
- StringBuilder replace(int start,int end,String str)