当前位置:文档之家› Java数组

Java数组

public class UseVariable { public static void main(String[] args) { int student1 = 55, student2 = 66, student3 = 77, student4 = 88, student5 = 99; } }
public class UseArray { public static void main(String[] args) { int[] students = new int[5]; // 创建一个包含 5 个元素的变量 students[0] = 55; // 第 1 个学生的成绩 students[1] = 66; // 第 2 个学生的成绩 students[2] = 77; students[3] = 88; students[4] = 99; System.out.println("第 1 位学生的分数是:" + students[0]); System.out.println("第 3 位学生的分数是:" + students[2]); System.out.println("第 5 位学生的分数是:" + students[4]); } }
System.out.println("此行在运行的时候要出错:" + students[5]);
我们发现编译是不会给出错误的,但是程序在执行到这行的时候,会发现代码是在访 问一个不存在的数组元素,就会给出一个错误。运行程序,输出如下:
第 1 位学生的分数是:55 第 3 位学生的分数是:66 第 5 位学生的分数是:77 Exception in thread "main" ng.ArrayIndexOutOfBoundsException: 5 at UseArray.main(UseArray.java:12)
最高分为:99
结果是对的 。 呼呼,写的好累,幸好只有 5 个学生,如果是有 50 个学生,那程序要怎 么写呢?如果还是按照这个思路写,要定义 50 个变量,并且要写 50 个 if 语句处理,这对 于一个成熟的编程语言来说显然是不可能的。这样的处理方式有两个问题: 需要重复创建变量的过程,并且要为每个变量取名字。 需要按照不同的变量名对每个变量进行一样的处理。 下面引入数组,看看使用数组是如何将这两个问题解决的。
第5章


本章将接触 Java 语言中一个基本的部分:数组(Array) 。 数组是编程语言中一个很通 用的概念,几乎所有的编程语言都支持数组 。 为 了学习数组,先回顾一下前面学到的有关知 识。 Java 中的基本变量类型和变量; Java 中的循环语句。 第 3 章中学习了 Java 基本数据类型以及如何创建一个变量 。 本 章中接触的数组其实不比 一个变量复杂多少 。 在学习基本数据类型与变量的过程中主要学习了变量的创建 、 赋 值与运 算。在本章中将学习如何通过数组处理多个变量,下面开始本章的内容。
5.1.2 数组初探
数组是一组相同类型变量的集合 。 本 节中将讲述数组的基本语法 。 首先是如何创建一个 数组。 1.创建数组 下面通过一个创建 int 数组的例子看一下 Java 中使用数组的语法。
int studentCount = 5; // 创建一个 int 变量 student,并给它赋值 5 int[] students; // 声明了一个 int 数组,数组名字为 students students = new int[5]; // 创建了一个代表 “5 个 int 变量” 的数组, 并赋值给 students
public class UseVariable { public static void main(String[] args) { // 创建 5 个 int 变量,保存 5 个学生的成绩 int student1 = 55, student2 = 66, student3 = 77, student4 = 88, student5 = 99;
·101·
第1篇
Java 语言基本语法
上面 2 行代码分别创建了一个 int 变量和一个 int 数组 。 对于“int studentCount = 1005;” 我们应该很熟悉了 。 下面看第 2 行创建数组的代码,这行代码声明(declare)了一个名为 students 的 int 数组 。 先看一下声明数组的语法:“类型”+“[]”+“一个或多个空格”+“数 组名字”(本例中就是“int[] students”) 。 语法中与普通变量唯一不同的地方就是类型后面 跟着一对中括号。这对中括号的就标志声明一个数组而不是创建一个普通的变量。 紧跟着第 3 行创建了一个数组 (使用 “new int[5]” ) , 并将这个数组赋值给声明的 students (使用等号赋值操作) 。 创 建一个数组的语法为:new+空格+类型+[+一个代表数组大小的非 负整数+](本例中就是 new int[5];) 。 其中,new 是 Java 中的关键字,可以把它的意思理解 为“创建,新建” 。 “new int[5];”的意思就是“创建一个数组,数组的中每个元素的类型为 int,数组中包含 5 个元素”。 在创建数组的时候,中括号中的数字 5 可以被一个 int 变量代替,但是它的值必须是 非负数 。 例如, 在上面的代码中, 就可以将第 2 行代码写为 “students = new int[studentCount];” 。 因为 studentCount 的值也 5,所以它们的意义是完全一样的。 注意:Java 中允许创建一个大小为 0 的数组,也就是说“int[] emptyArray = new int[0];” 在 Java 中是正确的。这样的数组基本上没有什么作用,可以不用理会。当然,大 小为负数的数组在 Java 中是不被允许的。 为了简洁,也可以把数组的声明 、 创 建和赋值合并为一行:int[] students = new int[5]; 。 实 际上,绝大多数情况下都是使用这种方式。 好的,现在就完成了声明并创建一个数组的过程代码。下面看一下如何使用数组。 2.使用数组 数组不是普通的变量 。 在 上面的代码中一次性创建了 5 个 int 变量 。 这 5 个变量有着相同 的名字——students。那么如何区分和使用这 5 个变量呢?看下面的例程:
5.1
Байду номын сангаас什么是数组
本节中将通过一个记录学生成绩的小程序来引入数组的概念 。 首先我们先尝试不使用 数组处理问题,然后再通过使用数组处理问题 。 通过对比将会发现数组是一种简单好用的定 义一组变量的方式。
5.1.1 假设:如果需要逐个定义变量
本节中我们假设需要一个小程序,功能是记录全班的成绩 。 假设全班只有 5 个人,按照 第 3 章中学习的知识,这个功能完全可以实现。
我们发现,程序在执行到最后一行之前都是正常的,输出也是正确的,但是在最后, 没有输出期待的内容,反而输出了一个“ng.ArrayIndexOutOfBoundsException: 5” 。 冒号前面的内容是告诉我们程序中使用了超出数组边界的元素,冒号后面的 5 是告诉我们 使用的那个非法的数组下标是 5(可不是嘛,我们使用了 students[5],如果在程序中使用 students[6],冒号后面的值就是 6 了) 。 紧接着下面告诉我们错误所在地 。 U seArray.java:12 代 表 UseArray.java 源文件的第 12 行有错误,正是我们刚刚添加的使用非法下标的那行。 提示:如果是在 Eclipse 中运行,会发现最后两行错误信息是用红色的字体输出出来的。 Eclipse 的 Console 视图中,红色字体的内容默认是错误信息。所以当在里面看到 红色的输出,就知道“不好,肯定出错了 ”。 (3) 数组的大小一旦创建后就不可改变 。 所以不要去想 Java 中是否有可以扩展或者缩小 一个数组容量的方法。 通过创建数组的语法发现,一个数组中的元素类型是相同的 。 这也是数组的一个特性, 也是我们使用数组的最初目的 。 我们在本节中绕了很多圈儿,了解了很多数组使用的细节, 但是对于数组,我们的第一印象应该是“0 个或多个相同类型的变量组合”。
·102·
第5章
数组
有任何区别,也可以通过数组名字+数组下标的组合(如“students[0]”)来给某个元素赋 值,可以以此来使用某个元素的值。 数组中最容易让人犯错的,就是数组的下标,下面来看一下数组的下标。 提示:数组下标也叫做数组索引。在声明数组(“int[] students”)、创建数组(“new int[5]”)以及使用数组元素(“students[0]”)的时候,都使用到了中括号。所 以遇到中括号的时候,首先要分清楚中括号代表的是什么意思,不要弄混了。 3.数组的下标 在使用数组的时候,要特别注意数组的下标,下面 3 点需要牢牢记住。 (1) 数组下标是从 0 开始的 。 也就是说, 在上面的例子中, students[0]就代表数组 students 的第 1 个元素。students[1]就代表数组 students 的第 2 个元素。 (2)不要访问不存在的数组元素 。 在 上面的例子中,students 数组包含 5 个元素 。 我们知 道数组下标是从 0 开始的,那么从 students 数组的合法下标就是 0 到 4,称这个合法的范 围为数组的边界 。 对于使用超出此范围的下标访问 students 数组元素的行为,称之为“数组 下标出界错误” 。 如果在上面的例程最后一行添加如下这行代码,尝试使用 students[5]去访 问那个不存在的、超出数组边界的第 6 个数组元素。
注意:这里不能使用 if-else 语句嵌套,if-else 语句嵌套的语法含义是只执行第一个符合 条件的语句代码块,但是在这里需要把所有学生的成绩遍历一遍。所以这里需要 对每个学生都使用一个 if 语句来判断并处理。 程序很简单,就是创建一个变量 bestScore 用来保存最高分(初始值为 0) 。 然后用这个 值去和一个个学生的成绩比较,如果学生的成绩高于或等于 bestScore,就把学生的成绩赋 值给 bestScore,否则就继续判断下一个学生的成绩。运行程序,输出如下结果:
相关主题