本文共 4966 字,大约阅读时间需要 16 分钟。
字符串是一连串的字符序列,Java提供了String、StringBuffer、StringBuilder三个类来封装字符串,并提供一系列的方法来操作字符串对象,它们三个都实现了CharSequence接口。
下面将着重介绍这三个类和三个类的常用方法
封装字符串的三个类
1.String类
在Java中,字符串属于对象,String类是不可变类,即一个对象被创建后,包含在此对象中的字符序列是不可改变的,直到这个对象被销毁。
2.StringBuffer类
StringBuffer对象代表一个字符序列可变的字符串,即一个对象被创建后,可通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法改变此对象的字符序列。
在通过StringBuffer对象生成指定字符串后,可通过.toString()方法将其转为一个String对象。
3.StringBuilder类
StringBuilder对象也代表一个可变的字符串对象,它与StringBuffer对象基本相似,两个类的构造器和方法也基本相同。不同之处是,StringBuffer是线程安全的,StringBuilder是非线程安全的,因此StringBuilder性能略高。
String类操作字符串对象常用方法
1.str.charAt(int index),获取字符串中指定下标位置的字符
字符串的序数从0开始到length()-1
String str = "abcxyz"; System.out.println(str.charAt(3)); //输出结果为x
2.str.length(),获取字符串的长度
String str = "abcxyz"; System.out.println(str.length()); //输出结果为6
3.str.compareTo(Sting anotherString),比较两个字符串的大小
两个字符串长度相等时,如果两个字符串的字符序列相等,则返回0,不相等时,从两个字符串第0个字符开始比较,返回第一个不相等字符之间unicode差值
如果字符串长度不等,而且较长字符串的前面部分恰好是较短的字符串,则返回它们的长度差
String str = "abcxyz"; System.out.println(str.compareTo("abczyx")); //输出结果为-2 String str1 = "abc"; System.out.println(str.compareTo(str1)); //输出结果为3
4.str.compareToIgnoreCase(Sting anotherString)忽略字符串的大小写比较两个字符串是否相等
String str = "abcxyz"; System.out.println(str.compareToIgnoreCase("ABCXYZ")); //返回结果为true
5.str.concat(Sting anotherString)字符串拼接,与字符串连接运算符"+"功能相同
String str = "abcxyz"; System.out.println(str.concat("abc")); //输出结果为abcxyzabc
6.str.equals(Sting anotherString),比较两个字符串的值是否相等
String str = "abcxyz"; System.out.println(str.equals("abcxyz")); //输出结果为true
7.str.equalsIgnoreCase(Sting anotherString),忽略大小写,比较两个字符串的值是否相等
String str = "abcxyz"; System.out.println(str.equalsIgnoreCase("ABCXYZ")); //输出结果为true
8.str.indexOf(Sting str),获取字符串中指定字符第一次出现的下标位置
String str = "abcxyz"; System.out.println(str.indexOf("a"));//输出结果为0
9.str.indexOf(Sting str,int fromIndex),获取str子字符串在该字符串从下标fromIndex开始后第一次出现的位置
String str = "xyzabc"; System.out.println(str.indexOf("abc", 2));//输出结果为3
10.str.substring(int beginIndex),获取从指定下标开始到结束的子字符串
String str = "abcxyz"; System.out.println(str.substring(3));//输出结果为xyz
11.str.substring(int beginIndex,int endIndex),获取从beginIndex位置开始,到endIndex结束的子字符串,包含开始但不包含结束
String str = "abcxyz"; System.out.println(str.substring(3,4));//输出结果为x
12.str.toUpperCase(),将字符串转换为大写
String str = "abcxyz"; System.out.println(str.toUpperCase());//输出结果为ABCXYZ
13.str.toLowerCase(),将字符串转换为小写
String str = "abcxyz"; System.out.println(str.toLowerCase());//输出结果为abcxyz
14.String.valueOf(X x),一系列用于将基本类型值转换为String对象的方法
int a = 20; System.out.println(String.valueOf(a));//输出结果为String类型的20
15.str.replace(oldChar, newChar),将字符串中的第一个oldChar替换成newChar
String str = "abcxyz"; System.out.println(str.replace("b", "5"));//输出结果为a5cxyz
16.str.toString(),返回对象本身
String str = "abcxyz"; System.out.println(str.toString());//输出结果为abcxyz
17.str.isEmpty(),判断字符串是否为空
String str = "abcxyz"; System.out.println(str.isEmpty());//输出结果为false
18.str.getBytes(),将String编码转换为byte序列,并将结果存储到一个新的byte数组进行输出
String str = "abcxyz"; System.out.println(str.getBytes());//输出结果为[B@15db9742
19.str.lastIndexOf("z"),返回str字符在该字符串中最后一次出现的下标位置
String str = "abcxyz"; System.out.println(str.lastIndexOf("z"));//输出结果为5
20.str.hashCode(),返回字符串的哈希值
String str = "abcxyz"; System.out.println(str.hashCode()); //输出结果为-1424366089
21.str.intern(),返回字符串对象的规范化表示形式
String str = "abcxyz"; System.out.println(str.intern());//输出结果为abcxyz
22.trim(),忽略字符串中的所有空白进行输出
System.out.println(" abc ".trim());//输出结果为abc(没有空格)
23.str.codePointAt(int index),获取指定下标位置的字符的unicode编码
String str = "abcxyz"; System.out.println(str.codePointAt(0));//输出结果为97
24.str.codePointCount(int beginInde, int endIndex),获取从指定开始下标到结束下标之间下标的绝对差值(差值的绝对值)
String str = "abcxyz"; System.out.println(str.codePointCount(0, 3));//输出结果为3
25.str.codePointBefore(int index),获取指定下标的前一个字符的unicode编码
String str = "abcxyz"; System.out.println(str.codePointBefore(1));//输出结果为97
StringBuilder类的常用方法
StringBuffer(Builder)有两个属性:length和capacity,length属性表示其包含字符序列的长度,可以通过length()、setLength(int len)方法来访问和修改其字符序列的长度,而capacity属性表示StringBuffer的容量。
StringBuffer、StringBuilder操作方法完全相同,只是StringBuilder执行效率更高一些,因此更多的会使用这个类
1.sb.append(str),字符串拼接
StringBuilder sb = new StringBuilder(); System.out.println(sb.append("Java"));//输出结果为Java
2.sb.insert(offset, str),从指定索引下标开始添加字符串
System.out.println(sb.insert(0, "Hello "));//输出结果为Hello Java
3.sb.replace(start, end, str),从开始下标到结束下标,替换其字符串为str
System.out.println(sb.replace(5, 6, ","));//输出结果为Hello,Java
4.sb.delete(start, end),删除从开始下标到结束下标之间的字符
System.out.println(sb.delete(5, 6));//输出结果为HelloJava
5.sb.reverse(),反转字符串
System.out.println(sb.reverse());//输出结果为avaJolleH
6.sb.setLength(newLength),改变字符串长度,仅保留指定索引下标之前的部分
sb.setLength(4); System.out.println(sb);//输出结果为avaJ
7.sb.length(),输出字符串长度
System.out.println(sb.length());//输出结果为4
8.sb.capacity(),输出字符串容量
System.out.println(sb.capacity());//输出结果为16
通过对String、StringBuffer、StringBuilder这三个对象的理解和基本方法的使用,对这些基础知识有了明确的认识,掌握这些知识,那么在使用中会得心应手~
不定期分享知识学习内容和学习体会
公众号ID:Javaklr 长按图片,扫码关注最新动态觉得可以点个好看转载地址:http://eucpo.baihongyu.com/