Java编程基础(6)
Java基础知识:Java字符串的处理
一般程序需要处理大量文本数据,Java 语言的文本数据被保存为字符或字符串类型。关于字符及字符串的操作主要用到 String 类和 StringBuffer 类,如连接、修改、替换、比较和查找等。
字符串是 Java 程序中经常处理的对象之一,因此如果字符串运用得不好,将影晌到程序的运行效率。
字符串学习要点
掌握定义字符串的方法
掌握字符串之间以及与其他类型数据转换的方法
掌握获取字符串长度的方法
掌握字符串的大小写转换
掌握如何提取和分割字符串
掌握如何替换和比较字符串
熟悉 StringBuffer 类操作字符串的方法
了解正则表达式如何操作字符串
1.Java定义字符串
在 Java 中定义一个字符串最简单的方法是用双引号把它包围起来。这种用双引号括起来的一串字符实际上都是 String 对象,如字符串"Hello"在编译后即成为 String 对象。因此也可以通过创建 String 类的实例来定义字符串。
不论使用哪种形式创建字符串,字符串对象一旦被创建,其值是不能改变的,但可以使用其他变量重新赋值的方式进行更改。
直接定义字符串
直接定义字符串是指使用双引号表示字符串中的内容,例如"Hello Java"、"Java 编程"等。具体方法是用字符串常量直接初始化一个 String 对象,示例如下:
String str="Hello Java";
或者
String str;
str="Heilo Java";
注意:字符串变量必须经过初始化才能使用。
使用 String 类定义
在 Java 中每个双引号定义的字符串都是一个 String 类的对象。因此,可以通过使用 String 类的构造方法来创建字符串,该类位于 java.lang 包中,作用域是 final。
String 类的构造方法有多种重载形式,每种形式都可以定义字符串。下面介绍最常用的几种形式。
1. String()
初始化一个新创建的 String 对象,表示一个空字符序列。
2. String(String original)
初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列。换句话说,新创建的字符串是该参数字符串的副本。例如:
String str1=newString("Hello Java");
String str2=newString(str1);
这里 str1 和 str2 的值是相等的。
3. String(char[ ]value)
分配一个新的字符串,将参数中的字符数组元素全部变为字符串。该字符数组的内容已被复制,后续对字符数组的修改不会影响新创建的字符串。例如:
chara[]={'H','e','l','l','0'};
String sChar=newString(a);
a[1]='s';
上述 sChar 变量的值是字符串"Hello"。 即使在创建字符串之后,对 a 数组中的第 2 个元素进行了修改,但未影响 sChar 的值。
4. String(char[] value,int offset,int count)
分配一个新的 String,它包含来自该字符数组参数一个子数组的字符。offset 参数是子数组第一个字符的索引,count 参数指定子数组的长度。该子数组的内容已被赋值,后续对字符数组的修改不会影响新创建的字符串。例如:
chara[]={'H','e','l','l','o'};
String sChar=newString(a,1,4);
a[1]='s';
上述 sChar 变量的值是字符串"Hello"。该构造方法使用字符数组中的部分连续元素来创建字符串对象。offset 参数指定起始索引值,count 指定截取元素的个数。创建字符串对象后,即使在后面修改了 a 数组中第 2 个元素的值,对 sChar 的值也没有任何影响。
2.Java连接字符串
对于已经定义的字符串,可以对其进行各种操作。连接多个字符串是字符串操作中最简单的一种。通过字符串连接,可以将两个或多个字符串、字符、整数和浮点数等类型的数据连成一个更大的字符串。
使用连接运算符
“+”运算符是最简单、最快捷,也是使用最多的字符串连接方式。在使用“+”运算符连接字符串和 int 型(或 double 型)数据时,“+”将 int(或 double)型数据自动转换成 String 类型。
上述代码首先创建了 3 个包含有 5 个元素的数组,然后循环遍历数组,遍历的次数为 5。在循环体内输出学号、姓名和课程,并使用“+”运算符连接班级最终形成一个字符串。
当定义的字符串值的长度过长时,可以分作多行来写,这样比较容易阅读。
使用 concat() 方法
在 Java 中,String 类的 concat() 方法实现了将一个字符串连接到另一个字符串的后面。concat() 方法语法格式如下:
字符串 1.concat(字符串 2);
执行结果是字符串 2 被连接到字符串 1 后面,形成新的字符串。
连接其他类型数据
前面介绍的例子都是字符串与字符串进行连接,其实字符串也可同其他基本数据类型进行连接。如果将字符串同这些数据类型数据进行连接,此时会将这些数据直接转换成字符串。
上述代码实现的是将字符串变量 book 与整型变量 price 和浮点型变量 readtime 相连后将结果输出。在这里定义的 price 和 readtime 都不是字符串,当它们与字符串相连时会自动调用自身的 toString() 方法将其转换成字符串形式,然后再参与连接运算。
注意:只要“+”运算符的一个操作数是字符串,编译器就会将另一个操作数转换成字符串形式,所以应该谨慎地将其他数据类型与字符串相连,以免出现意想不到的结果。
3.Java获取字符串长度(length())
在 Java 中,要获取字符串的长度,可以使用 String 类的 length() 方法,其语法形式如下:
字符串名.length();
上述代码将用户输入的密码保存到字符串变量 pass 中,再调用 pass.length() 方法将长度保存到 length 变量,然后使用 if 语句根据长度给出提示。
4.Java转换大小写(toLowerCase()和toUpperCase())
String 类的 toLowerCase() 方法可以将字符串中的所有字符全部转换成小写,而非字母的字符不受影响。语法格式如下:
字符串名.toLowerCase() //将字符串中的字母全部转换为小写,非字母不受影响
toUpperCase() 则将字符串中的所有字符全部转换成大写,而非字母的字符不受影响。语法格式如下:
字符串名.toUpperCase() //将字符串中的字母全部转换为大写,非字母不受影响
程序运行结果为:
5.Java去除空格(trim())
字符串中存在的首尾空格一般情况下都没有任何意义,如字符串" Hello",但是这些空格会影响到字符串的操作,如连接字符串或比较字符串等,所以应该去掉字符串中的首尾空格,这需要使用 String 类提供的 trim() 方法。
trim() 方法的语法形式如下:
字符串名.trim()
使用 trim() 方法的示例如下:
String str=" hello ";
System.out.println(str.length());//输出 9
System.out.println(str.trim().length());//输出 5
从该示例中可以看出,字符串中的每个空格占一个位置,直接影响了计算字符串的长度。
技巧
如果不确定要操作的字符串首尾是否有空格,最好在操作之前调用该字符串的 trim() 方法去除首尾空格,然后再对其进行操作。