版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章JAVA语言基础Part4数组及命令行参数1本章内容
数组的声明、构造和初始化一维数组的声明和初始化数组元素的引用多维数组的声明和使用数组拷贝命令行参数2数组概述数组是多个相同类型数据的组合,实现对这些数据的统一管理数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量数组中的元素可以是任何数据类型,包括基本类型和引用类型3一维数组声明一维数组的声明方式:
typevar[]或type[]var; 例如: inta[]; int[]a1; doubleb[]; Mydate[]c;Java语言中声明数组时不能指定其长度(数组中元素的个数),例如: inta[5];//非法4创建数组(1)
publicclassTest{publicstaticvoidmain(Stringargs[]){ int[]s; s=newint[10]; for(inti=0;i<10;i++){ s[i]=2*i+1; System.out.println(s[i]); }}}Java中使用关键字new创建数组对象arrayName=newtype[size]创建基本数据类型一维数组对象演示1main栈内存s堆内存处内存状态5创建数组(2)创建基本数据类型一维数组对象演示2main栈内存s0int[]对象000000000堆内存处内存状态
publicclassTest{publicstaticvoidmain(Stringargs[]){ int[]s; s=newint[10]; for(inti=0;i<10;i++){ s[i]=2*i+1; System.out.println(s[i]); }}}6创建数组(3)main栈内存s1int[]对象35791113151719堆内存
publicclassTest{publicstaticvoidmain(Stringargs[]){ int[]s; s=newint[10]; for(inti=0;i<10;i++){ s[i]=2*i+1; System.out.println(s[i]); }}}处内存状态创建基本数据类型一维数组对象演示37创建数组(4)创建元素为引用数据类型的数组classMyDate{privateintday;privateintmonth;privateintyear;publicMyDate(intd,intm,inty){ day=d;month=m;year=y;}publicvoiddisplay(){ System.out.println(day+"-"+month+"-"+year);}}8创建数组(5)
publicclassTest{publicstaticvoidmain(Stringargs[]){ MyDate[]m; m=newMyDate[10]; for(inti=0;i<10;i++){ m[i]=newMyDate(i+1 ,i+1,1990+i); m[i].display(); }}}main栈内存m堆内存创建元素为引用数据类型的数组演示1处内存状态9创建数组(6)
publicclassTest{publicstaticvoidmain(Stringargs[]){ MyDate[]m; m=newMyDate[10]; for(inti=0;i<10;i++){ m[i]=newMyDate(i+1 ,i+1,1990+i); m[i].display(); }}}main栈内存mnullMyDate[]对象nullnullnullnullnullnullnullnullnull堆内存创建元素为引用数据类型的数组演示1处内存状态10创建数组(7)Java中使用关键字new创建数组对象main栈内存m*****MyDate[]对象**********nullnullnullnullnullnullnull堆内存111990221991331992
publicclassTest{publicstaticvoidmain(Stringargs[]){ MyDate[]m; m=newMyDate[10]; for(inti=0;i<10;i++){ m[i]=newMyDate(i+1 ,i+1,1990+i); m[i].display(); }}}for循环执行三次后内存状态11数组初始化
有两种方式:动态与静态动态初始化
数组定义与为数组元素分配空间并赋值的操作分开进行。MyDatedates[];dates=newMyDate[3];dates[0]=newMyDate(22,7,1964);dates[1]=newMyDate(1,1,2000);dates[2]=newMyDate(22,12,1964);inta[];a=newint[3];a[0]=3;a[1]=9;a[2]=8;12数组初始化静态初始化:在定义数组的同时就为数组元素分配空间并赋值。inta[]={3,9,8};MyDatedates[]={newMyDate(22,7,1964),newMyDate(1,1,2000),newMyDate(22,12,1964)};为什么愿意采用更长的方法呢?在创建数组的时候,可能不知道数组元素的值。
13数组元素的默认初始化数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。例如:publicclassTest{publicstaticvoidmain(Stringargv[]){inta[]=newint[5];
System.out.println(a[3]);}}14匿名数组int[]a=newint[]{4,7,2};[]并不定义数组的长度,{}种元素的个数就是数组的长度。publicclassTest{voidtaksAnArray(int[]someArray){ //usethissomeArray...}publicstaticvoidmain(String[]args){ Testf=newTest(); f.taksAnArray(newint[]{1,2}); } }15数组元素的引用定义并用运算符new为之分配空间后后,才可以引用数组中的每个元素;数组元素的引用方式:arrayName[index]
index为数组元素下标(也称索引),可以是整型常量或整型表达式。如a[3],b[i],c[6*i];数组元素下标从0开始;长度为n的数组合法下标取值范围:0~n-1;每个数组都有一个属性length指明它的长度,例如:a.length指明数组a的长度(元素个数);Eg:int[]a=newint[5];for(inti=0;i<5;i++){a[i]=i;}for(i=a.lengh-1;i>=0;i--){System.out.println(“a[”+I+”]=”+a[i]);}16一维数组的引用赋值int[]a;int[]b=newint[4];char[]c=newchar[5];a=b;a=c;//?byte,char,short都可自动提升为int,但在数组中不可以
17Ex1(课后)编写一应用程序实现下述功能:创建一基本(primitive)数据类型的数组并输出各数组元素的值。例如:
char[]s; s=newchar[26]; for(inti=0;i<26;i++){ s[i]=(char)(’A’+i); System.out.println(s[i]); //System.out.println(“s[”+i+“]=”+s[i]); }
编写一应用程序练习数组对象的两种初始化方式,并输出各元素的值。编写程序,练习使用数组类型对象的length属性,测试并体会数组元素的默认初始化机制;18多维数组(1)二维数组举例: inta[][]={{1,2},{3,4,0,9},{5,6,7}};ijj=0j=1j=2j=3i=012i=13409i=256719多维数组(2)Java中多维数组被做为数组的数组处理Java中多维数组的声明和初始化应按从高维到低维的顺序进行
intt[][]=newint[4][]; t[0]=newint[5]; t[1]=newint[5]; intt1[][]=newint[][4];//非法20多维数组(3)Java中多维数组不必须是规则矩阵形式——“锯齿状矩阵” int[][]tt=newint[4][]; tt[0]=newint[2]; tt[1]=newint[4]; tt[2]=newint[6]; tt[3]=newint[8];
21多维数组初始化静态初始化: intintArray[][]={{1,2},{2,3},{3,4,5}}; intintArray1[3][2]={{1,2},{2,3},{4,5}};//illegal动态初始化
inta[][]=newint[4][5]; intb[][]=newint[3][] b[0]=newint[2]; b[1]=newint[3]; b[2]=newint[5];22一个关于多维数组的练习:Giventhefollowing:publicclassHelloWorld{publicstaticvoidmain(String[]args){ byte[][]big=newbyte[7][7]; byte[][]b=newbyte[2][1]; byteb3=5; byteb2[][][][]=newbyte[2][3][1][2];
→
}}Whichoffollowingcouldbeinsertedat“→”?Ab2[0][1]=b;Db2[1][2][0]=b;Bb[0][0]=b3;Eb2[0][1][0][0]=b[0][0];Cb2[1][1][0]=b[0][0];Fb2[0][1]=big;23复制数组Java.lang.System类的arraycopy()方法提供了数组元素复制功能://源数组intsource[]={1,2,3,4,5,6};//目的数组intdest[]={10,9,8,7,6,5,4,3,2,1};//复制源数组中从下标0开始的source.length个元素到//目的数组,从下标0的位置开始存储。System.arraycopy(source,0,dest,0,source.length);24复制数组System.arraycopy()方法只复制元素。如果数组元素是引用型变量,则只复制引用,不复制对象实体。当复制大量数据时,使用System.arraycopy()命令,优化JAVA程序开发,提高JAVA性能.25EX2(课后)编写一应用程序实现下述功能:创建一基本(primitive)数据类型的二维数组并输出各数组元素的值。例如:
…… inta[][]={{1,2},{2,3,4,5},{5,6,7}}; for(inti=0;i<3;i++){ for(intj=0;j<a[i].length;j++){ System.out.println(intArray1[i][j]); } } ……编写一应用程序练习数组复制方法,并输出在复制操作执行前后dest数组各元素的值。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年平幅氯漂联合机项目可行性研究报告
- 2024年地源热泵项目可行性研究报告
- 2024年PE洗发水瓶项目可行性研究报告
- 2024年中国色织大循环网眼T恤市场调查研究报告
- 公司财务独立运行方案
- 2024年车用交流发电机项目评价分析报告
- 网吧包月上网合同格式
- 标准合同补充协议范例
- 招标文件与施工合同的差异分析
- 广告设计制作合同范例
- 英语漫谈胶东海洋文化知到章节答案智慧树2023年威海海洋职业学院
- 环保产品管理规范
- 中医确有专长综述范文(5篇)
- 非小细胞肺癌NCCN指南解读
- EBO管理体系与案例分享
- 拦砂坝施工设计方案
- GB/T 20934-2016钢拉杆
- 教研课平行四边形和梯形的复习ppt
- S曲线和技术进化法则TRIZ专题培训课件
- 铜矿普查简报铜矿
- 消防设施定期检查、检测、维修保养记录
评论
0/150
提交评论