版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本章要点本章要点u掌握一维数组创建和运用的方法掌握一维数组创建和运用的方法u掌握二维数组创建和运用的方法掌握二维数组创建和运用的方法u掌握如何遍历数组掌握如何遍历数组u掌握如何复制数组掌握如何复制数组u掌握如何填充数组掌握如何填充数组u掌握如何排序数组元素掌握如何排序数组元素u掌握如何查找数组元素掌握如何查找数组元素主要内容主要内容5.1 数组概述数组概述n数组元素有以下五个主要特征数组元素有以下五个主要特征n数组是一样数据类型元素的集合。数组是一样数据类型元素的集合。n数组元素在内存中按先后顺序存放。数组元素在内存中按先后顺序存放。n每个数组元素都用数组名及下标表示。每个数组元素都用数组名及
2、下标表示。n数组下标从数组下标从0开场开场n每个数组都有长度,即元素个数。每个数组都有长度,即元素个数。5.2 一维数组一维数组n5.2.1 创建一维数组创建一维数组n5.2.2 初始化一维数组初始化一维数组5.2.1 创建一维数组创建一维数组n在运用数组之前,必需首先定义数组变量所在运用数组之前,必需首先定义数组变量所属的类型,即声明数组属的类型,即声明数组n声明一维数组有两种方式,语法如下所示:声明一维数组有两种方式,语法如下所示:数组元素类型数组元素类型 数组名字数组名字 ;数组元素类型数组元素类型 数组名字数组名字;5.2.1 创建一维数组创建一维数组n数组的声明数组的声明Declar
3、ationn声明数组时无需指明数组元素的个数,也声明数组时无需指明数组元素的个数,也不为数组元素分配内存空间不为数组元素分配内存空间n不能直接运用,必需经过初始化分配内存不能直接运用,必需经过初始化分配内存后才干运用后才干运用n声明数组后,要想运用数组还要为其分配内存声明数组后,要想运用数组还要为其分配内存空间,分配内存空间时必需指明数组的长度。空间,分配内存空间时必需指明数组的长度。n数组运用数组运用new关键字进展内存分配。关键字进展内存分配。n分配内存空间的语法如下所示:分配内存空间的语法如下所示:5.2.1 创建一维数组创建一维数组数组名字数组名字 = new 数组元素类型数组元素类型
4、数组元素个数数组元素个数;n也可以在创建数组时直接为变量进展赋值。也可以在创建数组时直接为变量进展赋值。数组元素类型数组元素类型 数组名数组名 = new数组元素类型数组元素类型数组元素个数数组元素个数;5.2.1 创建一维数组创建一维数组n用关键字用关键字newnew构成数组的创建表达式,可以构成数组的创建表达式,可以指定数组的类型和数组元素的个数。指定数组的类型和数组元素的个数。n元素个数可以是常量也可以是变量。元素个数可以是常量也可以是变量。n根本类型数组的每个元素都是一个根本类型根本类型数组的每个元素都是一个根本类型的变量;的变量;n援用类型数组的每个元素都是对象的援用。援用类型数组的
5、每个元素都是对象的援用。5.2.1 创建一维数组创建一维数组arryName=new Typecomponets number;例如:例如:int ai; ai=new int10;String s; s=new String3;或者可以将数组的声明和创建一并执行或者可以将数组的声明和创建一并执行int ai=new int10;可以在一条声明语句中创建多个数组可以在一条声明语句中创建多个数组 String s1=new String3, s2=new String8;5.2.2 初始化一维数组初始化一维数组n数组可以与根本数据类型一样进展初始化操数组可以与根本数据类型一样进展初始化操作,数组
6、的初始化可分别初始化数组中每个作,数组的初始化可分别初始化数组中每个元素。元素。n数组的初始化有两种方式,如下所示:数组的初始化有两种方式,如下所示:int arr = new int1,2,3,5,25;int arr2 = 34,23,12,6;5.2.2 初始化一维数组初始化一维数组n声明数组名时,给出了数组的初始值,程序便声明数组名时,给出了数组的初始值,程序便会利用数组初始值创建数组并对它的各个元素会利用数组初始值创建数组并对它的各个元素进展初始化进展初始化n int a=22, 33, 44, 55; int a=22, 33, 44, 55; n创建数组的时,假设没有指定初始值,
7、数组便创建数组的时,假设没有指定初始值,数组便被赋予默许值初始值。被赋予默许值初始值。 n根本类型数值数据,默许的初始值为根本类型数值数据,默许的初始值为0 0;nbooleanboolean类型数据,默许值为类型数据,默许值为false; false; n援用类型元素的默许值为援用类型元素的默许值为nullnull。 数组的援用数组的援用 n经过下面的表达式援用数组的一个元素:经过下面的表达式援用数组的一个元素:narrayNameindexn数组下标必需是数组下标必需是 int , short, byte, 或者或者 charn下标从零开场计数下标从零开场计数n元素的个数即为数组的长度,可
8、以经过元素的个数即为数组的长度,可以经过 arryName.length援用援用n元素下标最大值为元素下标最大值为length-1,假设超越最大,假设超越最大值,将会产生数组越界异常值,将会产生数组越界异常数组的援用数组的援用n数组名是一个援用:数组名是一个援用:int a1 = 1, 2, 3, 4, 5 ; int a2; a2 = a1; for(int i = 0; i a2.length; i+) a2i+; for(int i = 0; i a1.length; i+) System.out.println( a1 +i+ = +a1i); 数组元素的赋值:随机数数组元素的赋值:随
9、机数 1. 经过经过Math类生成随机数类生成随机数Math.random()默许生成默许生成0.0,1.0)的的double型随机数,型随机数,即即0 = Math.random() 1.0(int)(Math.random()*N)M+(int)(Math.random()*(N-M)数组元素的赋值:随机数数组元素的赋值:随机数 2. 运用运用Random类生成随机数类生成随机数 java.util.Random类类Random r=new Random(); r.nextInt( ) /产生一个随机整数 r.nextInt(int n ) /产生 0,n)之间的随机整数 r.nextFl
10、oat( ) /产生一个随机浮点数值 r.nextDouble ( ) /产生一个随机双精度数值常用的数学运算方法常用的数学运算方法nMath类包含了一切用于数学运算的函数方类包含了一切用于数学运算的函数方法,这些方法都是静态的法,这些方法都是静态的n方法的调用格式:方法的调用格式:“Math.数学方法数学方法n在在Math类中除了函数方法之外还存在两个类中除了函数方法之外还存在两个常用数学常量,分别为圆周率、常用数学常量,分别为圆周率、E:nMath.PInMath.E常用的数学运算方法常用的数学运算方法1. 三角函数类:三角函数类:Math.sin(double x)Math.cos(do
11、uble x)Math.tan(double x)2.指数函数类:指数函数类:Math.exp(double x) /exMath.log(double x) /lnxMath.sqrt(double x) /x1/2Math.pow(double x,double y) / xy5.3 二维数组二维数组 n5.3.1 创建二维数组创建二维数组 n5.3.2 初始化二维数组初始化二维数组5.3.1 创建二维数组创建二维数组 n声明二维数组的方法有两种,语法:声明二维数组的方法有两种,语法:n 数组元素类型数组元素类型 数组名字数组名字 ;n 数组元素类型数组元素类型 数组名字数组名字;n二维数
12、组可以看成由多个一维数组所组成,二维数组可以看成由多个一维数组所组成,在给二位数组分配内存时,可以为这些一维在给二位数组分配内存时,可以为这些一维数组同时分配一样的内存。数组同时分配一样的内存。n第一个方括号中数字是一维数组的个数,第第一个方括号中数字是一维数组的个数,第二个方括号中数字是这些一维数组的长度。二个方括号中数字是这些一维数组的长度。5.3.1 创建二维数组创建二维数组对于多维数组有两种为数组分配内存的方式。对于多维数组有两种为数组分配内存的方式。1直接为每一维分配内存空间。直接为每一维分配内存空间。为每一维数组分配内存,实例代码如下:为每一维数组分配内存,实例代码如下: a =
13、new int24;5.3.1 创建二维数组创建二维数组2可分别为每一维分配内存可分别为每一维分配内存分别为每一维分配内存,实例代码如下:分别为每一维分配内存,实例代码如下:a = new int2;a0 = new int2;a1 = new int3;5.3.2 初始化二维数组初始化二维数组n二维数组的初始化同一维数组初始化类似,二维数组的初始化同一维数组初始化类似,同样运用大括号完成二维数组的初始化。同样运用大括号完成二维数组的初始化。n语法:语法:n type arrayname = value1,value2valuen;每个每个value都是都是一个大括号定义一个大括号定义的新一维
14、数组的新一维数组阐明:对于整型二维数组,创建胜利之后系阐明:对于整型二维数组,创建胜利之后系统会赋给数组中每个元素初始化值统会赋给数组中每个元素初始化值0 0。 int myarr = 12,0,45,10;5.4 数组的根本操作数组的根本操作 n5.4.1 遍历数组遍历数组 n5.4.2 复制数组复制数组 n5.4.3 填充数组填充数组n5.4.4 排序数组元素排序数组元素n5.4.5 查找数组元素查找数组元素 5.4.1 遍历数组遍历数组n遍历数组有两种常用的方式,运用遍历数组有两种常用的方式,运用for循环循环和运用和运用foreach循环。循环。n两者的区别在于两者的区别在于for循环
15、可以在遍历过程中循环可以在遍历过程中修正数组中的元素,而修正数组中的元素,而foreach循环不行。循环不行。5.4.1 遍历数组遍历数组【例【例5-1】循环输出数组中的元素】循环输出数组中的元素 int array = new int5;for(int i=0; iarray.length;i+) arrayi = i;System.out.println(数组中的元素:数组中的元素:);for (int i : array) System.out.print(i + );遍历二维数组遍历二维数组for语句语句n遍历二维数组需运用双层遍历二维数组需运用双层for循环,经过数组循环,经过数组的
16、的length属性可获得数组的长度。属性可获得数组的长度。int b = new int 1 , 2, 3 , 4, 5, 6 ; for (int i = 0; i b.length; i+) for (int j=0; j=0,小于小于original数组元素的个数。数组元素的个数。nto:要复制范围的最后索引位置。可以大于数:要复制范围的最后索引位置。可以大于数组组arr的长度。新数组不包括索引是的长度。新数组不包括索引是to的元素。的元素。5.4.2 复制数组复制数组【例【例5-2】复制数组】复制数组int array = 1, 2, 3, 4 ;int arrayCopy=Array
17、s.copyOf(array,6); int arrayRangeCopy=Arrays. copyOfRange(array,2,6); System.out.print(原数组:原数组:);for (int i : array) System.out.print(i + ); System.out.println();5.4.2 复制数组复制数组【例【例5-2】复制数组】复制数组System.out.print(复制数组:);for (int i : arrayCopy) System.out.print(i + );System.out.println();System.out.prin
18、t(部分复制数组:);for (int i : arrayRangeCopy) System.out.print(i + );5.4.2 复制数组复制数组nSystem提供了一个静态方法提供了一个静态方法arraycopy(),可,可以用来实现数组之间的复制。其函数原型是:以用来实现数组之间的复制。其函数原型是:public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length)5.4.2 复制数组复制数组【例】【例】 arraycopy复制数组复制数组char copyFrom= d
19、, e, c, a, f, f, e, i, n, a, t, e, d; char copyTo = new char7; System.arraycopy(copyFrom, 2, copyTo, 0, 7); System.out.println(new String(copyTo);5.4.3 填充数组填充数组 njava.util.Arrays类中的类中的fill()方法可以用来填方法可以用来填充数组,即将数组部分或者全部元素赋值为充数组,即将数组部分或者全部元素赋值为某个元素。某个元素。n该类中提供了多种该类中提供了多种fill()方法的重载方法,以方法的重载方法,以int类型数组
20、为例:类型数组为例:n public static void fill(int a, int val)na:需求填充的数组。:需求填充的数组。nval:用来填充数组的元素值。:用来填充数组的元素值。5.4.3 填充数组填充数组【例【例5-4】运用】运用fill()方法将数组中全部元素赋值方法将数组中全部元素赋值为为5,然后输出赋值结果。,然后输出赋值结果。int array = new int5;Arrays.fill(array, 5); System.out.println(数组中的元素数组中的元素);for (int i : array) System.out.print(i + );5
21、.4.3 填充数组填充数组 fill(int a, int from,int to,int value)该方法将指定的该方法将指定的int值值value分配给分配给int型数型数组组a指定范围中的每个元素。指定范围中的每个元素。填充的范围从索引填充的范围从索引from(包括包括)不断到索引不断到索引to(不包括不包括)。假设假设from =to,那么填充范围为空。,那么填充范围为空。5.4.3 填充数组填充数组【例】运用【例】运用fill(int a, int from,int to,int value) int arr = new int 45,12,2,10 ;Arrays.fill(ar
22、r, 1, 2, 8); for (int i = 0; i arr.length; i+) System.out.println(第第 + i + 个元素是:个元素是: + arri);5.4.4 排序数组元素排序数组元素 n java.util.Arrays类中的类中的sort()方法可以用来方法可以用来按升序排序数组,该方法提供了多种重载方按升序排序数组,该方法提供了多种重载方式。式。n以以int类型数组作为参数的类型数组作为参数的sort()方法:方法:n public static void sort(int a)na:需求排序的数组。:需求排序的数组。5.4.4 排序数组元素排序数
23、组元素【例【例5-5】 运用运用sort()方法将降序陈列的数组按方法将降序陈列的数组按升序陈列,然后输出赋值结果。升序陈列,然后输出赋值结果。int array = 5, 4, 3, 2, 1 ;for (int i : array) System.out.print(i + );System.out.println();Arrays.sort(array); for (int i : array) System.out.print(i + );5.4.5 查找数组元素查找数组元素 njava.util.Arrays类中的类中的binarySearch()方法方法可以用来在数组中查找指定元素
24、,该方法提可以用来在数组中查找指定元素,该方法提供了多种重载方式。供了多种重载方式。n以以int类型数组为例:类型数组为例:npublic static int binarySearch(int a, int key)n查找胜利,那么前往搜索值的索引;查找胜利,那么前往搜索值的索引;n否那么前往否那么前往-1。5.4.5 查找数组元素查找数组元素【例【例5-6】运用】运用sort()方法将降序陈列的数组按方法将降序陈列的数组按升序陈列,然后输出赋值结果。升序陈列,然后输出赋值结果。int array = 5, 4, 3, 2, 1 ;System.out.print(数组中的元素:数组中的元素
25、:);for (int i : array) System.out.print(i + ); System.out.println();Arrays.sort(array);int index = Arrays.binarySearch(array, 0);System.out.println(元素元素0的索引值:的索引值: + index);5.4.5 查找数组元素查找数组元素n在指定的范围之内,检索某一元素在指定的范围之内,检索某一元素binarySearch(Object a,int fromIndex , int toIndex,Object key)a:要进展检索的数组。:要进展检索
26、的数组。fromIndex:指定范围的开场处索引。包含:指定范围的开场处索引。包含toIndex:指定范围的终了处索引。不包含:指定范围的终了处索引。不包含key:要搜索的元素。:要搜索的元素。5.4.5 查找数组元素查找数组元素n在指定的范围之内,检索某一元素在指定的范围之内,检索某一元素String str = new Stringab,cd,ef,yz;Arrays.sort(str);int index = Arrays.binarySearch(str,0,2,cd);System.out.println (索引位置是:+index);数组的其它操作数组的其它操作n克隆克隆nint array2=array1.clone();n判等判等nArrays.equals(array1,array2);n前往指定数组内容的字符串前往指定数组内容的字符串nArrays.toString();n将数组内容放在将数组内容放在 中,用中,用“,隔开。隔开。冒泡排序冒泡排序int arra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 门诊部上半年护理工作总结范文
- 公司上半年宣传思想工作总结
- 人际交往与心理学
- 2026年哈尔滨市17中学七年级下学期历史期中试卷及答案0522
- 机械能及其转化教学课件2025-2026学年初中物理人教版(2024)八年级下册
- 低血糖症的急救与护理
- 肾病综合征的护理
- 慢性呼吸疾病肺康复护理专家共识2026
- 重庆市铁路中学高2026届下学期考前模拟历史试卷(含答案)
- 现金支付场景全覆盖实施细则
- 江苏省无锡市2025年化学中考真题试卷附真题答案
- 国企投融资专员笔试题
- (正式版)DB1506∕T 33-2023 《露天煤矿智能化建设与管理规范》
- 口腔门诊晕厥抢救
- 无问西东观影汇报
- 国家安全生产考试证书查询手机版
- 成人自考大专入学考试题目含答案
- 银行客户经理(对公业务)考试题库
- 2025年山西省中考生物试卷真题(含答案解析)
- 麻醉深度电生理监测仪技术解析
- 汽车检测厂项目建议书(立项报告)
评论
0/150
提交评论