字符串
字符串是Java程序中经常处理的对象,如果字符串运用得不好,将影响到程序运行的效率。在Java中,字符串作为String类的实例来处理。以对象的方式处理字符串,将字符串更加灵活、方便。了解字符串上可用的操作,可以节省程序编写与维护的时间。本章从创建字符串开始向读者讲解字符串本身的特性以及字符串上可用的重要操作等。
本章的知识价格及重难点如下。🚩表示重点内容,⭐表示难点内容
一、String类
单个字符可以用char类型保存,多个字符组成的文本就需要保存在String对象中。String通常被称为字符串,一个String对象最多可以保存(2³²–1)个字节(占用4GB空间大小)的文本内容。
1.声明字符串
在Java语言中,字符串必须包含在一对双引号("")之内。例如:
"23.23"、"ABCDE"、"你好"
以上这些都是字符串常量,字符串常量可以是系统能够显示的任何文字信息,甚至可以是单个字符。
误区警示
在Java中由双引号("")包围的都是字符串,不能作为其他数据类型来使用,如"1+2"的输出结果不可能是3。
可以通过以下语法格式来声明字符串变量:
String str;
String:指定该变量为字符串类型
str:任意有效的标识符,表示字符串变量的名称。
声明字符串变量s,代码如下:
String s;
说明:声明的字符串变量必须经过初始化才能使用,否则编译器会报出“变量未被初始化错误”。
2.创建字符串
在Java语言中,将字符串作为对象来处理,因此可以像创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法。String类的常用构造方法如下。
(1)String(char a[])
该方法用一个字符数组a创建String对象,代码如下:
char a[] = {'g','o','o','d'};
String s = new String(a);
等价于 ||
\_/
String s = new String("good")
(2)String(char a[],int offset,int length)
该方法提取字符数组a中的一部分创建一个字符串对象。参数offset表示开始截取字符串的位置,length表示截取字符串的长度。代码如下:
char a[] = {'s','t','u','d','e','n','t'};
String s = new String(a,2,4);
等价于 ||
\_/
String s = new string("uden");
(3)String(char[] value)
该构造方法可分配一个新的String对象,使其表示字符数组参数中所有元素连接的结果。代码如下:
char a[] = {'s','t','u','d','e','n','t'};
String s = new String(a);
等价于 ||
\_/
String s = new String("Student");
除通过以上几种使用String类的构造方法来创建字符串变量外,还可通过将字符串常量的引用赋值给一个字符串变量来创建字符串。代码如下:
String str,str2;
str1 = "We are students"
str2 = "We are students"
此时,str1与str2引用相同的字符串常量,因此具有相同的实体,内存示意图如下图:
二、连接字符串
对于已声明的字符串,可以对其进行相应的操作,连接字符串就是字符操作中较简单的一种。可以对多个字符串进行连接,也可使字符串与其他数据类型进行连接。
1.连接多个字符串
使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个String对象并产生一个新的Stiring对象。
例题1:先连接一副对联的上、下联,再分行输出在控制台上
在项目中创建Join类,在主方法中创建两个String型变量,它们的值分别使“春色绿千里”和“马蹄香万家”,使用“+”运算符连接这两个String型变量和“\n”,在控制台上输出连接后的字符串。实例代码和结果如下图:
2.连接其他数据类型
字符串也可同其他基本数据类型进行连接。如果字符串同其他数据类型进行连接,会将其他数据类型的数据直接转换成字符串。
例题2:统计每天的阅读和上机时间
在项目中创建Link类,在主方法中创建数值型变量,实现将字符串与整型、浮点型变量相连接的结果输出。实例代码和运行结果如下:
本实例实现的是将字符串常量与整型变量booktime和浮点型变量practice相连后的结果输出。在这里booktime和practice都不是字符串,当它们与字符串相连接时会自动调用toString()方法并转换成字符串形式,然后参与字符串连接。
误区警示:
只要“+”运算符的一个操作是字符串,编译器就会将另一个操作数转换成字符串形式,所以应谨慎地将其他数据类型的数据与字符串相连,以免出现意想不到的结果。
如果将上面例题2中的输出语句修改为:
System.out.println("我每天花费"+booktime+"小时看书";+(practice+booktime)+"小时上机练习");
则输出结果如下图:
为什么会这样呢?这是由于运算符是有优先级的,圆括号的优先级最高,所以先被执行,然后再将结果与字符串相连接。
String类和连接字符串的笔记:
三、获取字符串信息
字符串作为对象,可通过相应方法获取字符串的有效信息,如获取某字符串的长度、某个索引位置的字符等。
1.获取字符串长度
使用String类的length()方法可获取声明的字符串对象的长度。语法如下:
str.length();
其中,str为字符串对象。
获取字符串长度,代码如下:
String str = "We are students";
int size = str.length();
上段代码是将字符串str的长度赋值给int型变量size,此时变量size的值为15,这表示length()方法返回的字符串的长度(包括字符串中的空格)。
2.字符串查找
String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。indexOf()方法返回的是搜索的字符或字符串首次出现的位置,lastIndexOf()方法返回的是搜索的字符或字符串最后一次出现的位置。
(1)indexOf(String s)
该方法用于返回参数字