Java 第十章 字符串

Java 第十章 字符串

1. String类

单个字符可以使用char类型保存,多个字符组成的文本就需要保存在String对象中,String通常被称为字符串,一个String对象最多可以保存(2^32-1)个字节(占用4GB空间大小)的文本内容。

1.1 声明字符串

在java语言中,字符串必须包含在一对双引号(" ")之内。例:

"66""Hello""你好"

以上这些都是字符串常量,字符串常量可以是系统能够显示的任何文字信息,甚至可以是单个字符。

可以通过以下语法格式来声明字符串变量:

String str;
  • String:指定该变量为字符串类型

  • str:任意有效的标识符,表示字符串变量的名称

声明字符串变量s,代码如下:

String s;

注意

声明的字符串变量必须经过初始化才能使用,否则编译器会报出“变量未初始化错误”

1.2 创建字符串

在java语言中,将该字符串作为对象来处理,因此可以像创建其它类对象一样来创建字符串对象。

1.String(char a[ ])

该方法用一个字符数组ch创建string对象,代码如下:

        //字符串变量的初始化 传入字符类型的数组
        char [] ch = {'g','o','o','d'};
        str = new String(ch);
        System.out.println(str);
2.String(char c[ ],int offset,int length)

该方法提取字符数组c中一部分创建一个字符串对象。参数offset表示开始截取字符串的位置,length表示截取字符串的长度。代码如下:

        //字符串变量的初始化,传入字符类型的数组,前索引,长度
        char[] c = {'s','t','u','d','e','n','t'};
        String s = new String(c,1,4);
        System.out.println(s);

2. 连接字符串

2.1 连接多个字符串

使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个String对象产生一个新的Sting对象。

例题:先连接一副对连的上、下联,在分行输出

在这里插入图片描述

2.2 连接其他数据类型

字符串可以同其他基本数据类型进行连接。如果将字符同其他数据类型数据连接,会将其他数据类型直接转换成字符串。

例题:统计每天的阅读和上机时间

在这里插入图片描述

3.获取字符串信息

字符串作为对象,可通过相应方法获取字符串的有效信息,如获取某字符串的擦汗高难度、某个索引位置的字符等。

3.1获取字符串长度

使用String类的length()方法可获取声明的字符串对象的长度。语法如下:

str.length();

获取字符串长度,代码如下:

String a ="dadada"
int size =a.length();

3.2字符串查找

1.indexOf(String s)

indexOf(String s)方法用于查找一个字符串在另一个字符串中第一次出现的位置。该方法返回一个int类型的值,表示目标字符串在原字符串中的起始位置。如果目标字符串不存在于原字符串中,则返回-1。

该方法的语法如下:

public int indexOf(String s)

其中,s为要查找的目标字符串。

注意,indexOf()方法区分大小写,因此如果目标字符串的大小写与原字符串不匹配,则无法查找到该字符串。如果要忽略大小写进行查找,可以使用String类的equalsIgnoreCase()方法或toLowerCase()方法将字符串转换为小写后再进行查找。

2.lastIndexOf(String str)

lastIndexOf(String str)方法用于查找一个字符串在另一个字符串中最后一次出现的位置。该方法返回一个int类型的值,表示目标字符串在原字符串中的起始位置。如果目标字符串不存在于原字符串中,则返回-1。

该方法的语法如下:

public int lastIndexOf(String str)

其中,str为要查找的目标字符串。

同样,lastIndexOf()方法也区分大小写,因此如果目标字符串的大小写与原字符串不匹配,则无法查找到该字符串。如果要忽略大小写进行查找,可以使用String类的lastIndexOf(String str, int fromIndex)方法或toLowerCase()方法将字符串转换为小写后再进行查找。

例题:用两种方式判断字符串的长度

在这里插入图片描述

3.3获取指定索引位置的字符

charAt()方法用于获取字符串中指定位置的字符。该方法接受一个int类型的参数,表示要获取的字符在字符串中的位置(从0开始),并返回一个char类型的值,表示该位置上的字符。

该方法的语法如下:

public char charAt(int index)

注意,如果指定的索引超出了字符串的范围(即小于0或大于等于字符串的长度),则charAt()方法会抛出一个IndexOutOfBoundsException异常。

例题:查看指定索引位置上的字符

在这里插入图片描述

4.字符串操作

4.1获取子字符串

1.substring(int beginindex)

该方法返回的是从只当的索引位置开始截取直到该字符串结尾的子窜。语法如下:

