ImageVerifierCode 换一换
格式:DOCX , 页数:54 ,大小:127.94KB ,
资源ID:5691949      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5691949.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java程序设计修改ch05.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java程序设计修改ch05.docx

1、Java程序设计修改ch05第5章 数组、字符串与Java常用类数组是相同类型的数据按顺序组成的一种复合数据类型。利用数组可以简化程序,并能完成众多功能。字符串是程序设计中要经常用到的,Java使用java.lang包中的String类来创建一个字符串变量。对于字符串有很多相应的操作,本章重点对字符串类型的变量与其它类型变量的相互转换做了详细的介绍,同时还介绍了与字符串有关的其它操作。Java类库中提供了丰富的类和方法,这些类和方法都是精心设计的,其运行效率高、质量高。正确地使用数组,字符串及Java常用类可以编写出功能强大,简练实用的程序,本章将对这三个方面做一介绍。本章要点 数组的定义及使

2、用。 字符串的常用操作:类型转换,比较等。 Java常用类的使用。本章难点 多维数组与对象数组的用法。 Vector类的使用学习目标 掌握数组的定义及使用。 掌握字符串的基本使用。 掌握Java常用类的一般用法。5.1 数组数组是连续内存单元中一组名字和数据类型相同的数据元素的有限集合。数组可以用来保存和处理一组数据类型相同的数据元素。数组中的每个数据元素称作一个数组元素。通过数组名加数组下标,来使用数组中的数据,下标从0开始。当把一维数组中的每个数据元素定义为一个一维数组时,就构成了Java语言的二维数组,依此类推,还可以有三维数组甚至更多维数组。另外,Java语言还可以构造出不规则数组。5

3、.1.1 一维数组1. 一维数组的声明声明一个数组就是要确定数组名、数组的维数和数组元素的数据类型。数组名是符合Java标识符定义规则的用户自定义标识符。数组的维数用方括号(“ ”)的个数来确定,对于一维数组来说,只需要一对方括号。数组元素的数据类型可以是Java的任何数据类型,如基本类型(int、float、double、char等),类(class)或接口(interface)等。数组的声明格式如下:类型标识符 数组名 ;或类型标识符 数组名;例如:int abc ;double example2;数组定义后,系统将给数组分配一个内存单元,用于指示数组在内存中的实际存放位置。由于在数组变量

4、定义时,数组元素本身在内存中的实际存放位置还没有给出,所以,此时该数组名的值为空(null)。2.一维数组的初始化因为Java的数组声明中并未指出数组元素的个数,系统无法知道需要给这个数组分配多大的内存空间。要想使一个数组占有所需要的内存空间,必须指出数组元素的个数,在Java程序中把这一工作放在数组的初始化时进行。数组经过初始化后,其长度(即可存放的元素个数)就不可再改变。Java数组的初始化可以通过直接指定初值的方式来完成,也可以用new操作符来完成。(1)直接指定初值的方式用直接指定初值的方式对数组初始化,是在声明一个数组的同时将数组元素的初值依次写入赋值号后的一对花括号内,给这个数组的

5、所有数组元素赋上初始值。这样,Java编译器可通过初值的个数确定数组元素的个数,为它分配足够的存储空间并将这些值写入相应的存储单元。例如:int a1=23,-9,38,8,65;这条语句声明数组名为a1,数组元素的数据类型为整型(int,占4个字节),共有5个初始值,故数组元素的个数为5。这样一个语句为Java分配存储空间提供了所需要的全部信息,系统可为这个数组分配5*4=20个字节的连续存储空间。经过初始化后,使a10=23,a11=-9,a12=38, a13= 8,a14= 65。其存储空间分配及各数组元素的初始值如图5.1所示。注意Java中的数组下标从0开始。a10a11a12a1

6、3a1423-938865图5.1 数组a1的初始化(2)用关键字new初始化数组用关键字new初始化数组,只为数组分配存储空间而不对数组元素赋初值。用关键字new来初始化数组有两种方式:第一种方式:先声明数组,再初始化数组。这实际上由两条语句构成,格式如下: 类型标识符 数组名 ; 数组名=new 类型标识符数组长度;其中,第一条语句是数组的声明语句,第二条语句是初始化语句。应该注意的是:两条语句中的数组名、类型标识符必须一致。数组长度通常是整型常量,用以指明数组元素的个数。例如:int a ;a=new int9;第二种方式:在声明数组的同时用new关键字初始化数组。这种初始化实际上是将上

