尚硅谷_宋红康_Java中的数据存储机制 数组_第1页
尚硅谷_宋红康_Java中的数据存储机制 数组_第2页
尚硅谷_宋红康_Java中的数据存储机制 数组_第3页
尚硅谷_宋红康_Java中的数据存储机制 数组_第4页
尚硅谷_宋红康_Java中的数据存储机制 数组_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

Java中的数据存储机制(1)数组,讲师:宋红康新浪微博:尚硅谷-宋红康,数组,数组是多个相同类型数据的组合,实现对这些数据的统一管理数组中的元素可以是任何数据类型,包括基本类型和引用类型基本数据类型的默认初始化值为0引用数据类型的默认初始化值为null数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量,一维数组声明,一维数组的声明方式:typevar或typevar;例如:inta;inta1;doubleb;Mydatec;/对象数组Java语言中声明数组时不能指定其长度(数组中元素的数),例如:inta5;/非法,一维数组初始化,动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行intarr=newint3;arr0=3;arr1=9;arr2=8;静态初始化:在定义数组的同时就为数组元素分配空间并赋值。inta=newint3,9,8;inta=3,9,8;,MyDatedates;dates=newMyDate3;dates0=newMyDate(22,7,1964);dates1=newMyDate(1,1,2000);dates2=newMyDate(22,12,1964);,MyDatedates=newMyDate(22,7,1964),newMyDate(1,1,2000),newMyDate(22,12,1964),intmyInt=newint5;for(inti=0;imyInt.length;i+)sysout(myInti);myInti=2*i+1;sysout(myInti);,栈stack,堆heap:程序new出来的东西,myInt:0 x1234,0 x1234,md:0 x5435,0 x5435,heap:存放程序new出来的“东西”,stack:存放声明的引用,局部变量,0 x9876,0 x9876,intmyInt=newint5;,栈,堆,myInt:,myInt0,myInt1,myInt4,0 x1234,0 x1234,创建基本数据类型数组(1),publicclassTestpublicstaticvoidmain(Stringargs)ints;s=newint10;for(inti=0;i10;i+)si=2*i+1;System.out.println(si);,Java中使用关键字new创建数组对象创建基本数据类型一维数组对象,main,栈内存,s,堆内存,处内存状态,创建基本数据类型一维数组对象,main,栈内存,s,0,int对象,0,0,0,0,0,0,0,0,0,堆内存,处内存状态,publicclassTestpublicstaticvoidmain(Stringargs)ints;s=newint10;/ints=newint10;/基本数据类型数组如果没有赋初值,/Java自动给他们赋默认值。for(inti=0;i10;i+)si=2*i+1;System.out.println(si);,创建基本数据类型数组(2),main,栈内存,s,1,int对象,3,5,7,9,11,13,15,17,19,堆内存,publicclassTestpublicstaticvoidmain(Stringargs)ints;s=newint10;for(inti=0;i10;i+)si=2*i+1;System.out.println(si);,处内存状态,创建基本数据类型一维数组对象,创建基本数据类型数组(3),创建对象数组(1),创建元素为引用类型(对象)的数组,classMyDateprivateintday;privateintmonth;privateintyear;publicMyDate(intd,intm,inty)day=d;month=m;year=y;publicvoiddisplay()System.out.println(year+-+month+-+day);,publicclassTestpublicstaticvoidmain(Stringargs)MyDatem;m=newMyDate10;for(inti=0;i10;i+)mi=newMyDate(i+1,i+1,1990+i);mi.display();,main,栈内存,m,堆内存,创建元素为引用类型(对象)的数组演示,处内存状态,创建对象数组(2),main,栈内存,m,null,MyDate对象,null,null,null,null,null,null,null,null,null,堆内存,处内存状态,创建元素为引用类型(对象)的数组演示,创建对象数组(3),publicclassTestpublicstaticvoidmain(Stringargs)MyDatem;m=newMyDate10;for(inti=0;i=最高分-10等级为A成绩=最高分-20等级为B成绩=最高分-30等级为C其余等级为D提示:先读入学生人数,根据人数创建int数组,存放学生成绩。,多维数组,inti=newint32;,i0,i1,i2,i01=12;,intx=newint3;x0=newint3;x1=newint2;x2=newint4;x10=12;,stack,heap,x:0 x1234,null,null,null,0 x1234,0,0,0,0 x1432,0 x1432,0,0,0,0,0,0,0 x1452,0 x1652,0 x1452,0 x1652,12,练习2:获取arr数组中所有元素的和。使用for的嵌套循环即可。,练习3,声明:intx,y;以下选项允许通过编译的是:a)x0=y;/b)y0=x;/c)y00=x;/d)x00=y;/e)y00=x0;/f)x=y;/一维数组:intx或者intx二维数组:inty或者inty或者inty,练习4,使用二维数组打印一个10行杨辉三角.11112113311464115101051.【提示】1.第一行有1个元素,第n行有n个元素2.每一行的第一个元素和最后一个元素都是13.从第三行开始,对于非第一个元素和最后一个元素的元素.yanghuiij=yanghuii-1j-1+yanghuii-1j;,数组中涉及的常见算法,1.求数组元素的最大值、最小值、平均数、总和等2.数组的复制、反转3.数组元素的排序,练习5,定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,平均值,和值,并输出出来。,练习6,使用简单数组(1)创建一个名为TestArray的类,在main()方法中声明array1和array2两个变量,他们是int类型的数组。(2)使用大括号,把array1初始化为8个素数:2,3,5,7,11,13,17,19。(3)显示array1的内容。(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array0=0,array2=2)。打印出array1。,思考:array1和array2是什么关系?拓展:修改题目,实现array2对array1数组的复制,array1:0 x3232,0 x3232,array2:0 x3232,array2=array1:表示将array1的地址值赋给了array2,array1:0 x2311,0 x2311,array2=0 x2331,0 x2331,数组排序,插入排序直接插入排序、折半插入排序、Shell排序交换排序冒泡排序、快速排序(或分区交换排序)选择排序简单选择排序、堆排序归并排序基数排序,排序方法的选择,(1)若n较小(如n50),可采用直接插入或直接选择排序。当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插入,应选直接选择排序为宜。(2)若文件初始状态基本有序(指正序),则应选用直接插入、冒泡或随机的快速排序为宜;(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。,冒泡排序,排序思想:相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其它的数进行类似操作。,数组排序,java.util.Arrays类的sort()方法提供了数组元素排序功能:importjava.util.*;publicclassSortpublicstaticvoidmain(Stringargs)intnumber=5,900,1,5,77,30,64,700;Arrays.sort(number);for(inti=0;inumber.length;i+)System.out.println(numberi);,数组操作常见问题,编译时,不报错!,person:,PersonTestmain()

温馨提示

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

评论

0/150

提交评论