str.substring(int beginIndex)

截取字符串,代码如下:

String str ="Hello World";             //定义字符串str
String substr=str.substring(3);        //获取字符串,此时substr值为lo world
  • 在字符串中,空格占用一个索引位置。
2.substring(int beginIndex,int endIndex)

该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串。

substring(int beginIndex,int endIndex)
  • beginIndex:开始截取子字符串的索引位置

  • endIndex:子字符串在整个字符串中的结束位置

例题:将进酒的作者

在这里插入图片描述

4.2去除空格

trim()方法用于去除字符串两端的空格(即空格、制表符、换行符等空白字符)。该方法返回一个新的字符串对象,表示去除空格后的字符串。

该方法的语法如下:

public String trim()

注意,trim()方法只能去除字符串两端的空格,而不能去除字符串中间的空格。如果要去除字符串中间的空格,可以使用String类的replace()方法或正则表达式等方法。

例题:去掉字符串首尾空格

在这里插入图片描述

4.3字符串替换

replace()方法用于将字符串中的一个子串替换为另一个字符串。该方法返回一个新的字符串对象,表示替换后的字符串。

该方法的语法如下:

public String replace(CharSequence target, CharSequence replacement)

其中,target是要替换的子串,replacement是用于替换的字符串。CharSequence是一个接口,表示字符序列,可以是String、StringBuilder、StringBuffer等类的实例。

例题:将单词中的字母a替换成字母A

在这里插入图片描述

4.4判断字符串的开始与结尾

1.startsWith()方法

startsWith()方法用于判断一个字符串是否以指定的前缀开头。该方法接受一个字符串作为参数,表示要判断的前缀,返回一个布尔值,表示原始字符串是否以指定前缀开头。

该方法的语法如下:

public boolean startsWith(String prefix)

注意,startsWith()方法区分大小写,即如果前缀的大小写与原始字符串不同,返回的结果将是false。如果要忽略大小写进行匹配,可以将原始字符串和前缀都转换为小写或大写,再进行比较。

2.endsWhith()方法

endsWith()方法用于判断一个字符串是否以指定的后缀结尾。该方法接受一个字符串作为参数,表示要判断的后缀,返回一个布尔值,表示原始字符串是否以指定后缀结尾。

该方法的语法如下:

public boolean endsWith(String suffix)

注意,endsWith()方法也区分大小写,即如果后缀的大小写与原始字符串不同,返回的结果将是false。如果要忽略大小写进行匹配,可以将原始字符串和后缀都转换为小写或大写,再进行比较。

例题:判断字符串是否以指定的内容开始或结束

在这里插入图片描述

4.5判断字符串是否相等

1.equals() 方法

equals()方法用于比较两个字符串的内容是否相等。该方法接受一个字符串作为参数,表示要比较的另一个字符串,返回一个布尔值,表示两个字符串的内容是否相等。

该方法的语法如下:

public boolean equals(Object anObject)
2.equalsIgnoreCase() 方法

equalsIgnoreCase()方法用于比较两个字符串的内容是否相等,但是忽略它们的大小写。该方法接受一个字符串作为参数,表示要比较的另一个字符串,返回一个布尔值,表示两个字符串的内容是否相等,但忽略大小写。

该方法的语法如下:

public boolean equalsIgnoreCase(String anotherString)

例题:判断abc与ABC是否相等

在这里插入图片描述

4.6 按字典顺序比较两个字符串

compareTo()方法用于比较两个字符串的大小关系,它比较的是两个字符串的字典顺序。该方法接受一个字符串作为参数,表示要比较的另一个字符串,返回一个整数,表示两个字符串的大小关系。

该方法的语法如下:

public int compareTo(String anotherString)

注意,使用compareTo()方法比较字符串时,比较的是字符串的字典顺序,即比较的是字符串的Unicode码值。如果两个字符串相等,则返回0;如果调用compareTo()方法的字符串在字典顺序上排在参数字符串的前面,则返回一个负整数;如果调用compareTo()方法的字符串在字典顺序上排在参数字符串的后面,则返回一个正整数。

例题:判断字母的位置

在这里插入图片描述

4.7字母大小写转换

1.toLowerCase() 方法

toLowerCase()方法用于将字符串转换为小写字母形式。该方法不会修改原始字符串,而是返回一个新的字符串,其中包含原始字符串的副本,但所有大写字母都被替换为相应的小写字母。

该方法的语法如下:

public String toLowerCase()
2.toUpperCase() 方法