7、面所述的两条语句合并为一条语句罢了。格式如下: 类型标识符 数组名 =new 类型标识符数组长度; 或 类型标识符 数组名=new 类型标识符数组长度;例如:int a=new int10;Java语言规定,在数组分配内存单元后,系统将自动给每个数组元素赋值,并规定:数值类型的元素初值为0,逻辑类型的数组元素初值为false,类类型的数组元素初值为null。在使用数组时即可位于数组名前,也可以位于数组名后,如int a 和int a都是合法的。3. 一维数组的使用当数组初始化后就可通过数组名与下标来引用数组中的每一个元素。一维数组元素的引用格式如下: 数组名数组下标其中:数组名是经过声明和初始

8、化的标识符;数组下标是指元素在数组中的位置,数组下标的取值范围是0(数组长度-1),下标值可以是整数型常量或整数型变量表达式。例如,在有了“int a=new int10;”声明语句后,下面的两条赋值语句是合法的:a3=25;a3+6=90;但a10=8;是错误的。这是因为Java为了保证安全性,要对引用时的数组元素进行下标是否越界的检查。这里的数组a在初始化时确定其长度为10,下标从0开始到9正好10个元素,因此,不存在下标为10的数组元素a10。在Java语言中,数组也是一种对象。数组经初始化后就确定了它的长度,对于每个已分配了存储空间的数组,Java用一个数据成员length来存储这个数

9、组的长度值。【例5_1】数组的声明、初始化和其长度的测定。本例中定义了一个整型数组,然后在屏幕上显示出这个数组。代码如下:/文件名:Exam5_1.javapublic class Exam5_1 public static void main(String args) int a=23,-9,38,8,65; /定义数组并赋初值 int n=a.length; /取出数组的长度 System.out.println(数组的长度是:+n); for(int i=0;i=0;i-) System.out.println(ai); public static void main(String ar

10、gs) Exam5_2 ee=new Exam5_2(); ee.run(args); 程序分析:由于要倒序显示,所以用for循环时,从下标最高的元素开始循环。Java的数组在定义时要求定义数组的长度,但是这个字符串数组的长度是与用户输入的参数个数确定的,是不定的,所以这是一个特殊的一维数组。5.对象数组前面讨论的数组的数据类型都是简单的基本类型,即数组元素是简单数据类型。但实际问题中往往需要把不同类型的数据组合成一个有机的整体,以便于引用。例如,一名学生的姓名、性别、年龄和各科学习成绩等都与这名学生紧密相关,而一个班(乃至更多)的学生又都具有这些属性,如表所示。如果将这些数据项定义为相互独立

11、的简单变量是难以反映它们之间的内在联系的,应当将它们组织在一起形成一种数据结构。这种数据结构在过去的结构化程序设计中被称为记录或结构体,而在面向对象的程序设计中把这种结构也称为对象。由自定义的对象作为数组元素所构成的数组被称为对象数组,也就是说,对象数组是指数组的每一个元素都是具有相同属性的对象,或者说,如果一个类有若干个对象,我们可以把这一系列同类的对象用一个数组来存放。如表5-1所示学生情况表,可用一个对象数组来存放。表5-1学生情况表编号姓名性别入学成绩20050701001李小平男49020050701002张华男53020050702003孙晓月女47020050702004王明明女

12、51320050702005刘玉女46920050703006周丽萍女48720050703007李军男532【例5_3】参考表5-1学生情况表,要求将每个学生作为一个对象,建立输出对象的全部数据成员的成员方法stuDisp()。代码如下:/Student.javaclass Student private String name; private char sex; private double score; Student(String cname,char csex,double cscore) name=cname; sex=csex; score=cscore; void studP

