![925c871339b77f92e87366e743005866.png](https://i-blog.csdnimg.cn/blog_migrate/ba49d7e6312275d36af808f8daba6d85.jpeg)
整理一下String类的基本操作方法
(方法名均省略public修饰符)
字符与字符串
构造方法:
- String(char[] value)
将字符数组变为String类对象
- String(char[] value, int offset, int count)
将部分字符数组变为String
普通方法:
- char charAt(int index)
返回指定索引对应的字符信息(注意,字符串的索引下标从0开始)
- char[] toCharArray()
将字符串以字符数组的形式返回
字节与字符
(字节一般主要用于数据的传输或编码的转换)
构造方法:
- String(byte[] bytes)
将全部字节数组变为字符串
- String(byte[] bytes, int offset, int length)
将部分字节数组变为字符串
普通方法:
- byte[] getBytes()
将字符串变为字节数组
- byte[] getBytes(String charsetName) throws UnsupportedEncodingException
进行编码转换
字符串的比较
普通方法:
- boolean equals(String anObject)
进行相等判断,区分大小写
- boolean equalsIgnoreCase(String anotherString)
进行相等判断,不区分大小写
- int compareTo(String anotherString)
比较两个字符串的大小(按照字符编码比较),此方法的返回值有如下3种结果:
= 0:表示要比较的两个字符串内容相等
> 0:表示大于的结果
< 0:表示小于的结果
注意,在Java种 "==" 可以应用在所有数据类型中(包括基本数据类型和引用数据类型),所以初学者可能会采用 "==" 来比较字符串是否一致,这种使用方式是错误的!错误原因如下:
- 在整个Java中只要是引用数据类型,一定会存在内存地址;
- "=="在比较引用数据类型的时候,比较的不是内容,而永远都是地址的数值内容;
- 采用"=="来比较引用数据类型只会出现在判断两个不同名的对象是否指向同一内存空间的操作上;
- 因此,比较字符串的内容需要使用 boolean equals(String anObject) 这个方法;
字符串的查找
普通方法:
- boolean contains(String s)
判断指定内容是否存在
由前向后:
- int indexOf(String str)
由前向后查找指定字符串的位置
如果查找到了则返回(第一个字母 )的位置索引
如果找不到则返回-1
- int indexOf(String str, int fromIndex)
由指定位置从前向后查找指定字符串的位置
找不到返回-1
由后向前:
- int lastIndexOf(String str)
由后向前查找指定字符串的位置
找不到返回-1
- int lastIndexOf(String str, int fromIndex)
从指定位置由后向前查找字符串的位置
找不到返回-1
开头:
- boolean startsWith(String prefix)
判断是否以指定字符串开头
- boolean startsWith(String prefix, int offset)
从指定位置开始判断是否以指定字符串开头
结尾
- boolean endsWith(String suffix)
判断是否以指定的字符串结尾
字符串的替换
普通方法:
- String replaceAll(String regex, String replacement)
用新的内容替换全部旧的内容
- String replaceFirst(String regex, String replacement)
替换首个满足条件的内容
字符串的截取
普通方法:
- String substring(int beginIndex)
从指定索引截取到结尾
- String substring(int beginIndex, int endIndex)
截取部分字符串的数据
字符串的拆分
普通方法:
- String[] split(String regex)
按照指定的字符串进行全部拆分
- String[] split(String regex, int limit)
按照指定的字符串进行部分拆分
最后的数组长度由limit决定
(如果能拆分的结果很多,数组长度才会由limit决定)
即前面的拆,后面的不拆
注意:
- 使用split()方法时只设置一个空字符串(不是null,null会出现NullPointerException 异常),这样就表示按照每一个字符进行拆分
- 要避免正则表达式的影响,可以进行转义操作。比如"."的转义字符是"."
- 对于复杂字符串的拆分可以找规律进行多次拆分
其他方法
普通方法:
- String contact(String str)
字符串连接,与"+"类似,大多数情况下,会使用"+"取代这个方法
- String toLowerCase()
转小写
- String toUpperCase()
转大写
注意:使用String类中的toUpperCase()和toLowerCase()方法,相较于加减32的方法,更方便,因为对于字符串中非字母的部分不会进行转换。
- String trim()
去掉字符串中左右两边的空格,中间空格保留
注意:trim()方法只能删除左右空格,无法删除中间空格,如果想要取消字符串中的所有空格,可以使用上面提到的replaceAll()方法,将空格替换为空字符 ""
- int length()
取得字符串的长度
- String intern()
数据入池
- boolean isEmpty
判断是否是空字符串。注意!不是null,而是"",长度为0