字符串类(String类)的对象一经创建其字符串常量便不能变动。在前面的程序中我们已经多次使用了字符串常量。例如输出语句中的参数之一“Input an Integer data\n”就是字符串常量,只是当时并未明确提出这个概念。在学习String类的知识之前,先强调一点,那就是请读者把本章要学习的字符串常量与我们在第2章中学习过的字符常量加以区分。字符常量是用单引号括起的单个字符,例如,“'A' '\n'”等。而字符串常量是用双引号括起的字符序列,例如,“"A""\n""Java Now"”等。在Java语言中,字符串常量通常是作为String类的对象而存在的,有专门的成员方法来表明它的长度。本节主要讨论String类对象的创建、使用和操作等。
1.创建String对象
Java语言规定字符串常量必须用双引号括起,一个串可以包含字母、数字和各种特殊字符,如+、−、*、/、$等。在我们前面的程序范例中已多次使用过字符串常量,例如:
中的“OK!”就是字符串常量。Java的任何字符串常量都是String类的对象,只不过在没有明确命名时,Java自动为其创建一个匿名String类的对象,所以,它们也被称为匿名String类的对象。我们可以用下面的方法创建String类的对象,例如:
该语句创建String类的对象,并通过赋值号将匿名String类的对象"Java"赋值给c1引用,我们将此对象称为对象c1,如图3-8所示。String类的对象一经创建,便有一个专门的成员方法来记录它的长度。
图3-8 字符串对象c1的示意图
2.String类的构造方法
String类中提供了多种方法来创建String类的对象,见表3-1。
表3-1 String类的构造方法
【例3-8】String类的7种构造方法的使用。
运行结果如下:其中s5是由字节数组byteArray创建的字符串,数组的每个字节的值代表汉字的国际机内码。汉字的国际机内码(GB2312码)用两个字节编码构成一个汉字,数组的码构成“面向对象”4个汉字。−61与−26组成汉字“面”,其余类推。
3.String类的常用方法
在创建一个String类的对象后,使用相应类的成员方法对创建的对象进行处理,即可完成编程所需要的功能。Java.lang.String类的常用成员方法如下。
●length() 返回当前串对象的长度。
●charAt(int index)返回当前串对象下标index处的字符。
●indexOf(char ch)返回当前串中第一个与指定字符ch相同的下标,若找不到,返回−1。如"abcd".indexOf('c')的值为2,"abcd".indexOf('Z')值为−1。
●indexOf(String s,int fromIndex)从当前下标fromIndex处开始搜索,返回第一个与指定字符串s相同的串的第一个字母在当前串中的下标,若找不到,则返回−l。例如,"abcd".indexOf("cd",0)的值为2。
●substring(int beginIndex);返回当前串中从下标beginIndex开始到串尾的子串。例如,String s="abcde".substring(3),s值为"de"。
●substring(int beginIndex,int endIndex)返回当前串中从下标beginIndex开始到下标endIndex1结束的子串。例如,String s="abcdetyu".substring(2,5),s值为"cde"。
【例3-9】字符串对象常用成员方法应用举例。
运行结果如下:
在上述程序中值得注意的语句是
Java用反斜杠加双引号"\""表示保留字符双引号'"',解决了放在双引号下的字符串中含有双引号的表示问题。
4.字符串比较(www.xing528.com)
常用的字符串比较成员方法有equals()、equalsIgnoreCase()及compareTo()。它们用法及功能如下:
1)str1.equals(str2),当且仅当字符串str1与str2的字符(包括大小写)均相同时,返回true,否则返回false。例如表达式"Computer".equals("computer")的结果为false,因为第一个字符的大小写不同。
2)str1.equalsIgnoreCase(str2)与equals()方法的功能类似,不同之处是不区分字母的大小写。例如表达式"Computer".equalsIgnoreCase("computer")的结果为true。
3)str1.compareTo(str2),将字符串str1和str2按在字典中先后出现为序进行比较,若返回值n=str1.compareTo(str2)<0,则str1<str2,即在Java字典排序中字符串str1排在str2之前。类似地,得到n=0,即str1=str2,包括大小写两串均相同。当n>0,则str1>str2,在字典中字符串str2排在str1之前。注意这里的Java字典排序是按字母在Unicode字符集中的值排列的,与英语字典排序有所不同,比如,大写字母比所有小写字母的值更小,所以会出现"Welcome"<"java",即"Welcome"排在"java"之前。
【例3-10】若干字符串比较成员方法的使用。
运行结果如下:
这里需要特别注意的是两个字符串是否相等的比较。在其他语言中,比如,C/C++语言中常用等于号“==”来比较两个变量的值是否相等。Java对于字符串的比较是否相等时不能用等于“==”。如果用了等于号进行比较,在编译时系统并不给出错误的信息,但在比较结果时,即使实际上s3==s4,系统也将作出“s3!=s4”的错误判断。上面例3-10运行结果证实了这一点。
5.字符串操作
字符串操作是指用已有的字符串对象产生新的字符串对象。常用的成员方法有concat()、replace()、toLowerCase()及toUpperCase()。
【例3-11】字符串的连接、替换和字母大小写转换操作。
运行结果如下:
6.字符串与其他类型数据的转换
String类中的valueOf()方法可以将其他类型的数据转换成字符串。这些类型可以是boolean,char,int,long,float,double等。
【例3-12】将其他类型的数据转换成字符串。
运行结果如下:
在应用中常常也要将从文本框等控件接收的字符串转换为int,float,double等数据类型,然后可以进行运算。可以用方法Integer.parseInt(String s),Float.valueOf(String s),Double.valueOf(String s)解决此类问题。
7.main()方法中的参数String
在Java独立应用程序中,必须写public static void main(String[]args)。main()方法中有一个参数是字符串数组args,这个数组的元素args[0],args[1],…,args[n]的值都是字符串,args就是命令行的参数。在Java解释器解释用户的字节码文件时,运行命令可以包括需要传给main()方法的参数。一般形式为:
其中,类文件名和各字符串间用空格分隔。
【例3-13】运行时需要输入参数的main()方法。
程序运行时输入"javaString6
Hello
World!"命令,则有如下的结果:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。