13、rint( ) System.out.println(Name: +name+tSex: +sex+tScore: +score);/Exam5_3.javapublic class Exam5_3 void run() Student stu=new Student7; stu0=new Student(20050701001,李小平,男,490); stu1=new Student(20050701002,张华,男,530); stu2=new Student(20050702003,孙晓月,女,470); stu3=new Student(20050702004,王明明,女,513);

14、stu4=new Student(20050702005,刘玉,女,469); stu5=new Student(20050703006,周丽萍,女,487); stu6=new Student(20050703007,李军,男,532); int n=stu.length; for(int i=n-1;i=0;i-) stui.stuDisp(); public static void main(String args) Exam5_3 ee=new Exam5_3(); ee.run(); 程序运行结果如下:图5-4 对象数组的使用程序分析:本程序用了两个类,类Student包含四个成员变

15、量,同时还包含一个能显示这些成员变量的成员方法stuDisp()。类Exam5_3定义了一个Student类型的数组,给每个数组元素分别赋值,然后利用成员方法stuDisp()显示成员变量的内容。5.1.2 二维数组Java中只有一维数组,不存在称为“二维数组”的明确结构。但是如果一个一维数组的数组元素可以是数组,这样就构成了Java语言的二维数组。也就是说,在Java语言中,把二维数组实际上看成是其每个数组元素是一个一维数组的一维数组。一个3行4列的二维数组的形式如图5-5所示。图5-5 二维数组计算机存储器的编址是一维的,即存储单元的编号从0开始一直连续编到最后一个最大的编号。如图5-6所

16、示矩阵,如果用二维数组表示,则在计算机中的存放形式如图5-7所示。 图5-6 矩阵 图5-7 二维数组在Java中的实现在图5-7中把每一行看成一个数组元素,则有三行的数组可看成只有三个数组元素,只不过这三个元素又是由三个元素组成的。1. 二维数组的声明二维数组的声明与一维数组类似,只是需要给出两对方括号,其格式如下: 类型说明符 数组名 ;或 类型说明符 数组名; 例如: int arr ;或 int arr;其中:类型说明符可以是Java的基本类型、类或接口;数组名是用户遵循标识符命名规则给出的一个标识符;两个方括号中前面的方括号表示行,后面的方括号表示列。2. 二维数组的初始化二维数组声

17、明同样也是为数组命名和指定其数据类型的。它不为数组元素分配内存,只有经初始化后才能为其分配存储空间。二维数组的初始化也分为直接指定初值和用new操作符两种方式。(1)用new操作符初始化数组用new操作符来初始化数组有两种方式:第一种:先声明数组再初始化数组。在数组已经声明以后,可用下述两种格式中的任意一种来初始化二维数组。 数组名=new 类型说明符数组长度 ;或 数组名=new 类型说明符数组长度 数组长度;其中:对数组名、类型说明符和数组长度的要求与一维数组一致。例如:int arra ; /声明二维数组arra=new int34;/初始化二维数组上述两条语句声明并创建了一个3行4列的

18、数组arra。也就是说arra数组有3个元素,而每一个元素又都是长度为4的一维数组。实际上共有12个元素,共占用12*4=48个字节的连续存储空间。这里的语句: arra=new int34;实际上相当于下述4条语句:arra=new int3 ;创建一个有3个元素的数组,且每个元素也是一个数组。arra0=new int4;创建arra0元素的数组,它有4个元素。arra1=new int4;创建arra1元素的数组,它有4个元素。arra2=new int4;创建arra2元素的数组,它有4个元素。也等价于:arra=new int3 for(int i=0;i3;i+) arrai=ne

19、w int4;也就是说,在初始化二维数组时也可以只指定数组的行数而不给出数组的列数,每一行的长度由二维数组引用时决定。但不能只指定列数而不指定行数。上述语句的作用如图5-8所示。图5-8 二维数组的初始化第二种:在声明数组时初始化数组。格式如下: 类型说明符 数组名=new 类型说明符数组长度 ;或 类型说明符 数组名 =new 类型说明符数组长度 数组长度;例如:int arr=new int4 ;int arr =new int43;可以不指定列数只指定行数,但是,不指定行数而指定列数是错误的。例如,下面的初始化是错误的。 int arr=new int 4;(2)直接指定初值的方式在数组

