欢迎来到163文库! | 帮助中心 精品课件PPT、教案、教学设计、试题试卷、教学素材分享与下载!
163文库
全部分类
  • 办公、行业>
  • 幼教>
  • 小学>
  • 初中>
  • 高中>
  • 中职>
  • 大学>
  • 各类题库>
  • ImageVerifierCode 换一换
    首页 163文库 > 资源分类 > PPTX文档下载
    分享到微信 分享到微博 分享到QQ空间

    《Java程序设计教程》课件第四章:数组.pptx

    • 文档编号:7669109       资源大小:3.14MB        全文页数:34页
    • 资源格式: PPTX        下载积分:15文币     交易提醒:下载本文档,15文币将自动转入上传用户(momomo)的账号。
    微信登录下载
    快捷注册下载 游客一键下载
    账号登录下载
    二维码
    微信扫一扫登录
    下载资源需要15文币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    优惠套餐(点此详情)
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、试题类文档,标题没说有答案的,则无答案。带答案试题资料的主观题可能无答案。PPT文档的音视频可能无法播放。请谨慎下单,否则不予退换。
    3、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者搜狗浏览器、谷歌浏览器下载即可。。

    《Java程序设计教程》课件第四章:数组.pptx

    1、本章学习目标:掌握数组的声明和创建 掌握数组的初始化 了解二维数组的定义和访问 掌握foreach遍历数组 了解Arrays类的基本应用第四章第四章 数组数组 数组是编程语言中常见的一种数据结构,是多个数据类型相同元素的有序集合。数组可用于存储多个数据,每个数组元素存放一个数据,通常可通过数组元素的索引来访问数组元素,包括为数组元素赋值和取出数组元素的值。根据数组中组织结构的不同,数组可以分为一维数组,二维数组和多维数组。第第1 1节节part创建数组 Java数组要求所有的元素具有相同的数据类型。因此,在一个数组中,数组元素的类型是唯一的,即一个数组里只能存储一种数据类型的数据,而不能存储多

    2、个数据类型的数据。Java数组既可以存储基本类型的数据,也可以存储引用类型的数据,只要所有的数组元素具有相同的类型即可。值得注意的是,数组也是一种数据类型,它本身是一种引用类型。创建数组本节概述 在Java编程语言中,定义数组时并不为数组元素分配内存。只有在初始化后才会为数组中的每一个元素分配空间,并且值得注意的是数组必须经过初始化后才可以引用。Java语言支持两种语法格式来定义数组:dataType arrayName;dataType arrayName ;对这两种语法格式而言,通常推荐使用第一种格式。因为第一种格式不仅具有更好的语意,而且具有更好的可读性。其中,dataType是数据元素

    3、的数据类型,arrayName是用户自定义的数组名称,数组名的命名要符合标识符的命名规则。4.1.1数组的声明数组的声明 下面代码示例了一维数组的声明。int number;/声明一个整型数组float f;/声明一个单精度浮点型数组double d;/声明一个双精度浮点型数组boolean b;/声明一个布尔型数组char c;/声明一个字符型数组String str;/声明一个字符串型数组 上述代码只是声明了数组变量,在内存中并没有给数组分配空间,因此还不能访问数组中的数据。要访问数组,需在内存中给数组分配存储空间,并指定数组的长度。4.1.1数组的声明 数组是一种引用类型的变量,因此使用

    4、它定义一个变量时,仅仅表示定义了一个引用变量,这个引用变量还未指向任何有效的内存,因此定义数组时不能指定数组的长度。而且由于定义数组只是定义了一个引用变量,并未指向任何有效的内存空间,所以还没有内存空间存储数组元素,因此这个数组也不能使用,只有对数组进行初始化后才可以使用。所谓初始化,就是用关键字new为数组分配内存空间,并为每个数组元素赋初始值。一旦数组的初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变。即使把某个数组元素的数据清空,但它所占的空间依然被保留,依然属于该数组,数组的长度依然不变。数组的初始化有静态初始化和动态初始化两种方式。静态初始化时由程序员显示指定

    5、每个数组元素的初始值,由系统决定数组长度;动态初始化时程序员只指定数组长度,由系统为数组元素分配初始值。4.1.2数组的初始化数组的初始化1.1.静态初始化静态初始化静态初始化的语法格式如下:arrayName=new dataType num1,num2,num3.;在上面的语法格式中,dataType就是数组元素的数据类型,此处的dataType必须与定义数组变量时所使用的dataType相同,也可以是定义数组时所指定的dataType的子类,并使用花括号把所有的数组元素括起来,多个元素之间用逗号隔开。下面代码示例了数组的静态初始化。4.1.2数组的初始化【代码4.1】ArrayInit.

    6、javapackage com;public class ArrayInit public static void main(String args)/定义一个int数组类型的变量 int arrayA;/使用静态初始化方式初始化数组 arrayA=new int1,2,3,4;/上述定义数组和初始化可以简化为:int arrayA=1,2,3,4;/定义一个Object类型数组 Object arrayObject;/定义数组时数组元素类型的子类 arrayObject=new StringJava,MySql,单片机技术;2.2.动态初始化动态初始化动态初始化的语法格式如下:arrayNa

    7、me=new dataType length;在上面的语法中,需要指定一个数组长度的length参数,也就是可以容纳数组元素的个数。与静态初始化相似的是,此处的dataType必须与定义数组变量时所使用的dataType相同,或者是定义数组时所指定的dataType的子类。下面代码示例了数组的动态初始化。4.1.2数组的初始化【代码4.2】ArrayInitTwo.javapackage com;public class ArrayInit public static void main(String args)/定义一个int数组类型的变量int arrayA;/使用动态初始化方式初始化数组

    8、arrayA=new int4;/定义一个Object类型数组Object arrayObject;/初始化数组arrayObject=new String5;需要注意注意的是,不要同时使用静态初始化和动态初始化,也就是说,不要在进行数组初始化时,既指定数组的长度,又为数组元素分配初始值。在执行动态初始化时,系统按如下规则为数组元素分配初始值:1、基本类型中的整数类型(byte、short、int和long),则数组元素默认值为0。2、基本类型中的浮点类型(float和double),则数组元素默认值为0.0。3、基本类型中的字符类型(char),则数组元素默认值为u0000。4、基本类型中的

    9、布尔类型(boolean),则数组元素默认值为false。5、引用类型(类、接口和数组),则数组元素的值为null。4.1.2数组的初始化第第2 2节节part访问数组访问数组 数组最常用的用法就是访问数组元素,包括对数组元素进行赋值和取出数组元素的值。访问数组元素中某个元素的语法格式如下:arrayName index 在上面的语法中,index表示数组的下标索引,其取值范围从0开始,最大值为数组的长度-1。例如,array0表示数组array的第1个元素,array10表示数组array的第11个元素。数组的长度可以通过“数组名.length”进行获取。如果访问数组元素时指定的下标索引值小

    10、于0,或者大于等于数组的长度,编译程序不会出现任何错误,但运行时会出现异常:java.lang.ArrayIndexOutOfBoundsException:N(数组索引越界异常),异常信息后的N就是程序员试图访问的数组下标索引。下面案例示例了数组的使用。访问数组访问数组【代码4.3】ArrayDemo.javapackage com;public class ArrayDemo public static void main(String args)/声明一个整型数组并动态初始化int array=new int10;/输出数组array的长度System.out.println(数组arr

    11、ay的长度为:+array.length);/为数组赋值for(int i=0;iarray.length;i+)arrayi=(int)(Math.random()*100);/遍历数组array的元素System.out.println(数组array的元素为:);for(int i=0;iarray.length;i+)System.out.print(arrayi+);运行结果如下:数组array的长度为:10数组array的元素为:40 28 46 87 85 84 10 94 17 95第第3 3节节part冒泡排序算法冒泡排序算法 冒泡排序是一种简单的排序算法。这个算法的名字由来

    12、是因为越大的元素会经数据交换慢慢“浮”到数列的顶端而得名,它重复访问要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。冒泡排序算法的原理如下:1.比较相邻的元素,如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。下面代码示例了冒泡排序的算法。冒泡排序算法冒泡排序算法【代码4.4】Bubbling.javapackage com;public class Bubblin

    13、g public static void main(String args)/声明一个数组并静态初始化int array=32,12,45,67,89,54,64,74,80,79;int temp=0;/定义一个交换元素的中间变量for(int i=1;iarray.length;i+)for(int j=0;jarray.length-i;j+)/判断相邻两个数的大小,并按大小交换位置if(arrayj+1arrayj)temp=arrayj+1;arrayj+1=arrayj;arrayj=temp;/输出排序后的结果System.out.println(数组排序后的结果为:);for(

    14、int i=0;iarray.length;i+)System.out.print(arrayi+);运行结果如下:数组排序后的结果为:12 32 45 54 64 67 74 79 80 89第第4 4节节partforeach遍历数组 Java从JDK1.5版本之后,提供了一种更简单的循环:foreach循环。这种循环用于遍历数组或集合更为简洁,使用foreach循环遍历数组或集合元素时,无须获得数组或集合长度,也无须根据索引来访问数组元素或集合元素,foreach循环能自动遍历数组或集合的每个元素。foreach语句的语法结构如下所示:for(数据类型 变量名:数组名)注意,foreac

    15、h语句中的数据类型必须与数组的数据类型一致。foreach遍历数组Foreach遍历数组下述案例示例了foreach语句的应用,代码如下所示。【代码4.5】ForeachExample.javapackage com;public class ForeachExample public static void main(String args)/定义并初始化数组char ch=a,b,c,d;/使用foreach语句遍历数组的元素System.out.println(“数组中的元素有:”);for(char e:ch)System.out.print(e+);foreach遍历数组运行结果如下

    16、所示:数组中的元素有:a b c d 上述代码中foreach语句代码的功能等价于下面一段代码:for(int i=0;ich.length;i+)System.out.print(chi+);第第5 5节节part二维数组 如果一维数组中的每个元素还是一维数组,则这种数组就被称为二维数组。二维数组经常用于解决矩阵方面的问题。定义二维数组的基本语法格式如下:dataType arrayName;二维数组的创建和初始化与一维数组类似,也可以使用静态初始化和动态初始化两种方式,示例代码如下。二 维 数 组二维数组【代码4.6】Array2DExample.javapackage com;publi

    17、c class Array2DExample public static void main(String args)/创建二维数组并初始化int arrayA=1,2,3,4,5,6 ;int arrayB=new int55;for(int i=0;i arrayB.length;i+)for(int j=0;j arrayBi.length;j+)arrayBij=(int)(Math.random()*100);/遍历数组System.out.println(arrayB数组元素如下:);/外循环控制行,内循环控制列每行结束时就换行 for(int i=0;i arrayB.lengt

    18、h;i+)for(int j=0;j arrayBi.length;j+)System.out.print(arrayBij+);System.out.println();二 维 数 组运行结果如下:arrayB数组元素如下:55 84 77 27 5 75 23 13 24 18 47 88 82 37 49 39 50 89 35 33 34 48 77 37 81下述案例实现了用二维数组实现杨辉三角,代码如下。【代码4.7】YangHui.javapackage com;public class YangHui public static void main(String args)in

    19、t n=6;/定义一个二维数组int mat=new intn;int i,j;for(i=0;i n;i+)/为二维数组分配空间mati=new inti+1;/为二维数组元素赋值matii=1;for(j=1;j i;j+)matij=mati-1j-1+mati-1j;二 维 数 组运行结果如下所示:1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 for(i=1;i mat.length;i+)/打印空格for(j=1;j n-i;j+)System.out.print();/输出二维数组的元素for(j=1;j mati.length;j+)System.out.print

    20、(+matij);System.out.println();第第6 6节节partArrays类 Arrays类是java.util包中的核心类,为了使用在程序中使用该类,必须在程序前导入java.util.Arrays类。该类提供了一系列操作数组的方法,使用这些方法可以完成一些对数组的常见操作,例如排序、检索、复制、比较等,但这些方法都是静态方法,在调用时无须产生Arrays的实例,直接通过类名Arrays来使用这些方法即可。下面仅对Arrays类中几个常用方法进行解释,其他方法的使用可以查考Java API帮助文档。二 维 数 组本节概述 在前面介绍一维数组时,曾经使用一维数组对一系列整型

    21、数据进行冒泡排序,其排序的过程是通过我们自己编写代码实现的,而在Arrays类中提供了一个名为sort的方法,利用它可以直接对数组进行排序,而不需要再编写代码。sort()方法在Arrays类中是重载方法,它不仅提供了对基本数据类型的支持,而且也支持对对象进行排序。下面通过示例演示sort()方法的应用,代码如下。4.6.1数组排序数组排序【代码4.8】SortExample.javapackage com;import java.util.Arrays;public class SortExample public static void main(String args)/创建两个数组in

    22、t scoreArr=34,56,12,76,54,98,25,58,86,19;String strArr=java,Applet,PhP,Basic,Math,Chinese;/对数组进行排序Arrays.sort(scoreArr);Arrays.sort(strArr);System.out.println(遍历排序后的结果为:);for(int e:scoreArr)System.out.print(e+);System.out.println();for(String e:strArr)System.out.print(e+);4.6.1数组排序运行结果如下所示:遍历排序后的结果为

    23、:12 19 25 34 54 56 58 76 86 98 Applet Basic Chinese Math PhP java 从数组中检索指定值是否存在是一个常见操作,类Arrays提供了一系列重载的binarySearch()方法可以用二分查找法对指定数组进行检索。所谓二分查找法,是指在对一个有序序列进行检索时,首先将要检索的值与该序列的中间元素进行比较,如果比较结果不相同,则知道被检索值应当在该比较值之前或之后,这样检索区间就缩小了一半,重复这个过程,最终就可以找到要查找的元素,或者在最后只剩下一个元素并且这个元素与要查找的值不相等时,知道要查找的元素并不存在于这个有序序列中。bin

    24、arySearch()方法用于在已经排好序的数组中查找元素。如果找到了要查找的元素,则返回一个等于或大于0的值,否则将返回一个负值,表示在该数组目前的排序状态下此目标元素应该插入的位置。负值的计算公式是“-n-1”,n表示第一个大于查找对象的元素在数组中的位置,如果数组中所有元素都小于要查找的对象,则n为数组的长度,如果数组中包含重复元素,则无法保证找到的是哪一个元素。因此,在调用binarySearch()方法对数组进行检索之前,一定要确保被检索的数组是有序的。下面通过示例演示binarySearch()方法的应用,代码如下。4.6.2数组检索数组检索【代码4.9】BinarySearchE

    25、xample.javapackage com;import java.util.Arrays;public class BinarySearchExample public static void main(String args)/创建两个数组int scoreArr=34,56,12,76,54,98,25,58,86,19;/对数组进行排序Arrays.sort(scoreArr);int a=Arrays.binarySearch(scoreArr,25);int b=Arrays.binarySearch(scoreArr,155);System.out.println(检索结果为:

    26、+a+和+b);4.6.2数组检索运行结果如下所示:检索结果为:2 和-11 Arrays类提供了copyOf()方法和copyOfRange()方法实现数组的复制功能。copyOf()方法的第一个参数为源数组,第二个参数为生成的目标数组的元素个数。如果指定的目标数组元素个数小于源数组元素个数,源数组前面的元素将被复制到目标数组中;如果指定的目标数组元素个数大于源数组元素个数,则将源数组所有元素复制到目标数组,目标数组中多出的元素以0或null进行填充。使用copyOfRange()方法可以指定将源数组中的一段元素复制到目标数组。下面示例演示数组复制的应用,代码如下。4.6.3数组复制数组复制

    27、【代码4.10】CopyArrayExample.javapackage com;import java.util.Arrays;public class CopyArrayExample public static void main(String args)/声明数组int scoreArr=34,56,12,76,54,98,25;int arrCopy1=new int5;int arrCopy2=new int10;int arrCopy3=new int5;/复制数组arrCopy1=Arrays.copyOf(scoreArr,arrCopy1.length);arrCopy2=

    28、Arrays.copyOf(scoreArr,arrCopy2.length);arrCopy3=Arrays.copyOfRange(scoreArr,1,6);/遍历数组System.out.print(arrCopy1数组的元素为:);for(int i=0;i arrCopy1.length;i+)System.out.print(arrCopy1i+);System.out.println();System.out.print(arrCopy2数组的元素为:);4.6.3数组复制4.6.3数组复制 for(int i=0;i 10;i+)System.out.print(arrCop

    29、y2i+);System.out.println();System.out.print(arrCopy3数组的元素为:);for(int i=0;i arrCopy3.length;i+)System.out.print(arrCopy3i+);运行结果如下所示:arrCopy1数组的元素为:34 56 12 76 54 arrCopy2数组的元素为:34 56 12 76 54 98 25 0 0 0 arrCopy3数组的元素为:56 12 76 54 98 除了上面介绍的方法之外,Arrays类还包含了用于判断两个数组是否相等的方法equals()方法,以及用于填充数组全部或部分元素的方

    30、法fill()等,下面通过示例演示数组比较和填充方法的应用,代码如下。4.6.3数组复制【代码4.11】EqualsArrayExample.javapackage com;import java.util.Arrays;public class EqualsArrayExample public static void main(String args)/创建数组int arrayA=1,2,3,4,5;int arrayB=new int5;int arrayC=new int1,2,3,4,5;/判断数组是否相等System.out.println(arrayA和arrayB是否相等:+

    31、Arrays.equals(arrayA,arrayB);System.out.println(arrayA和arrayC是否相等:+Arrays.equals(arrayA,arrayC);Arrays.fill(arrayB,3);/为数组arrayB填充数据/遍历数组arrayB的元素System.out.println(数组arrayB的元素为:);for(int i=0;iarrayB.length;i+)System.out.print(arrayBi+);运行结果如下所示:arrayA和arrayB是否相等:falsearrayA和arrayC是否相等:true数组arrayB的元素为:3 3 3 3 3 本章课后作业见教材


    注意事项

    本文(《Java程序设计教程》课件第四章:数组.pptx)为本站会员(momomo)主动上传,其收益全归该用户,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!




    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库