第五章
-
在java语言中将字符串作为对象来处理,通过java.lang包中的String类来创建字符串对象。(用“”双引号包围的都是字符串,“1+3”输出就是1+3,不是4。)
-
声明字符串变量必须经过初始化才能使用。
-
String的常用构造方法:
(1) String(char a[])用一个字符数组a创建String对象。
(2) String(char a[], int offset, int length)提取a中的一部分创建一个字符串对象,offset表示开始位置,length表示截取长度。
(3) String(char[] value)与(1)相似。
(4) 引用字符串常量创建对象。引用相同的常量,指向同一实体。
-
连接字符串:用“+”去连接。(相连的字符串不能分开在两行书写,当写满换行时可用“”+“”连接。)当字符串与其他数据类型连接时,其他数据会转换成字符串,转换成字符串用的是toString()方法。
-
获取字符串长度:语法:字符串对象.length();(此方法返回的字符串长度从1开始包括空格。)
-
字符串查找:indexOf()方法、lastIndexOf()方法
indexOf(String s)方法:返回搜索的字符或字符串首次出现的位置。
语法:字符串对象. indexOf(要搜索的字符串),这里的位置取决于字符串的下标即从0~length()-1读。没有检索到,返回-1。
lastIndexOf(String s)方法:返回搜索的字符或字符串最后一次出现的位置。
语法:字符串对象. lastIndexOf (要搜索的字符串),位置读法同样是0~length()-1。没有检索到,返回-1。
lastIndexOf的妙用:lastIndexOf(“”)此时得到的结果就是字符串的长度。
-
获取指定索引位置的字符:charAt()方法,语法:字符串对象名.charAt(int 要返回字符的下标)(注意提到下标一定从0开始。)
-
字符串操作:
获取字符串:substring()利用字符串下标进行截取。
(1) substring(int beginIndex)该方法返回的是从指定索引位置开始截取到该字符串结尾的子串。语法:字符串对象. substring(int 指定开始索引的位置)
(2) substring(int beginIndex,int endIndex)从某一位置开始到某一位置结束的截取。语法:字符串对象. substring(int 指定开始索引的位置,int 指定结束索引的位置)
去除空格:trim()方法返回字符串的副本,忽略前导空格和尾部空格,中间空格仍然存在。
答案是16,11。
字符串替换:replace()方法将指定的字符或字符串替换成新的字符或字符串。
语法:字符串对象.replace(char 要被替换的字符或字符串, char 新的字符或字符串)(如果要被替换的字符串没有出现在该对象表达式中,则将原字符串返回。如果要替换的重复出现了多次,那么会将所有都替换。)
判断字符串的开始与结尾:startsWith()方法和endsWith()方法。返回值都为boolean型。
startsWith()方法:判断当前字符串对象的前缀是否为参数指定的字符串。
语法:字符串对象. startsWith(String prefix) prefix是指作为前缀的字符。
endsWith()方法:判断当前字符串对象是否为给定的子字符串结束。
语法:字符串对象. endsWith(String suffix) suffix是指作为后缀的字符串。
判断字符串是否相等:比较运算符“==”比较的是两个字符串的地址是否相同。但即使两个字符串的内容相同,两个对象的内存地址也是不同的,所以不能用比较运算符。此时,应使用equals()方法和equalsIgnreCase()方法。
equals()方法:如果两个字符串具有相同的字符和长度,则用它比较,且区分大小写。
语法:字符串对象.equals(String otherstr)
equalsIgnoreCase()方法:忽略大小写的情况下比较。
语法:字符串对象. equalsIgnoreCase (String otherstr)
按字典顺序比较两个字符串:compareTo()方法,基于比较各个字符的Unicode值。如果按字典顺序,此String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序,位于之后,则比较结果为一个正整数;如果两个字符串相等,则结果为0。区分大小写。
语法:字符串对象.compareTo(String otherstr)
字母大小写转换:toLowerCase()方法、toUpperCase()方法
toLowerCase()方法:将所有字符从大写转换成小写。若没有需要转换的,则返回原字符串。
语法:字符串对象.toLowerCase()
toUpperCase()方法:将所有字符从小写转换成大写。若没有需要转换的,则返回原字符串。
语法:字符串对象.toUpperCase()
字符串分割:split()方法使字符串按指定的分割字符或字符串对内容进行分割,分割的结果存放在字符串数组中。
(1) split(String sign) sign为分割字符串的分隔符,可用正则表达式。(没有统一的分割符号,可以自己定义,定义多个分隔符则用“|“隔开书写)
语法:字符串对象.split(String sign)
(2) split(String sign, int limit) limit限制分割的次数 -
格式化字符串:format()方法用与创建格式化的字符串。
(1) format(String format, Object…args) format:格式字符串
args:格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0.
(2) format(Local 1, String format, Object…args) 1:格式化过程中要应用的语言环境,如果1为null,则不进行本地化。
日期和时间字符串格式化:可以通过这个输出当天的日期和时间。获取的是当前静态时间。
语法:String.format(String format, Object…args)
常规类型格式化:可用于任何参数类型转化。
-
使用正则表达式:常被用于检查某一字符串是否满足某一格式,常用作用户名密码的限定和检验。
正则表达式中“ . “代表任意一个字符,所以想使用” . “则必须用转义字符 \。
正则表达式可以用[ ]括起来若干个字符来表示一个元字符,该元字符可代表方括号中任意一个字符,比如reg = “[abc]4“,这样的字符串a4,b4,c4都是和正则表达式匹配的字符串。
-
字符串生成器:创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。虽然使用“+“可以附加,但也会产生一个新的String实例,会在内存中创建新的字符串对象,这样会增大系统的开销。而采用StringBuilder类,可以提高增加字符串的效率。
SringBuilder类常用方法:
(1) append()方法:用于向字符串生成器中追加内容。语法:append(要追加到字符串生成器中的内容,可以是任何数据或者其他对象)
(2) insert(int offset arg)方法:用于向字符串生成器中指定位置插入数据内容。
Offset:字符串生成器的位置 arg:插入的内容。
(3) delete(int start ,int end)方法:移除此序列的子字符串中的字符。从指定的start处开始,一直索引end-1处的字符,如果不存在这种字符,则一直到序列尾部,start等于end,则不发生任何更改。
提出问题:toString()方法有什么作用?在什么情况下使用?
toString() 方法返回此对象本身(它已经是一个字符串)。当我们打印一个对象的引用时,实际是默认调用这个对象的toString()方法。当打印的对象所在类没有重写Object中的toString()方法时,默认调用的是Object类中toString()方法。在进行String类与其他类型的连接操作时,自动调用toString()方法。
例如:Date now = new Date();
System.out.println("now = " + now);//相当于下一行代码
System.out.println("now = " + now.toString());
提出问题:正则表达式怎么使用?
很多语言都有其正则表达式的书写方式,https://www.runoob.com/regexp/regexp-intro.html 这个网站可以了解到很多正则表达式的内容。