javaAPI-5
String类常用方法
String类的源码底层采用char数组存储字符,由于是一次性赋值,因此也不存在扩容需求;而String类的操作就是对底层char数组的操作,因此今天只记录下String类的常用方法
方法名 | 参数列表 | 返回值类型 | 方法作用 |
---|---|---|---|
charAt() | int index | char | 返回字符串指定索引位置的字符 |
compareTo() | String anotherString | int | 用于排序,以第一个不相同的字符为准,顺序为ascii码表顺序 |
concat() | String str | String | 将传入的字符串连接到调用方法的字符串后面,返回新字符串 |
endWith() | String suffix | boolean | 判断字符串是否以给定的子串结尾,是返回true |
getBytes() | \ | byte[] | 返回字符串对应的字节数组 |
indexOf() | String str | int | 查找给定子串第一次出现的位置,返回第一个字符的索引,没有返回-1 |
lastIndexOf() | String str | int | 查找给定子串最后一次出现的位置,返回第一个字符的索引,没有返回-1 |
length() | \ | int | 返回字符串长度 |
matches() | String regex | boolean | 检查字符串是否符合给定的正则表达式,符合返回true |
replace() | char oldChar,char newChar | String | 将字符串中的某个字符替换为给定字符,返回新字符串 |
split() | String regex | String[] | 按照给定的字符串切割原字符串,将切割的结果存入字符串数组后返回 |
startWith() | String prefix | boolean | 判断字符串是否以给定的子串开始,是返回true |
subString() | int beginIndex,int endIndex | String | 返回给定的开始索引到结束索引部分的子串,给定范围左闭右开 |
toCharArray() | char[] | 将字符串底层的字符数组返回 | |
toLowerCase | String | 将字符串中的全部大写字母转为对应的小写字母 | |
toUpperCase() | String | 将字符串中的全部小写字母转为对应的大写字母 | |
trim() | String | 去除字符串开头和结尾的空格 | |
valueOf() | 多次重载,支持所有基本数据类型和char数组 | String | 将给定的元素或数组转为字符串并返回(传入引用类型会被赋值为toString的值) |
StringBuilder和StringBuffer
StringBuilder和StringBuffer是常用的字符串容器,两者的方法基本相同,区别在于StringBuffer是线程安全的,StringBuilder只适用单线程情况
//使用方法
StringBuffer sb=new StringBuffer();//重载了构造方法,可以空参创建,也可以直接放入一个字符串
sb.append("abc");//同样重载了很多次,除了支持放入字符串外,还支持放入基本类型和char数组
sb.append(123);
sb.append(true);
String str=sb.toString();//取出方法
除了存入和取出方法,StringBuffer和StringBuilder还支持像String一样按索引操作的各种方法
使用StringBuffer和StringBuilder的意义:可以看到String类型底层存储的char数组是final修饰的,这就意味着每次对字符串的改动,包括增加删除和修改,都必须要创建新的字符串,这样效率会低很多。而在StringBuffer和StringBuilder中作为底层存储的char数组并不是固定的,且类似ArrayList一样有数组扩容机制,这样对于字符串的拼接删除和修改操作效率会更高一些