Java数组与字符串.ppt_第1页
Java数组与字符串.ppt_第2页
Java数组与字符串.ppt_第3页
Java数组与字符串.ppt_第4页
Java数组与字符串.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章 数组与字符串 数组是相同类型的数据按顺序组成的一种复合数据类型。通过数组名加数组下标,来 使用数组中的数据。下标从0开始排序。 51 声明数组 声名数组包括数组的名字、数组包含的元素的数据类型。 声明一维数组有下列两种格式: 数组元素类型 数组名字:int a; 数组元素类型 数组名字;int a; 声明2维数组有下列两种格式: 数组元素类型 数组名字;int a; 数组元素类型 数组名字;int a; 例如: float boy; double girl;char cat;char dog; float a; double b;char d;char dog; 将来数组boy的元素可以存放float型数据。 数组的元素的类型可以是Java的任何一种类型。假如已经定义了一个People类,那么 可以声明一个数组: People china;People china;/People类的对象数组 将来数组china元素可以存放People类型数据,即People类创建的对象。 52 创建数组 声明数组仅仅是给出了数组名字和元素的数据类型,要想真正地使用数组还必须为它 分配内存空间,即创建数组。在为数组分配内存空间时必须指明数组的长度。为数组 分配内存空间的格式如下: 数组名字=new 数组元素的类型数组元素的个数; 例如 :boy=new float7; 声明数组和创建数组可以一起完成,例如: float boy=new float7; 二维数组和一维数组一样,在定义之后必须用new运算符分配内存空间,例如: int mytwo; mytwo=new int35; 或 int mytwo=new int34; 注:和C语言不同的是,Java允许使用int型变量指定数组的大小,例如: int size=30; double number=new doublesize; size=20; /我们现在提到的数组是定长的 53 数组元素的使用 一维数组通过下标符访问自己的元素,如boy0、boyll等。需要注意的是下标从0开始 ,因此,数组若是7个元素,下标到6为止,如果使用了如下语句将发生异常。 boy7=384.98f; 二维数组也通过下标符访问自己的元素,如a01,a12等。需要注意的是下标从0开 始,比如声明创建了一个二维数组a: int a=new int23;a00=0; 那么第一个下标的变化范围从0到1,第二个下标变化范围从0到2。如果使用了如下语 句将发生异常。 a21=38;a03=90; 例子:shuzu1.java import java.applet.*; import java.awt.*; public class shuzu1 extends Applet float a; public void init() a=new float 5; a0=23.9f;a1=34.9f;a2=45f;a3=56.98f;a4=100f; public void paint (Graphics g) g.drawString(“a0=“+a0+“a1=“+a1+“a2“+a2+“a3=“+a3+“a4=“+ a4,12,12); 注:有一个重要的表示数组长度的(即元素的个数)格式。例如创建了float a=new float6 ,则a.length的值为6。 54数组的初始化 创建数组后,系统会给每个数组元素一个默认的值,如float型是0.0。 我们在声明数组时,同时也还可以给数组的元素一个初始值,如: float boy=12.3f,23.89f,2.0f,23f,578.98f; 上述语句相当于: float boy=new float5; boy0=12.3f;boy1=23.89f;boy2=2.0f;boy3=23f;boy4=578.98f; 例如: String S=“we“,“are“,“hello“,“123“,“who?“; 55 字符串 Java使用java.lang包中的String类来创建一个字符串变量,因此字符串变量是类类型 变量,是一个对象。 1字符串常量: 如“你好“,“1234.987“,“weqweo“。”a” a 2声明字符串: String S; 3创建字符串: 使用String类的构造方法。 例如: S=new String(“We are students“); 也可写成: S=“We are students“; 声明和创建可用一步完成: String S=new String(“We are students“); 或 String S=“We are students“; 也可以用一个已创建的字符串创建另一个字符串,如: String tom=new String(S); 相当于:String tom=“We are students“; String类还有两个较常用构造方法。 (1) String(char a):用一个字符数组a创建一个字符串对象,例如: char a=b,o,y; String s=new String(a); 上述过程相当于: String s=“boy“; (2)String(char a,int startIndex,int count):提取字符数组a中的一部分字符创建一个字符 串对象,参数startIndex和count分别指定在a中提取字符的起始位置和从该位置开始截 取的字符个数,例如: char a=s,t,b,u,s,n; String S=new String(a,2,3); 上述过程相当于: String S=“bus“; 551 怎样获取字符串的长度 使用String类中的length()方法可以获取一个字符串的长度,如: String s=“we are students”,tom=“我们是学生”; int nl,n2; n1=s.length(); n2=tom.length(); 那么n1的值是15,n2的值5。 字符串常量也可以使用length()获得长度,如”你的爱好”.length()的值是4。 字符串比较 1equals方法 字符串对象调用String类中的public boolean equals(String s)方法,比较当前 字符串对象的实体是否与参数指定的字符串s的实体相同,如: String tom=new String(“we are students“); String boy=new String(“We are students“); String jerry= new String(“we are students“); tom.equals(boy)的值是false,tom.equals(jerry) 的值是true。 注:tom=jerry的值是false。因为字符串是对象,tom、jerry是引用。 2equalsIgnoreCase方法 equalsIgnoreCase 字符串对象调用public boolean equalsIgnoreCase(String s)方法,比较当前字 符串对象与参数指定的字符串s是否相同,比较时忽略大小写,如: String tom=new String(“ABC“), Jerry=new String(“abc“); tom.equalsIgnoreCase(Jerry)的值是true。 0x54c78 0xAb98 tom jerry we are students we are students 字符串对象调用public boolean startsWith(String s)方法,判断当前字符串对象的前缀 是否是参数指定的字符串s,如:endsWith(String s) String tom=“220302620629021“,jerry=“21079670924022“; tom.startsWith(“220“)的值是true;jerry.startsWith(“220“)的值是false。 如:例题starwith.java 4regionMatches方法 字符串调用public boolean regionMatches(int firstStart,String other,int otherStart,int length)方法,从当前字符串参数firstStart指定的位置开始处,取长度为length的一个子 串,并将这个子串和参数other指定的一个子串进行比较,其中,other指定的子串是从 参数otherStart指定的位置开始,从other中取长度为length的一个子串。如果两个子串 相同该方法就返回true,否则返回false。 使用该方法的重载方法public boolean regionMatches(boolean b,int firstStart,String other,int otherStart,intlength)可以通过参数b决定是否忽略大小写,当b取true时,忽略 大小写。 在下面的例子rematch中,我们判断:个字符串中共出现了几个en。 5.compareTo、compareToIgnoreCase方法 字符串对象可以使用String类中的public int compareTo(String s)方法,按字典序与参 数s指定的字符串比较大小。如果当前字符串与s相同,该方法返回值0;如果当前字符 串对象大于s,该方法返回正值;如果小于s,该方法返回负值。例如:String str=“abcde“;pareTo(“boy“)小于0;pareTo(“aba“)大于0; pareTo(“abcde“)等于0。 按字典序比较两个字符串还可以使用public int compareToIgnoreCase(String s)方法, 该方法忽略大小写。 下面的例子54将一个字符串数组按字典序重新排列。 553 字符串检索 1搜索指定字符串出现的位置 public int indexOf(String s):字符串调用该方法从当前字符串的头开始检索字符串s, 并返回首次出现s的位置。如果没有检索到字符串s,该方法返回的值是1。 public int indexOf(String s,int startpoint):字符串调用该方法从当前字符串的 startpoint位置处开始检索字符串s,并返回首次出现s的位置。如果没有检索到字符串s ,该方法返回的值是-1。 public int lastIndexOf(String s):字符串调用该方法从当前字符串的头开始检索字 符 串s,并返回最后出现s的位置。如果没有检索到字符串s,该方法返回的值是-1。 public int lastIndexOf(String s,int startpoint):字符串调用该方法从当前字符串的 starpoint位置处开始检索字符串s,并返回最后出现s的位置。如果没有检索到字符串s ,该方法返回的值是-1。 例如: String tom=“I am a good cat“; tom.indexOf(“a“); /值是2 tom.indexOf(“good“,2); /值是7 tom.indexOf(“a“,7); /值是13 tom.indexOf(“w“,2); /值是-1 2搜索指定字符出现的位置 public int indexOf(char c):字符串调用该方法从当前字符串的头开始检索字符char,并 返回首次出现char的位置。如果没有检索到字符串s,该方法返回的值是-1。 public int indexOf(char c,int startpoint):字符串调用该方法从当前字符串的startpoint位 置处开始检索字符char,并返回首次出现char的位置。如果没有检索到字符串s,该方 法返回的值是-1。 public int lastIndexOf(char c):字符串调用该方法从当前字符串的头开始检索字符char ,并返回最后出现char的位置。如果没有检索到字符char,该方法返回的值是-1。 public int lastIndexOf(char c,int startpoint):字符串调用该方法从当前字符串的 startpoint位置处开始检索字符char,并返回最后出现char的位置。如果没有检索到字 符char,该方法返回的值是-1。 554 字符串的截取 public String substring(int startpoint):字符串对象调用该方法获得一个当前字符串的子 串,该子串是从当前字符串的startpoint处截取到最后所得到的字符串。 public String substring(int start,int end):字符串对象调用该方法获得一个当前字符串 的子串,该子串是从当前字符串的start处截取到end处所得到的字符串,但不包括end 处所对应的字符。 例如: String tom=“I love tom“; String s=tom.substring(2,6); s是love 555 替换 public String replace(char oldChar,char newChar):字符串对象s调用该方 法可以获得一个字符串对象,这个串对象是用参数newChar指定的字符替换s 中由oldChar指定的所有字符而得到的字符串。 public String replaceAll(String old,String new):字符串对象s调用该方法可以 获得一个字符串对象,这个串对象是通过用参数new指定的字符串替换s中由 old指定的所有字符串而得到的字符串。 public String trim():一个字符串s通过调用方法trim()得到一个字符串对象,该 字符串对象是s去掉前后空格后的字符串。 例如: String s=“I mist theep“; String temp=s.replace(t,s); temp是I miss sheep。 String S=“ I am a student “; String temp=S.trim(); temp是“I am a student” 5.5.6 字符串转化为相应的数值 1转化为整型 java.lang包中的Integer类调用其类方法: public static int parseInt(String S) 可以将“数字“格式的字符串,如12387,转化为int型数据。例如: int x; String s=“6542“; x=Integer.parseInt(s); 类似地,使用java.lang包中的Byte、Short、Long类调相应的类方法: public static byte parseByte(String s) public static short parseShort(String s) public static long parseLong(String s) 可以将“数字“格式的字符串,转化为相应的基本数据类型。 2转化为Float型或Double型 java.lang包中的Float类调用其类方法: public static float parseFloat(String s) 可以将“数字”格式的字符串,如12387.8976,转化为Float型数据。例如: float n=Float.parseFloat(“12387.8976“); 或 String s=new String(“12387.8976“); float n=Float.parseFloat(s); 类似地,使用java.lang包中的Double类调相应的类方法:public static double parseDouble(String s) 可以将“数字“格式的字符串,转化为Double型数据。 另外,还可以使用Float类的类方法: public static float valueOf(String s) 将如12334.870字符串转化为Float型数据,例如: float n=Float.valueOf(“12334.870“).floatValue(); 使用Double类的类方法: public static Double valueOf(String S) 将如12334.870字符串转化为Double型数据,例如: double n=Double.valueOf(“12334.870“).doubleValue(); 现在我们举一个求若干个数的平均数的例子valuof,若干个数从键盘输入。 这是一个应用程序,应用程序中的main方法中的参数args能接受你从键盘键入的字符 串。首先应编译上述源程序: C:2000iavac valuof.java 编译通过后,你要使用解释器java.exe来执行字节码文件: C:2000java valuof 123.78 23324.9 213214(回车) 这时,程序中的args0、arg1、arg2分别得到字符串123.78、23324.9和213214 。在源程序中我们再将这些字符串转化为数值进行运算,得到所需的结果。 557 数值转化为字符串 可以使用String类的下列类方法: public static String valueOf(byte n) public static String valueOf (int n) public static String valueOf (long n) public static String valueOf (float n) public static String valueOf (double n) 将形如123,1232.98等数值转换成字符串,如: String str=String.valueOf(12313.9876); float x=123.987f; String temp=String.valueOf(x); 5.6 对象的字符串表示 在子类中我们讲过,所有的类都默认是java.lang包中的Object类的子类或间接 子类。Object类有一个public 方法toString(),一个对象通过调用该方法可以获 得该对象的字符串表示。 import java.util.Date; import java.awt.*; public class toStr public static void main(String args) Date date=new Date(); Button button=new Button(“确定“); System.out.println(date.toString(); System.out.println(button.toString(); 5.7用StringTokenizer类分析字符串 有时我们需要分析字符串将字符串分解成可被独立使用的单词,这些单词叫做语言符 号,如:对于字符串 we are students;如果我们把空格作为这个字符串中的分隔符那 么该字符串有3个单词(语言符号),而对于字符串 we,are,students如果我们把逗号作 为该字符串的分隔符,那么该字符串有3个单词。 当我们分析一个字符串并将字符串分解成可以被独立使用的单词,可以使用java.util包 中的StringTokenizer类,该类有两个常用的构造方法: StringTokenizer(String s)为字符串s构造一个分析器。使用默认的分隔符集合,即空格 符(若干个空格被看做一个空格)、换行符、回车符、Tab符、进纸符。 StringTokenizer(String s,String delim) 为字符串s构造一个分析器。参数delim中的字 符被作为分隔符。 例如: StringTokenizer fenxi=new StringTokenizer(“we are students“); StringTokenizer fenxi=new StringTokenizer(“we,are; students“,”, ; “); 我们把一个StringTokenizer对象称作一个字符串分析器。一个分析器可以使用 nextToken()方法逐个获取字符串中的语言符号(单词),每当调用nextToken()时,都将 在字符串中获得下一个语言符号。通常用while循环来逐个获取语言符号,为了控制循 环,我们可以使用StringTokenizer类中的hasMoreTokens()方法,只要字符串中还有 语言符号,该方法就返回true,否则返回false。另外我们还可以调用countTokens()方 法得到字符串一共有多少个语言符号。 下面是一个应用程序strtoken,分析字符串,分别输出字符串的单词,并统计出单词 个数。 strtoken.java import java.util.*; public class strtoken public static void main(String args) String s=“I am Geng.X.y,she is my girlfriend“; StringTokenizer fenxi=new StringTokenizer (s,“ , “); /空格和逗号作为分隔符 int number=fenxi.countTokens(); while (fenxi.hasMoreTokens() String str=fenxi.nextToken(); System.out.println(str); System.out.println(“还剩“+fenxi.countTokens() +“个单词“); System. out.println(“s中共有单词:“+number+“个“); 58 Character类 当处理字符串时,Character类中的一些类方法是很有用的,这些方法可以用来进行字 符分类,比如判断一个字符是否是数字字符或改变一个字符大小写等。 public static boolean isDigit(char ch) 如果ch是数字字符,方法返回true,否则返回 false。 public static boolean isLetter(char ch) 如果ch是字母,方法返回true,否则返回 false。 public static boolean isLetterOrDigit(char ch)如果ch是数字字符或字母方法,返回true ,否则返回false。 public static boolean isLowerCase(char ch) 如果ch是小写字母,方法返回true,否则 返回false。 public static boolean isUpperCase(char

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论