字符串
大约 2 分钟
String
:具有不可变性- 对象一旦被创建,则不能修改,是不可变的
- 所谓修改其实是创建了新的对象,所指向的内存空间不变
StringBuilder
:可变,当频繁操作字符串时,建议使用StringBuffer
:和StringBuilder
基本一致,StringBuffer
是线程安全的,StringBuilder
则没有,所以StringBuilder
性能略高
创建方法
String str1 = "imooc";
String str2 = new String();
String str3 = new String("imooc");
char[] ch = {'i','m','o','o','c'};
String str4 = new String(ch);
String str5 = new String(ch,1,2);
![](https://cdn.jsdelivr.net/gh/sunzhenyang/blog-img/img/image-20210317222221814.png)
常用方法
方法 | 说明 |
---|---|
int length() | 返回当前字符串的长度 |
int indexOf(int ch) | 查找 ch 字符在该字符串中第一次出现的位置 |
int indexOf(String str) | 查找 str 子字符串在该字符串中第一次出现的位置 |
int lastIndexOf(int ch) | 查找 ch 字符在该字符串中最后一次出现的位置 |
int lastIndexOf(String str) | 查找 str 子字符串在该字符串中最后一次出现的位置 |
String substring(int beginIndex) | 获取从 beginIndex 位置开始到结束的子字符串 |
String substring(int beginIndex, int endIndex) | 获取从 beginIndex 位置开始到 endIndex 位置的子字符串(不包括 endIndex 位置字符串) |
String trim() | 返回去除了前后空格的字符串 |
boolean equals(Object obj) | 将该字符串与指定对象比较,返回 true 或 false |
String toLowerCase() | 将字符串转换为小写 |
String toUpperCase() | 将字符串转换为大写 |
char charAt(int index) | 获取字符串中指定位置的字符 |
String[] split(String regex, int limit) | 将字符串分割为子字符串,返回字符串数组 |
byte[] getBytes() | 将该字符串转换为 byte 数组 |
equals
和 ==
的区别
equals
是判断两个变量或者实例指向同一个内存空间的值是不是相同- 常用于
String
类型数据比较 - 两个对象是否在意义上相等
- 常用于
==
- 对于基本数据类型而言,
==
比较的是变量里存储的值 - 对于引用数据类型而言,
==
比较的是对象的内存地址(String
为引用类型)
- 对于基本数据类型而言,