首页 java从入门到精通第4章

java从入门到精通第4章

举报
开通vip

java从入门到精通第4章 y 54 y 第 4 章 数组 y 55 y 第 4 章 数 组 Java 语言中的数组是用来存放同一种数据类型数据集的特殊对象。在本章中,首先介绍 数组的创建、初始化,然后是它们的基本使用情况。学习完这些基础知识后,本章会介绍几 种基本的排序方法,然后是多维数组的使用。有些内容放在本章讲有些早,但为了使全书的 内容组织有序,所以把数组相关的内容都放到了本章来讲解,如果读者觉得有的内容难于理 解,可以先暂时放一下,等学习了以后的内容,再来回顾一下,一定会有更好的理解。 4....

java从入门到精通第4章
y 54 y 第 4 章 数组 y 55 y 第 4 章 数 组 Java 语言中的数组是用来存放同一种数据类型数据集的特殊对象。在本章中,首先介绍 数组的创建、初始化,然后是它们的基本使用情况。学习完这些基础知识后,本章会介绍几 种基本的排序方法,然后是多维数组的使用。有些内容放在本章讲有些早,但为了使全书的 内容组织有序,所以把数组相关的内容都放到了本章来讲解,如果读者觉得有的内容难于理 解,可以先暂时放一下,等学习了以后的内容,再来回顾一下,一定会有更好的理解。 4.1 数组基础 数组保存的是一组有顺序的、具有相同类型的数据。在一个数组中,所有数据元素的数 据类型都是相同的。可以通过数组下标来访问数组,数据元素根据下标的顺序,在内存中按 顺序存放。本节的主要内容是介绍数组的基础知识。 4.1.1 为什么要使用数组 假设有一个程序要求输入一周内每天的天气情况,然后计算这一周内的平均气温。可 以通过让用户输入一周七天的每天气温,然后来计算平均气温,最后显示出来。程序代码 如下。 import java.util.*; public class AverageTemperatures{ public static void main(String args[ ]){ int count; double next,sum,average; sum=0; //创建一个 Scanner 对象 Scanner sc=new Scanner(System.in); System.out.println("请输入七天的温度:"); for(count=0;count<7;count++) { //通过 Scanner 对象获得用户输入 next=sc.nextDouble(); sum+=next; } System.out.println(sum); average=sum/7; System.out.println("平均气温为:"+average); } } 程序的运行结果如下。 请输入七天的温度: 34.5 Java 从入门到精通 y 56 y 30.7 34 28.0 27.9 35.7 31.0 221.8 平均气温为:31.685714285714287 程序首先定义了一系列的变量,count 用来表示第几天,next 用来存放每天的气温,sum 用来存放气温的总和,而 average 是用气温的总和除以天数得到的平均值。下面定义了一个 Scanner 对象,Scanner 是一个使用正规表达式来解析基本类型和字符串的简单文本扫描器, 可以用来读取用户输入的气温。在循环语句中调用该类的 nextDouble( )方法,读取用户输入 的气温,把它放入 next 中,然后加入 sum 中。循环结束后求得气温的平均值 average。 假设程序有进一步的要求,要求 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 每一天的气温,那么可以声明七个 double 类型的变 量来存放气温。但是这样实现过于“笨拙”。这时候可以用数组来实现,用数组来存放统一 类型的数据是十分方便的。 4.1.2 数组的创建与访问 Java 的数组可以看作一种特殊的对象,准确地说是把数组看作同种类型变量的集合。在 同一个数组中的数据都有相同的类型,用统一的数组名,通过下标来区分数组中的各个元素。 数组在使用前需要对它进行声明,然后对其进行初始化,最后才可以存取元素。下面是声明 数组的两种基本形式。 ArrayType ArrayName[ ]; ArrayType [ ] ArrayName; 符号“[]”说明声明的是一个数组对象。这两种声明方式没有区别,但是第二种可以同 时声明多个数组,使用起来较为方便,所以程序员一般习惯使用第二种方法。下面声明 int 类型的数组,格式如下。 int array1[ ]; int [ ] array2,array3; 在第一行中,声明了一个数组 array1,它可以用来存放 int 类型的数据。第二行中,声明 了两个数组 array2 和 array3,效果和第一行的声明方式相同。 上面的语句只是对数组进行了声明,还没有对其分配内存,所以不可以存放,也不能访 问它的任何元素。这时候,可以用 new 对数组分配内存空间,格式如下。 array1=new int [5]; 这时候数组就有了以下 5 个元素。 array[0] array[1] array[2] array[3] array[4] 第 4 章 数组 y 57 y 注意:在 Java中,数组的下标是从 0开始的,而不是从 1开始。这意味着最后一个索引 号不是数组的长度,而是比数组的长度小 1。 数组是通过数组名和下标来访问的。例如下面的语句,把数组 array1 的第一个元素赋值 给 int 型变量 a。 int a=array1[1]; Java 数组下标从 0 开始,到数组长度-1 结束,如果下标值超出范围,小于下界或大于上 界,程序也能通过编译,但是在访问时会抛出异常。下面是一个错误的示例。 public class ArrayException { public static void main(String args[ ]) { //创建一个容量为 5 的数组 int[ ] array1=new int[5]; //访问 array1[5] System.out.println(array1[5]); } } 程序首先声明了一个大小为 5 的 int 类型数组,前面已经讲到,它的下标最大只能是 4。 但在程序中却尝试访问 array1[5],显然是不正确的。程序会正常通过编译,但是在执行时会 抛出异常。程序的运行结果如才。 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at ArrayException.main(ArrayException.java:4) 异常是 Java 中一种特殊的处理程序错误的方式,本书在后面章节会详细讲解该内容。读 者这里只需要知道访问数组下标越界时会产生 ArrayIndexOutOfBoundsException 的异常即可。 4.1.3 数组初始化 数组在声明创建之后,数组中的各个元素就可以访问了,这是因为在数组创建时,自动 给出了相应类型的默认值。默认值根据数组类型的不同而有所不同。下面的程序可以看到各 类数组的默认值。 public class ArrayDefaultValue{ public static void main(String args[ ]){ //创建一个 byte 类型的数组 byte [ ] byteArray=new byte[1]; //创建一个 char 类型的数组 char [ ] charArray=new char[1]; //创建一个 int 类型的数组 int [ ] intArray=new int[1]; //创建一个 long 类型的数组 long [ ] longArray=new long[1]; //创建。。。 float [ ] floatArray=new float[1]; double[ ] doubleArray=new double[1]; String [ ] stringArray=new String[1]; System.out.println("byte="+byteArray[0]);//打印出各个数组的默认初始化值 Java 从入门到精通 y 58 y System.out.println("char="+charArray[0]); System.out.println("int="+intArray[0]); System.out.println("long="+longArray[0]); System.out.println("float="+floatArray[0]); System.out.println("double="+doubleArray[0]); System.out.println("String="+stringArray[0]); } } 程序的运行结果如下。 byte=0 char= int=0 long=0 float=0.0 double=0.0 String=null 程序声明了各种类型的数组,并通过 new 来创建它们。然后访问它们的元素,可以看到 在创建的时候数组元素会获得一个默认值,这个值跟前面讲解数据类型时各种类型的默认值 是一致的。这样做可以避免程序编写中一些不必要的错误,但它没有其他意义,因为使用数 组肯定是想存储一定的值,所以需要对它进行自己的初始化。一种方法是使用赋值语句来进 行数组初始化,格式如下。 int [ ] array1=new int[5]; array1[0]=1; array1[1]=2; array1[2]=3; array1[3]=4; array1[4]=5; 通过上面的语句,数组的各个元素就会获得相应的值,如果没有对所有的元素进行赋值, 它会自动被初始化为某个值(如前面所述)。另一种方式是在数组声明的时候直接进行初始 化,格式如下。 int [ ] array1={1,2,3,4,5}; 该语句跟上面的语句的作用是一样的。在数组声明的时候直接对其进行赋值,按括号内 的顺序赋值给数组元素,数组的大小被设置成能容纳大括号内给定值的最小整数。下面的程 序演示了数组的初始化。 public class ArrayInital{ public static void main(String args[ ]){ //创建一个 int 型数组 int [ ] array1=new int[5]; //对数组元素赋值 array1[0]=1; array1[1]=2; array1[2]=3; array1[3]=4; array1[4]=5; //另一种数组创建方式 int [ ] array2={1,2,3,4,5}; //打印出数组元素 for(int i;i<5;i++) 第 4 章 数组 y 59 y System.out.println("array[i]="+array1[i]); for(int i;i<5;i++) System.out.println("array[i]="+array1[i]); } } 程序的运行结果如下。 array1[0]=1 array1[1]=2 array1[2]=3 array1[3]=4 array1[4]=5 array2[0]=1 array2[1]=2 array2[2]=3 array2[3]=4 array2[4]=5 可以看到数组的两种初始化效果是相同的。 4.1.4 length 实例变量 Java 中的数组是一种对象,它会有自己的实例变量。事实上,数组只有一个公共实例变 量,也就是 length 变量,这个变量指的是数组的长度。例如,创建下面一个数组: int [ ] array1=new int [10]; 那么 array1 的 length 的值就为 10。有了 length 属性,在使用 for 循环的时候就可以不用 事先知道数组的大小,而写成如下形式。 for(int i=0;i 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 了。程序代码如下。 import java.util.*; public class AverageTemperaturesDemo { public static void main(String args[ ]) { //声明用到的变量 int count; double sum,average; sum=0; double [ ]temperature=new double[7]; //创建一个 Scanner 类的对象,用它来获得用户的输入 Scanner sc=new Scanner(System.in); System.out.println("请输入七天的温度:"); for(count=0;countaverage) System.out.println("第"+(count+1)+"天气温高于平均气温"); else System.out.println("第"+(count+1)+"天气温等于平均气温"); } } } 程序的运行结果如下。 请输入七天的温度: 32 30 28 34 27 29 35 平均气温为:30.714285714285715 第 1 天气温高于平均气温 第 2 天气温低于平均气温 第 3 天气温低于平均气温 第 4 天气温高于平均气温 第 5 天气温低于平均气温 第 6 天气温低于平均气温 第 7 天气温高于平均气温 程序声明一个 double 型数组来存放每天的温度,求得平均温度后,用每天的平均温度与 平均温度比较,得到比较结果。 4.2 数组的深入使用 上一节讲解了数组的创建、初始化、访问等基本知识,及一个简单的小程序。在这一节 里,将会涉及到数组复杂一点的应用:命令行 参数 转速和进给参数表a氧化沟运行参数高温蒸汽处理医疗废物pid参数自整定算法口腔医院集中消毒供应 和数组拷贝。命令行参数实际上也是以数 组形式存在的,而数组拷贝是 Java 提供的一个方便的操作。 4.2.1 命令行参数 如果读者以前接触过 C 语言或其他参数语言,可能会知道命令行参数。命令行参数就是 用户在执行程序时提供的一些参数,以供程序运行时使用,而不是每次都修改源程序中的数 据或者通过 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 输入输出读取用户输入的参数(现在比较流行使用 Scanner 类)。 第 4 章 数组 y 61 y 仔细观察前面的程序,发现在所有的 Java 程序中都有一个 main 方法,而这个方法带有 一个参数 String args[ ]。这个参数就是 main 方法接受的用户输入的参数列表,即命令行参数。 程序代码如下。 public class ArgsDemo { public static void main(String args[ ]) { System.out.println("共接受到"+args.length+"个参数"); for(int i=0;i 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf 数组 既然 Java 中的多维数组实质上都是一维数组,那么每个数组的数组是否可以大小不同? 答案是肯定的。这一节将会介绍这类不规则数组。例如,可以如下声明一个二维数组: int [ ][ ]twoD=new int[4][ ]; 数组的行数在数组声明时必须确定,列数可以再确定。上面的数组就可以按如下的声明 确定各个行的列数。 twoD[0]=new int[1]; twoD[1]=new int[2]; twoD[2]=new int[3]; twoD[3]=new int[4]; 经过上面的声明,在二维数组 twoD 中,第一行有一个元素,第二行有两个元素,第三 行有三个元素,第四行有四个元素。这个数组是一个不规则的数组。下面的程序完整地演示 了不规则数组的声明和使用。 第 4 章 数组 y 71 y public class TwoD3{ public static void main(String args[ ]){ //创建一个二维数组,指定它的行数 int [ ][ ]twoD=new int[4][ ]; //指定各行的列数 twoD[0]=new int[1]; twoD[1]=new int[2]; twoD[2]=new int[3]; twoD[3]=new int[4]; int k=1; //对数组元素进行赋值 for(int i=0;i
本文档为【java从入门到精通第4章】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_937557
暂无简介~
格式:pdf
大小:468KB
软件:PDF阅读器
页数:22
分类:
上传时间:2013-02-09
浏览量:531