概述
- String是Java中基础且重要的类,并且String也是Immutable类的典型实现,被声明为final class,除了hash这个属性其它属性都声明为final,因为它的不可变性,所以例如拼接字符串时候会产生很多无用的中间对象,如果频繁的进行这样的操作对性能有所影响。
- StringBuffer就是为了解决大量拼接字符串时产生很多中间对象问题而提供的一个类,提供append和add方法,可以将字符串添加到已有序列的末尾或指定位置,它的本质是一个线程安全的可修改的字符序列,把所有修改数据的方法都加上synchronized。但是保证了线程安全是需要性能的代价的。
- StringBuilder是JDK1.5发布的,它和StringBuffer本质上没什么区别,就是去掉了保证线程安全的那部分(不保证线程安全),减少了开销(提高了效率)。
String类
20种常用方法
和长度有关的方法
| 返回类型 | 方法名 | 作用 |
| int | length() | 得到一个字符串的字符个数(一个中文是一个字符,一个英文是一个字符,一个转义字符是一个字符) |
和数组有关的方法
| 返回类型 | 方法名 | 作用 |
| byte[] | getBytes() | 将一个字符串转换成字节数组 |
| char[] | toCharArray() | 将一个字符串转换成字符数组 |
| String[] | split(String) | 将一个字符串按照指定内容劈 |
和判断有关的方法
| 返回类型 | 方法名 | 作用 |
| boolean | equals(String) | 判断两个字符串的内容是否一模一样 |
| boolean | equalsIgnoreCase(String) | 忽略大小写的比较两个字符串的内容是否一模一样 |
| boolean | contains(String) | 判断一个字符串里面是否包含指定的内容 |
| boolean | startsWith(String) | 判断一个字符串是否以指定的内容开头 |
| boolean | endsWith(String) | 判断一个字符串是否以指定的内容结尾 |
和改变内容有关的方法
(和改变内容有关的方法,都不会直接操作原本的字符串,而是将符合条件的字符串返回给我们,所以注意接收)
| 返回类型 | 方法名 | 作用 |
| String | toUpperCase() | 将一个字符串全部转换成大写 |
| String | toLowerCase() | 将一个字符串全部转换成小写 |
| String | replace(String,String) | 将某个内容全部替换成指定内容 |
| String | replaceAll(String,String) | 将某个内容全部替换成指定内容,支持正则 |
| String | repalceFirst(String,String) | 将第一次出现的某个内容替换成指定的内容 |
| String | substring(int) | 从指定下标开始一直截取到字符串的最后 |
| String | substring(int,int) | 从下标x截取到下标y-1对应的元素 |
| String | trim() | 去除一个字符串的前后空格 |
和位置有关的方法
| 返回类型 | 方法名 | 作用 |
| char | charAt(int) | 得到指定下标位置对应的字符 |
| int | indexOf(String) | 得到指定内容第一次出现的下标 |
| int | lastIndexOf(String) | 得到指定内容最后一次出现的下标 |
StringBuilder类
常用方法
Stringbuilder采用了方法重载使得其可以处理各种数据类型
增
append()
insert()
删
delete()
改
replace()
查
charAt(index)
indexOf(char)
反转
reverse()
StringBuffer类
与StringBuilder类的操作基本一致
不过需要注意的是 StringBuffer 是线程安全的。