版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
控制结构、方法与数组应用单元三if语句switch语句循环语句目录CONTENTS123方法一维数组目录CONTENTS45排序算法二维数组673.5.1一维数组使用数组时,需要声明、创建、赋值和使用这几个步骤。1.数组的声明声明数组的语法形式如下,数据类型[]数组名;//推荐使用前一种。数据类型数组名[];声明数组就是告诉计算机,该数组中元素是什么类型的,例如:intengNo[];double[]engSalary;String[]engName;必须注意的是,Java语言中声明数组的时候不可以指定数组长度,例如intengNo[100]是非法的。3.5.1一维数组2.创建数组所谓创建数组,就是要为数组分配内存空间,不分配内存是不能存放数组元素的,创建数组就是在内存中划分出几个连续的空间用于依次存储数组中的数据元素,其语法形式如下。数组名=new数据类型[数组长度];可以把数组声明和数组创建合并,其语法形式为:数据类型[]数组名=new数据类型[数组长度];其中数组长度就是数组中存放的元素个数,必须是整数。例如:int[]engNo=newint[5];String[]engName=newString[5];3.5.1一维数组3.数组元素赋值和使用创建完数组之后,就可以给数组赋值并使用数组了。在使用数组时,主要通过下标来访问数组元素。给数组赋值的语法形式如下。
数组名[数组下标]=数值;尤其需要注意的是,数组下标从0开始编号,数组名[0]代表数组中第1个元素,数组名[1]代表数组中第2个元素……数组下标的最大值为数组长度减1,如果下标值超过最大值会出现数组下标越界问题。3.5.1一维数组3.数组元素赋值和使用有这样一个例子:假设“蓝桥系统”中可以存放10个Java工程师信息,现在需要分别输入这10个Java工程师的底薪,计算出底薪大于等于6000的高薪人员比例以及这些高薪人员的底薪平均值,程序运行结果如图所示。之前做法是:使用for循环,在用户输入的时候,立刻进行判断,统计出高薪人员的人数和髙薪人员底薪总和,然后计算得出结果。但如果需要保留这10个Java工程师底薪的信息,并需要根据用户选择输出这个工程师的底薪,这样的做法就完成不了任务了3.5.1一维数组接下来采用数组来完成这个案例,具体代码如下。publicclassTestArray1{
publicstaticvoidmain(String[]args){
inthighNum=0;//底薪大于等于6000的Java工程
师人数
intsumBasSalary=0;//高薪人员底薪总和
int[]basSalary=newint[10];//创建一个长度为10的整型数组
Scannerinput=newScanner(System.in); for(inti=1;i<=10;i++){ System.out.print("请输入第"+i+"个工程师底薪:");
//依次让用户输入的第i个工程师的底薪,注意下标是i-1 basSalary[i-1]=input.nextInt(); if(basSalary[i-1]>=6000){ highNum=highNum+1;//高薪人员计数 sumBasSalary=sumBasSalary+basSalary[i-1];//高薪人员底薪求和}} System.out.println("10个Java工程师中,高薪人员比例为:"+highNum/10.0*100+"%"); System.out.println("高薪人员平均底薪为:"+sumBasSalary/highNum); System.out.print("请输入你需要获取第几个工程师的底薪:"); intindex=input.nextInt(); System.out.println("第"+index+"个工程师的底薪为:"+basSalary[index-1]);}}3.5.2引用数据类型假设声明Java工程师的底薪变量basSalary并对其赋值和定义一个basSalary数组对其数组第一个元素进行赋值,那么这两种方式在内存上有什么区别。intbasSalary=6000;int[]basSalary;basSalary=newint[5];basSalary[0]=6000;VS6000栈basSalary区别:引用数据类型的名称实际代表的是存放引用数据类型的地址,不是引用数据类型本身。Java语言中,数组是引用数据类型,类以及后面要学到的接口也是引用数据类型,前面用到的存放字符串的String类型就是引用数据类型。3.5.3值传递与引用传递值传递和引用传递是调用方法时必须注意的问题。接下来看这样一段代码。publicclassTestArray2{
publicstaticvoidmain(String[]args){
intengNo1=1001;
intengNo2=1002; System.out.println("值传递交换数值:"); System.out.println("调用前工程师1、工程师2编号为:"+engNo1+"\t"+engNo2); //调用前
exchange1(engNo1,engNo2);//值传递,传递的实质是数值的副本,所以没有交换原值 System.out.println("调用后工程师1、工程师2编号为:"+engNo1+"\t"+engNo2);}//值传递,交换int型a和b的值publicstaticvoid
exchange1(inta,intb){
inttemp=a;
a=b;
b=temp;
}}3.5.3值传递与引用传递publicstaticvoidmain(String[]args){
…..
int[]engNo=newint[2];engNo[0]=1001;engNo[1]=1002;System.out.println("引用传递交换数值:");System.out.println("调用前工程师1、工程师2编号为:"+engNo[0]+"\t"+engNo[1]);exchange2(engNo);System.out.println("调用后工程师1、工程师2编号为:"+engNo[0]+"\t"+engNo[1]);}
//引用传递,交换数组x第1个元素和第2个元素的值
publicstaticvoidexchange2(int[]x){
inttemp=x[0]; x[0]=x[1]; x[1]=temp;
}}3.5.3值传递与引用传递采用值传递时,其传递的实质是数值的副本,在调用使用值传递交换数据的方法时,只是在方法内将值的副本的数据内容进行了交换,其原数据本身并没有发生变化。而采用引用传递时,其传递的实质为引用的地址,本例中传递的是数组的地址,在调用使用引用传递交换数据的方法时,是对这个地址指向的数据进行了交换,即对原数组的值进行了交换。值传递与引用传递区别:3.5.4—维数组初始化在前面的案例中,一般采用for循环的方式给数组赋值,接下来介绍一维数组初始化的方法。在声明、创建的时候同时初始化,例如:int[
]engNo=newint[
]{1001,1002,1003,1004,1005};String[
]engName=newString[
]{"柳海龙","孙传杰","孙悦");甚至可以直接写成:int[
]engNo={1001,1002,1003,1004,1005};String[
]engName={"柳海龙","孙传杰","孙悦"};3.5.4—维数组初始化语句String[]engName={"柳海龙","孙传杰","孙悦"};对数组声明、创键并初始化的过程可以细分为如下几步。int型数组初始化String型数组初始化(1)String[]engName——在栈中分配1个空间,用于存放字符串数组的地址。(2)engName=newString[3];——在堆中分配3个连续空间,并把地址赋给engName,使栈中的地址指向这3个连续的内存空间,默认初始值为null。(3)engName[0]="柳海龙";——在堆内存中创建字符串“柳海龙”,并把该引用类型的地址存放到engName数组的第1个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 季度财务报表分析结果通报6篇范本
- 智慧物流系统服务质量考核表
- 团队领导力发展考核表
- 2026福建泉州市正骨医院招聘(三)考试备考试题及答案解析
- 回复市场部关于广告投放效果询问回复函(3篇)
- 2026年重庆川维化工有限公司人员招聘考试模拟试题及答案
- 新员工入职培训通知函(7篇范文)
- 中国科学院自然科学史研究所科研人员招聘笔试模拟试题及答案解析
- 2026广西崇左市疾病预防控制中心(崇左市卫生监督所)招聘编外人员2人考试备考题库及答案解析
- 智能穿戴设备用户体验设计与优化指南
- 2026道德与法治八年级上册教学课件:4.2《遵守规则》
- 2026秋新教材人教版九年级上册数学第二十九章《圆》教案
- 农田灌溉排水渠系工程监理实施细则
- 2026年学法减分考核题库及答案
- 第4课《夺取解放战争的胜利》第1课时(教学设计)
- 2026年宁夏吴忠社区工作者考试卷附答案
- 2026年西藏从乡村振兴等专干中招录公务员(事业编)(申论)全真模拟试题及答案
- 徐工25吨吊车使用说明书
- 帕金森病深部脑刺激(DBS)手术
- ISO9000-2026 质量管理基础与术语(英文版)
- 2026年温州市房地产行业分析报告及未来发展趋势报告
评论
0/150
提交评论