第十章总结

10.1 String类

String类是Java中非常重要的一个类,用于表示字符串。字符串是一个非常常见的数据类型,可以用来表示文本、数字等等。String类的实例是不可变的,也就是说,一旦创建了一个String对象,就不能再修改它的值。这使得String类非常适合用于表示常量和不可变的文本数据。

10.1.1 声明字符串

Java语言里,字符串必须包含在一对双引号(””)之内

"22.22" "Adadkn"  "你好"

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

String str;

String:指明该变量为字符串类型

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

10.1.2 创建字符串

在Java语言中,将字符串作为对象来处理,因此可以像创建其他类一样来创建字符串变量,创建对象要使用类的构造方法,String类的常用构造方法如下:

除通过以上几种使用String类的构造方法来创建字符串变量外,还可以通过将字符串常量的引用赋值给一个字符串来创建字符串,代码如下:

10.2 连接字符串

对于已声明的字符串,可以对其进行相应的操作,连接字符串就是字符操作中较简单的一种,可以对多个字符串进行连接,可以使字符串与其他数据类型进行连接。

10.2.1 连接多个字符串

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

例题10.1:先连接一副对联的上,下联。在分行输出在控制台上面

10.2.2 连接其他数据类型

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

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

10.3 获取字符串信息

10.3.1 获取字符串长度

获取字符串长度可以使用String类的length()方法,该方法返回字符串中字符的个数,如下所示:

String str = "Hello World!";

int len = str.length(); // len的值为12

在上述代码中,str.length()返回字符串str中字符的个数,即12个字符。

10.3.2 字符串查找

在Java中,可以使用以下方法来查找字符串:

1.indexOf():查找字符串中某个子串的位置,如果找到了,则返回第一个匹配的子串的起始位置,否则返回-1。

例如:

String str = "hello world";

int index = str.indexOf("world");

System.out.println(index); // 输出6

2.lastIndexOf():和indexOf()方法类似,只不过是从字符串的末尾开始查找。

例如:

String str = "hello world";

int index = str.lastIndexOf("o");

System.out.println(index); // 输出7

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

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

 要获取指定索引位置的字符,可以使用String类的charAt()方法。该方法接受一个整数参数,表示要获取的字符所在的索引位置,返回对应位置上的字符。需要注意的是,字符串中的索引是从0开始的。语法如下:

str.charAt(int index)

str:任意字符串

index:整型值,用于指定要返回字符的下标 

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

10.4 字符串操作 

String类中包含了很多方法,允许程序员对字符串进行操作来满足实际编程中的需要。本节将讲解几种常见的字符串操作。

10.4.1 获取子字符串

获取子字符串可以使用 substring() 方法,它可以对字符串进行截取,substring()方法被两种不同的重载形式,来满足不同的需要。其语法如下:

public String substring(int beginIndex)
public String substring(int beginIndex, int endIndex)

其中,beginIndex 表示子字符串的起始索引位置(包含该位置),endIndex 表示子字符串的结束索引位置(不包含该位置)。如果省略 endIndex 参数,则子字符串的结束索引位置默认为字符串的末尾。

例如:

String str = "hello world";
String subStr1 = str.substring(3); // "lo world"
String subStr2 = str.substring(0, 5); // "hello"

使用substring(3)截取字符串的过程如图:

例题10.5:《将进酒》的作者是哪位诗人?

10.4.2 去除空格 

trim()方法返回字符串副本,忽略前导空格和尾部空格。语法如下:

str.trim()

例题10.6: 去掉字符首,尾的空格

10.4.3 字符串替换 

字符串替换可以使用String类的replace方法来实现。其基本语法如下:

String str = "hello world";
String newStr = str.replace("world", "java");

上述代码中,首先定义了一个字符串str,然后调用其replace方法,将其中的字符'l'替换为'L',得到一个新字符串newStr,最后将新字符串输出。

需要注意的是,replace方法返回的是一个新的字符串,原字符串并没有改变。如果字符或字符串oldChar出现在该对象表达式中的字符串序列中,则将原字符串返回。

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

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

判断字符串的开始与结尾可以使用startsWith()和endsWith()方法,它们都是String类的实例方法。

