大串 South China Agr icultur al University 第七章数组
第七章 数组
主要内容: 71数组元素 7.2声明数组和使用数组 73对象数组 7.4命令行参数 7.5可变长度参数列表 7.6二维数组与多位数组 77 Array List类 78多边形与折线 79鼠标事件 7.10键盘事件
主要内容: ◼ 7.1 数组元素 ◼ 7.2 声明数组和使用数组 ◼ 7.3 对象数组 ◼ 7.4 命令行参数 ◼ 7.5 可变长度参数列表 ◼ 7.6 二维数组与多位数组 ◼ 7.7 ArrayList类 ◼ 7.8 多边形与折线 ◼ 7.9 鼠标事件 ◼ 7.10 键盘事件
7.1数组元素 口数组是一个含有多个值的列表,每个值存在于数组的 特定的、具有编号的位置。对应每个位置的编号称为索 引或者下标。 数组中每个元素类型相同,各元素存于 数组名数组中特定的、具有编号的位置。 下标 0123456789 scores79879482679887817491 大小为N的数组它的下标值是0到n-1 当前数组的大小是10,索引是从0到9
数组是一个含有多个值的列表,每个值存在于数组的 特定的、具有编号的位置。对应每个位置的编号称为索 引或者下标。 0 1 2 3 4 5 6 7 8 9 79 87 94 82 67 98 87 81 74 91 大小为N的数组它的下标值是0到 n-1 scores 数组名 下标 当前数组的大小是10,索引是从0到9 7.1 数组元素 数组中每个元素类型相同,各元素存于 数组中特定的、具有编号的位置
术大孝 ■访问数组的方式是:数组名[索引值] scores[27 表达式 sCores[2]引用一个具体内存单元的整型值 并且可以用于任何使用整型变量的场合 ■可以对 scores[2]赋值、用计算或者输出 scores[2]的值。 ■数组索引是一个整型值,可以使用整型表达式指定用 于访问数组的素引。 scores[2]=89 scores[first]= scores[first+ 2, mean=(scores[o]+ scores[1])2, System, out println(" Top=+scores[5]);
◼ 访问数组的方式是: 数组名[索引值] ◼ scores[2] ◼ 表达式 scores[2] 引用一个具体内存单元的整型值, 并且可以用于任何使用整型变量的场合。 ◼ 可以对scores[2]赋值、用于计算或者输出scores[2]的值。 ◼ 数组索引是一个整型值,可以使用整型表达式指定用 于访问数组的索引。 scores[2] = 89; scores[first] = scores[first] + 2; mean = (scores[0] + scores[1])/2; System.out.println ("Top = " +scores[5]);
72声明数组和使用数组 ■保存在数组中的值称为数值元素,值的类型成为数组 元素类型 ■保存在一个数组中的所有值具有相同的类型 个数组可以保存任何基本类型数据或者是对象。 ■在Java中,数组是对象,要建立数组,必须声明数组 应用变量,然后可以用new运算符实例化数组,为数 组分配保存值的内存空间
◼ 保存在数组中的值称为数值元素,值的类型成为数组 元素类型。 ◼ 保存在一个数组中的所有值具有相同的类型。 ◼ 一个数组可以保存任何基本类型数据或者是对象。 ◼ 在Java中,数组是对象,要建立数组,必须声明数组 应用变量,然后可以用new运算符实例化数组,为数 组分配保存值的内存空间。 7.2 声明数组和使用数组
大串 South China Agr icultur al University ■数组声明和初始化方法: scores 79 87 int[] scores new int[l0]i scores 94 ■或 int scores[]= new int[10]; 82 或int[] scores= 67 98 79,87,94,82,67,98,87,81,74,91}; 87 使用初始值表就不需要用new运算符。 81 上面的语句执行结果如图1: 74 如果继续对数组 scores初始化: 91 结果如图2: 图2 图1
6 ◼ 数组声明和初始化方法: ◼ int[] scores = new int[10]; ◼ 或 int scores[] = new int[10]; ◼ 或 int[] scores = {79,87,94,82,67,98,87,81,74,91}; 使用初始值表就不需要用new运算符。 ◼ 上面的语句执行结果如图1: ◼ 如果继续对数组scores初始化: 结果如图2: scores scores 79 87 94 82 67 98 87 81 74 91 图1 图2
■声明数组 scores: scores 79 ■数组变量的类型(int])中 87 没有指定数组的大小 94 82 ■用new运算符实例化数组 67 后,预留了存放10个整型的 98 87 内存空间,索引好是0到9 81 74 旦将数组声明为确定的 91 大小后,该数组能够保存的 值的个数就不可以再改变 数组 scores声明: int[] scores new int[10]
◼ 声明数组 scores : scores 79 87 94 82 67 98 87 81 74 91 数组scores声明 : int[ ] scores = new int[10]; ◼ 数组变量的类型(int[ ])中 没有指定数组的大小。 ◼ 用new运算符实例化数组 后,预留了存放10个整型的 内存空间,索引好是0到9。 ◼ 一旦将数组声明为确定的 大小后,该数组能够保存的 值的个数就不可以再改变
声明数组 float[i prices new float [500 用于指定数组索引的 ■ boolean[]fags; 方括号在java中解释 为运算符,在java所 有的运算符中,索引 ■ flags= new boolean[20];预算符“[y有最高 的优先级。 char[ codes= new char[1750
◼float[ ] prices = new float [500]; ◼boolean[ ] flags; ◼ flags = new boolean[20]; ◼ char[ ] codes = new char[1750]; 声明数组 用于指定数组索引的 方括号在java中解释 为运算符,在java所 有的运算符中,索引 预算符 “[ ]”有最高 的优先级
术大孝 在处理数组元素的时候,可以使用 foreach语句来处理。 for (int score scores) System. out. println (score)i Java数组都是迭代器 能够使用for循环的迭代 等价于: 器版提取指定迭代器中的 int score: 每个值。 while scores. hasnexto) 该循环适用在处理数组 score= scores. next(; 所有元素的情形,并且处 system. out. printIn( score);的顺序是从索引值的最 小值到最大值。 例题71 BasicArray. java P243
◼ 在处理数组元素的时候,可以使用foreach语句来处理。 for (int score : scores) System.out.println (score); 等价于: int score; while(scores.hasnext()) { score= scores.next() ; system.out.println(score); } 该循环适用在处理数组 所有元素的情形,并且处 理的顺序是从索引值的最 小值到最大值。 例题7.1 BasicArray.java (P243) Java数组都是迭代器 能够使用for循环的迭代 器版提取指定迭代器中的 每个值
7.2.1边界检查 旦数组被创建,它的大小就固定了 ■索引预算符会自动执行边界检查,可以保证只引用 数组有效范围内的索引置。 当访问一个数组的元素的时候,索引值必须大于等于 0并且小于等于数组的大小,否则将抛出异常 ArrayIndexOutofBoundsEXception 数组的这一操作叫做自动边界检查。 例如:int[]= new int[100] problem for (int index=0; index <=(100 index++) codes [index]= index*50+ epsilon;
◼ 一旦数组被创建,它的大小就固定了。 ◼ 索引预算符会自动执行边界检查,可以保证只引用 数组有效范围内的索引置。 ◼ 当访问一个数组的元素的时候,索引值必须大于等于 0 并且小于等于数组的大小,否则将抛出异常 ArrayIndexOutOfBoundsException. ◼ 数组的这一操作叫做自动边界检查。 7.2.1 边界检查 例如: int [ ] = new int [ 100] for (int index=0; index <= 100; index++) codes[index] = index*50 + epsilon; problem