20、声明时对数据元素赋初值就是用指定的初值对数组初始化。例如 int arr1=3, -9,6,8,0,1,11,9,8 ; 声明并初始化数组arr1,它有3个元素,每个元素又都是有3个元素的一维数组。用指定初值的方式对数组初始化时,各子数组元素的个数可以不同。例如: int arr1=3, -9,8,0,1,10,11,9,8 ;它等价于:int arr1=new int3 ;int ar10=3,-9;int ar11=8,0,1;int ar12=10,11,9,8;也等价于:int arr1=new int3 ;int arb10=3,-9;int arb11=8,0,1;int arb1

21、2=10,11,9,8;arr10=arb10; /实际上是将一个一维数组赋给了一个二维数组的元素,下同arr11=arb11;arr12=arb12;3. 二维数组的长度及数组赋值与一维数组一样,也可以用.length成员方法测定二维数组的长度,即元素的个数。只不过当使用“数组名.length”的形式测定的是数组的行数;而使用“数组名i.length”的形式测定的是该行的列数。例如,若有如下的初始化语句:int arr1=3, -9,8,0,1,10,11,9,8 ;则arr1.length的返回值是3,表示数组arr1有3行或3个元素。而arr12.length的返回值是4,表示arr12

22、的长度为4,即有4个元素。【例5_4】将如图5-6所示矩阵的数据赋值给一个二维数组a,计算每行数字的和,将其存放到一个一维数组b中。代码如下:/Exam5_4.javapublic class Exam5_4 void run() int i,j; int b=new int3; int a=25,53,89,28,66,90,10,38,56; for(i=0;i3;i+) bi=0; for(j=0;j3;j+) bi=bi+aij; for(i=0;i=0)个字符组成的序列。Java中的字符串用一对双引号括起来,一个字符串中的字符个数称作字符串的长度。如“jinan”就是一个长度为5,值

23、为jinan的字符串。我们在第二章中学到了字符的概念,读者朋友一定注意字符串与字符的区分。字符常量是用单引号括起的单个字符,例如,A,n等。而字符串常量是用双引号括起的字符序列,例如,A,n,Java Now等。在Java语言中,字符串常量通常是作为String类的对象而存在的,有专门的数据成员来表明它的长度。本节主要讨论String类对象的创建、使用和操作。5.2.1 创建String对象Java语言规定字符串常量必须用双引号括起,一个串可以包含字母、数字和各种特殊字符,如+、-、*、/、$等。在我们前面的程序范例中已多次使用过字符串常量,例如下面的语句: System.out.printl

24、n(OK!);其中的OK!就是字符串常量。Java的任何字符串常量都是String类的对象,只不过在没有明确命名时,Java自动为其创建一个匿名String类的对象,所以,它们也被称为匿名String类的对象。我们可以用下面的方法创建String类的对象。例如: String c1=Java;本语句创建String类的对象c1,并通过赋值号将匿名String类的对象Java赋值给c1引用。5.2.2 String类的常用构造方法和常用方法1.常用构造方法String() 初始化一个新创建的 String 对象,它表示一个空字符序列。 String(byte bytes) 构造一个新的 Stri

25、ng,方法是使用平台的默认字符集解码字节的指定数组。 String(byte bytes, int offset, int length) 构造一个新的 String,方法是使用指定的字符集解码字节的指定子数组。 String(byte bytes, int offset, int length, String charsetName) 构造一个新的 String,方法是使用指定的字符集解码字节的指定子数组。 String(byte bytes, String charsetName) 构造一个新的 String,方法是使用指定的字符集解码指定的字节数组。 String(char value)

26、 分配一个新的 String,它表示当前字符数组参数中包含的字符序列。 String(char value, int offset, int count) 分配一个新的 String,它包含来自该字符数组参数的一个子数组的字符。 String(int codePoints, int offset, int count) 分配一个新的 String,它包含该 Unicode 代码点数组参数的一个子数组的字符。String(String original) 初始化一个新创建的 String 对象,表示一个与该参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的一个副本。 String(StringBuffer buffer) 分配一个新的字符串,它包含当前包含在字符串缓冲区参数中的字符序列。 String(StringBuilder builder) 分配一个新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1