toUpperCase()方法用于将字符串转换为大写字母形式。该方法不会修改原始字符串,而是返回一个新的字符串,其中包含原始字符串的副本,但所有小写字母都被替换为相应的大写字母。

该方法的语法如下:

public String toUpperCase()

例题:字母大小写转换

在这里插入图片描述

4.8字符串分割

1.split(String sign)

该方法可根据给定的分隔符对字符串进行拆分。语法如下:

str.split(String sign)

其中,sign为分割字符串的分隔符,也可以使用正则表达式。

2.split(String sign,int limit)

该方法可根据给定的分隔符对字符串进行拆分,并限定拆分的次数。语法如下:

 split(String sign,int limit)
  • sign:分割字符串的分隔符,也可以使用正则表达式。
  • limit:限制的分割次数

例题: 按要求分割字符串

在这里插入图片描述

5.格式化字符串

String.format()方法有两种重载形式:

1.format(String format, Object… args)

该方法使用指定的格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境。语法如下:

str.format(String format, Object... args)
  • format:格式化字符串
  • args:可变参数,用于替换占位符的参数。
2.format(Locale l, String format, Object… args)

该方法使用指定的语言环境,格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用其指定的语言环境。语法如下:

str.format(Locale l, String format, Object... args)
  • l:格式化过程中要应用的语言环境。如果l为null,则不进行本地化。
  • format:格式化字符串。
  • args:可变参数。

5.1日期和时间字符串格式化

在应用程序设计中,经常需要显示日期和时间。如果想输出满意的日期和时间格式,一般需要写大量的代码,经过各种算法才能实现。format()方法通过给定的特殊转换符作为参数来实现对日期和时间的格式化。

1.日期格式化

先来看一个例子,返回一个月中的天数,代码如下:

Date date = new Date();    //创建Date对象date

String s = String.format("%te",date);    //通过format()方法对date进行格式化

上述代码中变量s的值是当前日期中的天数,如今天是11号,则s的值为11;%te是转换符。常用的日期格式化转换符如图所示:

img

例题:按照格式输出今天的时间

在这里插入图片描述

2.时间初始化

时间格式化指将时间按照一定的格式展示出来,常见的格式包括年、月、日、时、分、秒等。使用format()方法就能完成。格式化时间的转换符如图:

img

3.格式化常见的日期时间组合

格式化日期与时间组合的转换符定义了各种日期时间组合的格式,其中最常用的如表所示:

img

5.2常规类型格式化

常规类型格式化可用于任何参数类型,可通过下面表中所示的转换符来实现。

在这里插入图片描述

例题:使用转换符获取表达式的结果

在这里插入图片描述

6.使用正则表达式

正则表达式是一种用来匹配字符串的模式,是一种语法规则,可以用来检查一个字符串是否符合一定的规则,也可以从一个字符串中获取符合特定规则的子串。正则表达式就是含有一些特殊意义字符的字符串,特殊字符称为正则表达式中的元字符,例如“\d”表示数字0~10中的任何一个,“\d”就是元字符。

例题:验证E-mail地址是否“合法”

在这里插入图片描述

7. 字符串生成器

字符串生成器(StringBuilder)是Java中一个可变的字符串类,它和String类很相似,但是可以进行修改和添加操作。和String不同,StringBuffer是线程安全的,也就是说,可以在多线程环境下使用。StringBuilder是非线程安全的,也就是说,StringBuilder不能保证在多线程环境下使用时不会出现问题。

字符串生成器是在Java 1.5中引入的,StringBuilder是它的一个扩展类。StringBuilder的使用方法和String类基本一致,可以进行字符串拼接、替换等操作。与String类不同的是,StringBuilder的操作都是在原字符串上进行的,不会创建新的字符串对象,因此效率更高。

例题:效率比拼

在这里插入图片描述

通过这一实例可以看出两种操作执行的时间差距很大。如果在程序中频繁地附加字符串,建议使用StringBuilder类。若要使用StringBuilder类最后输出字符串的结果,可使用toString()方法。利用StringBuilder类中的方法可动态地执行添加、插入和删除等字符串的编辑操作。该类的常用方法如下:

1.append()方法:

将指定的字符串或对象添加到此字符序列的末尾。语法如下:

append(content)
2.insert()方法:

在此字符序列中插入指定的字符或对象。语法如下:

insert(int offset arg)
3.delete()方法:

从此字符序列中删除一系列字符。语法如下:

delete(int start, int end
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值