




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章 数组,1,学习目标,理解数组的作用 掌握数组的声明和初始化特点 能够通过下标访问数组中的单个元素 如何利用JDK提供的数组操作方法 理解程序接收参数的过程,灵活运用main的参数实现和程序交互 掌握多维数组的声明和应用,2,3,4.1 数组,数组的作用在于提供了一种用来处理一组同类型数据的存储和访问机制,因为在实际编程中,你无法为每一个这样的数据声明一个变量。 在Java语言中,数组元素可以是基本类型,也可是对象。实际上,Java认为数组本身也是一个对象。,4,4.1.1 数组的声明,传统方式 int score; char s ; Point p ,q; / Point是一个类类型,
2、此处声明了两个数组 现代方式 char s; Point p, q;,5,4.1.2 创建数组,数组声明后并不是就可以直接使用了,要想使用必须要实际创建数组,为它分配实际的存储空间,然后才能存储元素。 s = new char 20; p = new Point 100; 也可在运行时,用变量表示数组的大小。 int a; int len=10; a=new intlen; 注意:数组的大小一旦指定,就不可更改。,6,4.1.3 初始化数组,初始化解决了当数组空间被分配时,如何填充空间的问题,而且预防了没有赋值就访问数组元素导致意外的情况。 1.当创建一个数组时,每个元素都将被默认初始化。 在
3、上述char数组s的例子中,每个值都被初始化为0 (u0000-null)字符; 数值类型的数组元素默认值为0 boolean类型的数组元素默认值为false 对象类型的数组元素默认值为null 在数组p的例子中, 每个值都被初始化为null,表明它还未引用一个Point对象。在经过赋值 p0 = new Point()之后,数组的第一个元素引用为实际Point对象。,7,2. Java编程语言允许使用下列形式快速创建数组,并完成初始化任务: String names = “Georgianna”, “Jen”, “Simon” ; 其结果与下列代码等同: String names ; nam
4、es = new String 3; names 0 = “Georgianna”; names 1 = “Jen”; names 2 = “Simon”;,8,4.1.4 访问数组,public class ArrayAccessDemo public static void main(String args) int a=1,3,7,2,6,5; for(int i=0;ia.length;i+) System.out.println(第+i+个元素值为+ai); ,9,4.1.4 访问数组cont.,注意: 1.在Java编程语言中,所有数组的下标都从0开始。访问数组元素可以通过下标进行
5、,如a5或者ai. 2.一个数组中元素的数量被作为具有length属性的部分而被数组对象存储; 这个值被用来检查所有运行时访问的界限。如果发生了一个越出界限的访问,那么运行时的报错(异常)也就出现了.,10,4.1.4 访问数组cont.,存储元素到数组 int a=new int10; a0=10; a5=2; a7=8;,11,小结:,数组就是一个具有固定长度的包容多个相同类型对象的数据结构。它的元素类型甚至可以是数组。 数组的声明、创建和初始化可以分别完成,也可以一次完成。 用来指示单个数组元素的下标必须总是从0开始。 数组一旦创建后,其大小不可调整。 可以用数组对象的length属性来
6、获得该数组可以容纳的元素个数。 可以通过下标(整数数值或整型变量)来引用数组内的指定位置的元素,下标不能超出数组元素个数。 可使用相同的引用变量来引用一个全新的数组。,12,课堂练习,写出下面程序的运行结果,class Happy public static void main(String args) int index=1; int a =new int3; int bas =aindex; int baz =bas + index System.out.println( abaz ); ,13,课堂练习(cont.),判断正确 数组中的每个元素都是同样的类型 数组的大小在声明之后就是固定
7、的了 数组的大小在创建后确定 数组的元素必须是基本类型的,14,课堂练习(cont.),下面哪一个语句是有效的数组声明? int i= new int(30); double d = new double30; Point p= new Point(1.30); int i =(3,4,5,7); char c = new char(); float f=1.0f,1.5f,4.6f; double d = new float30;,15,说出下面数组第3个元素的值 int a = 1,3,6,7,8; boolean b = new boolean10; float f=1.4f,5.6f,
8、7.0f,2.5f,3.6f; double d=new double10; long l;,4.1.5使用增强型循环访问数组元素,16,for(目标数组元素的类型 变量名:目标数组名),int score = new int5; for (int x : score) System.out.print(x+,); ,4.2 main方法中的参数,命令行的参数 main方法声明中的参数类型是一个字符串数组 运行时,存放接收的命令行参数 Java程序将接收的第一个参数存放在下标为0的位置,第二个参数存放在下标为1的位置,其它的以此类推。,17,/程序4-2:运行时参数的应用 public cla
9、ss CommandParameters public static void main(String args) for(int i=0;iargs.length;i+) System.out.printf(第%d个输入的参数是%sn, i,argsi); ,18,4.3 多维数组,1多维数组 Java编程语言没有像其它语言那样提供多维数组,因为一个数组可被声明为具有任何基础类型,所以你可以创建数组的数组(和数组的数组的数组,等等)。 int twoDim = new int 4; twoDim0 = new int5; twoDim1 = new int5; twoDim2 = new i
10、nt5; twoDim3 = new int5; 上述数组的声明也可以修改为: int twoDim = new int45;,19,2.不规则的多维数组 int twoDim = new int4; twoDim0 = new int 2; twoDim1 = new int 4; twoDim2 = new int 6; twoDim3 = new int 8;,20,3.一种非法的声明 尽管多维数组的声明格式,允许方括号在变量名左边或者右边,但此种灵活性不适用于数组句法的其它方面。例如: new int 4是非法的,因为这样的声明,编译器无法预先为之分配空间。 4. 多维数组的初始化 类
11、似一维数组的初始化,多维数组的初始化即可以在声明时直接初始化,也可以在创建时初始化。下面的例子演示了在声明时直接对数组进行初始化: int factors = 2, 3, 2, 4, 5, 2, 3, 6, 7;,21,课堂练习,声明并创建一个如下数组。 包含3行,每行分别包含不同数目元素,元素数依次为 5,4,6 编写一个程序,逐个输出该数组的每个元素的默认初始值。,22,4.4 操作数组复制、排序和查找,复制:在数组内查找一个具体的值,或者将一个数组复制到另一个数组等。 System类提供的方法arraycopy(),程序 排序和查找Arrays类提供的主要方法 sort(.)升序排列 b
12、inarySearch(.)使用折半搜索算法来搜索指定类型的有序数组 fill(.)用指定类型的值填充同类型的数组 程序,23,public class ArrayCopy public static void main(String args) / 原始数组 int myArray = 1, 2, 3, 4, 5, 6 ; / 一个更大的数组 int hold = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ; /* 复制myArray数组的所有内容到hold数组, * 放在hold数组下标0开始的位置 */ System.arraycopy(myArray, 0, hold
13、, 0, myArray.length); ,24,import java.util.Arrays; public class ArrayDemo public static void main(String args) int a=10,7,9,2,4,5,1,3,6,8; Arrays.sort(a); /对数组a升序排列 for(int element : a) System.out.println(element); int loc=Arrays.binarySearch(a,5);/查找元素5 System.out.println(数值5在下标+loc+的位置); ,25,课堂练习,
14、声明一个整型数组,其初始值是:1,4,56,8,9; 声明一个双精度类型的数组,其初始值是:1.0,10.5,12,7.2,20.4 给出如下的声明 float f = 1,2,3,4,5; 请问数组的长度,以及有效索引范围各是多少? 请问索引为3的位置存放的元素值是多少? 声明一个字符型数组,包含20个元素,并给其前2个元素赋值字符:a,b 声明一个字符串型数组,包含10个元素,并给其前2个元素赋值字符串:abc,bcd 声明并创建一个二维整型数组。包含3行,每行分别包含不同数目元素,元素数依次为 5,4,6,public class ArrayTest public static void main(String args) int i, j; int a = 2, 1, 4, 8, 9, 5, 3 ; for (i = 0; i a.length - 1; i+) int k = i; for (j = i; j a.length; j+) if (aj ak) k = j; int temp = ai; ai = ak; ak = temp; for (i = 0; i a.length; i+) System.out.print(ai + ); System.out.println(); /分析程序执行过程,按照要求运行下面的程序,回答问题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目管理培训课件
- 城市污水管网建设项目数字化方案(范文参考)
- 2025年垃圾收转装备项目发展计划
- 市政污水管网改造项目资金申请报告(范文模板)
- 健康饮食产业园项目建议书
- 香港八井加油站维护修复计划
- 物业元旦宣传的标语(320句)
- 2025年跑道磨擦系数测试设备合作协议书
- 西藏拉萨中学2024-2025学年高二英语下学期第七次月考试题含解析
- 物流配送服务操作指南
- 山东中医药大学2020-2021学年内科护理学试题及答案1
- 公司制成检验记录表
- DB32T 4174-2021 城市居住区和单位绿化标准
- 基本原理与性能特点多自由度电磁轴承课件
- Q∕SY 1836-2015 锅炉 加热炉燃油(气)燃烧器及安全联锁保护装置检测规范
- 北京输变电工程标准工艺应用图册(图文并茂)
- 仪器使用记录表
- 石河子大学化学化工学院学院综合测评方案-理学院
- 《汽车电工电子技术》全套教案(完整版)
- 国家职业技能标准 (2021年版) 婴幼儿发展引导员
- (高清正版)JJF(浙)1091—2014内测卡尺校准规范
评论
0/150
提交评论