查看“Java一维数组”的源代码
←
Java一维数组
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==问题引入== 例如, *我们要在Java里保存20位同学的考试成绩, *我们要存5000个随机数, *或者我们要保存保存1万个账号, 我们怎么办呢 ? ==什么是数组== *可以用数组来解决。 *数组是编程语言中最常见的一种数据结构和用于存储多个数据。 [[文件:4-110.png]] *数组里面元素存放一个数据,所有的数组元素都具有相同的数据类型。 ==数组的声明== 为了在程序中使用数组,我们首先指明数组的数据类型并且声明定义数组的名称, Java里面,所有的数组元素,都具有相同的数据类型。 声明数组的格式为: <nowiki>数据类型[] arrayName; // 首选的方法 或 数据类型 arrayName[]; // 效果相同,但不是首选方法</nowiki> 可以是任意数据类型,但是数组中的元素必须具有相同的数据类型 下面就是是声明数组变量的例子: double[] prices; //这句话声明了一个double类型的数组prices double prices[]; // 效果相同,但不是首选方法 int[] num; String[] size; ==数组的初始化== 数组创建完成之后,我们必须确定每个数组元素的值,这个过程称为数组的初始化。 初始化分为两种:静态初始化和动态初始化。 ===静态初始化=== 初始化时,由程序员显示指定每个数组元素的初始值,由系统决定数组的长度。 语法如下: 数据类型[] arrayRefVar = {value0, value1, ..., valuek}; 使用这种初始化方法时,在声明数组的同时即完成初始化:如: double[] prices={1,2,3}; 而不能这样分成两句写: double [] prices; prices = {1,2,3} ===动态初始化=== 动态初始化只指定数组的长度,由系统为每个数组元素指定初始值, 语法如下: arrayName= new 数据类型[arraySize]; 告诉计算机,我建立的这个数组 大小是arraySize, 包含arraySize个相同类型的元素。 用new运算符在内存中为其分配相等大小的空间。 [[文件:4-110.png]] 例如上面声明的数组prices ,可以通过下列语句创建 <nowiki> double[] prices;//声明数组 prices= new double[3];//动态初始化:只指定长度,不指定元素值 ... price[0]=1; price[1]=2; price[2]=3;</nowiki> 或者,上面的第一句和第二句合并一下也行,在声明的同时,指定长度: <nowiki> double [] prices= new double[3];//在声明数组的同时,为它分配空间,即动态初始化。 ... price[0]=1; price[1]=2; price[2]=3;</nowiki> 例子: <nowiki>public class TestArray { public static void main(String[] args) { // 数组大小 int size = 5; //第1种方法:静态初始化 String [] menu2 = {"同学甲","同学乙","同学丙","好友A","好友丙"}; //第2种方法:动态初始化 String [] menu1 = new double[size]; menu1[0] = "同学甲"; menu1[1] = "同学乙"; menu1[2] = "同学丙"; menu1[3] = "好友A"; menu1[4] = "好友丙"; } }</nowiki> 练习:用两种方法把商院面馆的菜单储存进数组。("阳春面","油泼面","鸡汤面","火鸡面","安徽板面") ====思考:数组动态初始化后如果不给它赋值,会怎样呢 ?==== *如果数组创建后不进行初始化,基本类型的数组元素会赋予默认值:数据类型的默认值是0,char型的默认值是’\u0000’,boolean型的默认值是false。 ==访问数组元素== ===获取数组长度=== 数组一旦创建,它的数据类型和数组大小都是确定的,可以通过‘数组名.length’获得数组的大小,例如prices.length为5。 System.out.println(prices.length); System.out.println(num.length); ===读取和写入=== [[文件:java4-8.png]] 数组中的元素可以通过下标访问,数组中的每个元素都可以使用下面的语法表示: arrayName[index] 例子: <nowiki>public class TestArray { public static void main(String[] args) { String [] menu2 = {"同学甲","同学乙","同学丙","好友A","好友丙"}; System.out.println(menu2[0]); System.out.println(menu2[1]); System.out.println(menu2[2]); System.out.println(menu2[3]); System.out.println(menu2[4]); menu2[0]="阿里甲总"; menu2[1]="腾讯乙总"; menu2[2]="百度丙总"; menu2[3]="京东A总"; menu2[4]="自主创业身价过亿的低调小王"; } }</nowiki> '''注意''':'''index是数组下标,它是基于0的,也就是说index的取值范围从0开始到arrayRefVar.length-1结束,一旦超出这个范围会触发异常(异常的名字叫java.lang.ArrayIndexOutOfBoundsException)'''。 ==遍历数组== 通过观察,我们发现上述完全可以用循环来解决。 ===循环读数据=== <nowiki> System.out.println(); System.out.println("10年后:"); for(int i=0;i<menu2.length;i++) { System.out.println(menu2[i]); }</nowiki> ===循环写数据=== <nowiki> Scanner sc = new Scanner(System.in); String s; for(int i=0;i<menu2.length;i++) { System.out.println("请输入名称:"); menu2[i] =sc.nextLine(); } sc.close();</nowiki> ===循环比较大小、求和=== 求最大值: 采用打擂台的方式,假定最大元素为第一个元素,然后将每个元素与最大元素进行比较,如果该元素大于最大元素,则更新最大元素的值。 <nowiki> double [ ] score= {95,96,97,99,89}; double max = score[0]; for(int i=0;i<score.length;i++) { if(score[i]>max) { max=score[i]; } } System.out.println("最高分为:"+max);</nowiki> 思考:数组元素的最小值怎么求 ? 练习:求学生成绩的最大值,最小值,总分,平均值,优秀率(>90分的人) ===foreach语句的适用=== Java支持一个简便的for循环,简称为foreach循环,即不使用下标变量可以顺序地遍历整个数组,foreach循环的语法为: <nowiki>for(elementType element :arrayRefArray){ //处理元素element }</nowiki> 例子:打印所有数组元素 <nowiki>public class TestArray { public static void main(String[] args) { double [ ] score= {95,96,97,99,89}; // 打印所有数组元素 for (double element:score) { System.out.println(element); } }</nowiki> 比较大小: <nowiki> max = score[0]; for (double element:score) { System.out.println(element); if(element>max) { max = element; } } System.out.println("最高分为:"+max); </nowiki> 注意变量element必须声明为与arrayRefArray中元素具有相同的数据类型。
返回至
Java一维数组
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息