1.startsWith(String prefix)方法用于判断字符串是否以指定的前缀开头,如果是则返回true,否则返回false。参数prefix是要检查的前缀字符串。语法如下:

str.startsWith(String prefix)

2.endsWith(String suffix)方法用于判断字符串是否以指定的后缀结尾,如果是则返回true,否则返回false。参数suffix是要检查的后缀字符串。语法如下:

str.endsWith(String suffix)

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

10.4.5 判断字符串是否相等

字符串的相等判断需要使用equals()或equalsIgnoreCase()方法,不能使用==或!=运算符,因为==或!=比较的是对象的引用是否相等,而不是字符串的内容是否相等。

1.equals()方法

如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回true。否则,返回false。语法如下:

str.equals(String otherstr)

其中,str,otherstr是要比较的两个字符串对象。

2. equalsIgnoreCase()方法

使用equals()方法对字符串进行比较时是区分大小写的,而是用equalsIgnoreCase()方法是在忽略了大小写的情况下比较两个字符串是否相等,返回结果仍为Boolean类型。语法如下:

str.equalsIgnoreCase(String otherste)

其中,str,otherstr是要比较的两个字符串对象。

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

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

可以使用 compareTo() 方法按字典顺序比较两个字符串,返回值如下:

如果字符串与参数相等,返回0。

如果字符串在字典顺序中排在参数之前,返回小于0的值。

如果字符串在字典顺序中排在参数之后,返回大于0的值。

语法如下:

str.compaerTo(String otherstr)

其中,str,otherstr是要比较的两个字符串对象。

例题10.10:判断字母b的位置

10.4.7 字母大小写转换

要将字符串中的字母大小写进行转换,可以使用toUpperCase()和toLowerCase()方法。

toLowerCase()方法将字符串中的所有大写字母转换成小写字母。

toUpperCase()方法将字符串中的所有小写字母转换成大写字母。

1.toLowerCase()方法

该方法将字符串中的所有大写字符转换成小写。如果字符串中没有应该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原字符串中的每个大写字母都转换成小写,字符长度不变。语法如下:

str.toLowerCase()

2.toUpperCase()方法

该方法将字符串中的所有小写字符转换成大写。如果字符串中没有应该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原字符串中的每个小写字母都转换成大写,字符长度不变。语法如下:

str.toUpperCase()

例题10.11:字母大小写转换 

 

10.4.8 字符串分割 

字符串分割指将一个字符串按照指定的分隔符拆分成多个子字符串。Java中,字符串分割可以通过String类的split()方法来实现。

1.split(String sign)

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

str.split(String sign)

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

2.split(String sign,int limit)

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

 split(String sign,int limit)

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

limit:限制的分割次数

例题10.12:按要求分割“192.168.0.1”

10.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:可变参数。 

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

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

1.日期格式化

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

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

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

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

例题10.13:按照格式输出今天的年,月,日。其中,输出格式为4位年份,月份全称和2位日期。

 

2.时间格式化

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

例题10.14:按照格式输出当下的时,分,秒 

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

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

 例题10.15:按照格式输出当下的年,月,日

 

10.5.2 常规类型格式化 

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

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

10.6 使用正则表达式

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

670d5b58a1715fdfa04c4b46ba187889.png

 bc13fc79798c0ba74f454821df213397.png

注意:“.”也可以用转义字符“\”来使用,如“\\.”

在正则表达式中允许使用限定修饰符来限定元字符出现的次数。例如“A*”代表A可在字符串中出现0次或多次。限定修饰符的用法如表所示:

16402377d74ffa89b61068584375dd9d.png

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

10.7 字符串生成器 

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

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

例题10.18:效率比拼

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

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

append(content)

2.insert()方法:在此字符序列中插入指定的字符或对象。语法如下:

insert(int offset arg)

3.delete()方法:从此字符序列中删除一系列字符。语法如下:

delete(int start, int end

StringBuilder bf = new StringBuilder("StringBuilder");    //创建字符串生成器
bf.delete(5,10);                       //删除的子字符串
System.out.println(bf.toString());    //此时输出的信息为Strinder

 

结束力 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值