Java 自学课件 - 数组
合集下载
Java课件7Java数组
17
7.4 二维数组
扫描一个二维数组需用二重循环,例如:
for(int i=0; i<aai.length; i++){ System.out.println(); for(int j=0; j<aai[i].length; j++) System.out.println(aai[i][j]); }
ai = new int[10]; as1 = new String[25];
可以把数组创建作为数组变量定义的初始化过程, 从而将数组定义的两个步骤和并成一个: int[] ai = new int[10];
7
7.2 数组创建…
数组元素的默认初始值为:
– 0 值:对于数值类类型(如 int、double 等) – false:对于 boolean 类型 – null:对于引用类型(如 String 等)
下面的定义创建一个二维数组,元素初值均为 0: aai=new int[3][4]; 其中 3 是第一维(行)的长度,4 是第二维(列 )的长度。
15
7.4 二维数组…
可以在定义数组时用指定的数据进行初始化,如: int[][] aai={{ 1, 2, 3, 4}, { 5, 6, 7, 8}, { 9,10,11,12}, }; aai 1 5 2 6 3 7 4 8
通过下标访问既可以取数组元素的值,也
可以为数组元素赋值。
11
7.3 数组访问…
数组对象的成员
length 是一个表示数 组长度(数组元素个数)的常量,常用来 控制对数组的扫描,例如: for(int i=0;i<ai.length;i++) System.out.println(ai[i]);
Java 自学课件 - 数组
[3] 10 11 12 int[][] array = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12} };
二维数组的长度
二维数组的每个元素是一个一维数组.
数组X的长度是数组X的元素的个数,可由X.length得到. 元素X[i]是一个一维数组,其长度可由X[i].length得到.
2 9 5 4 8 1 6
Example:SelectionSort.java
二维数组
声明数组引用变量
dataType[][] refVar;
创建数组并将引用赋值给变量
refVar = new dataType[rowSize][colSize];
在一条语句中声明和创建数组
dataType[][] refVar = new dataType[rowSize][colSize]; 或者 dataType refVar[][] = new dataType[rowSize][colSize];
x[0][0] x[0][1] x[0][2] x[0][3] x[0][4] x[1][0] x[1][1] x[1][2] x[1][3] x[2][0] x[2][1] x[2][2] x[3][0] x[3][1] x[4][0]
例 给选择题评分
编写程序,给选择题评分.设有8个学生10个问题, 答案存储在一个二维数组中.每行记录一个学生的答 案.输出每个学生的评分结果.
Java程序设计
YANGLIN@BNUITC
第6章 数组
学习目标
理解数组的概念 掌握声明数组变量,创建数组,初始化数组 掌握如何访问数组元素 掌握向方法传递数组 了解如何复制数组 掌握搜索和排序算法 掌握多维数组的声明和创建
JAVA语言程序设计数组ppt课件
二维数组的初始化
int a[][]=new int[3][4];
❖ 数组中各元素通过两个下标来区分 ❖ 每个下标的最小值为0,最大值分别比行数或列数少1。 ❖ 系统为该数组a的12个元素分配存储空间,形式如表所示:
a[0][ 0]
a[0][ 1]
a[0][ 2]
a[0][3]
行
a[1 ][0]
a[1][ 1]
gd [2][0] 56
gd [2][1] 87
gd [2][2] 90
gd [3][0] 92
gd [3][1] 69
gd [3][2] 75
注意:二维数组元素的赋值和输出可以通过双重循环语句完
成
5.3 数组的基本操作
❖ 数组的引用
对数组的应用通常是对其元素的引用 数组元素可以被赋值、被输出或参加表达式运算
Demo1
int c[][],d[][], e[][],i, j;
c=new int[3][3];
d=new int[3][3]; e=new int[3][3]; for(i=0;i<3; i++)
c、d、e数组各元素 012 123
for (j=0; j<3; j++) 2 3 4
{
d[i][j]=i+j;
System.out.println();
}
“雪亮工程"是以区(县)、乡(镇) 、村( 社区) 三级综 治中心 为指挥 平台、 以综治 信息化 为支撑 、以网 格化管 理为基 础、以 公共安 全视频 监控联 网应用 为重点 的“群 众性治 安防控 工程” 。
5.4 数组应用举例-排序
【5-4】排序
Java基础培训(第5章 数组、Vector与字符串)PPT教学课件
//Vector public Vector(int initialcapacity, int capacityIncrement);//创建一个初始大
//小为initialcapacity,每次递增capacityIncrement 的Vector
2020/12/10
4
第5章 数组、Vector与字符串
向量Vector
访问和查找Vector中的数据
//访问某个数据 public final synchronized Object elementAt(int index)
throws ArrayIndexOutOfBoundsException; //查找第一个元素数据 firstElement(); //查找最后一个数据; lastElement(); //查找是否为空 isEmpty(); //查找是否包含某个元素 public final boolean contains(Object ob); //查找元素第一个出现的位置,找不到返回-1 public final int indexOf(Object ob);
throws ArrayIndexOutOfBoundsException; //查找从startIndex开始,最后一次出现的位置 public final synchronized Object lastIndexOf(Object ob, int startIndex)
throws ArrayIndexOutOfBoundsException;
2020/12/10
6
第5章 数组、Vector与字符串
向量Vector(增加和删除数据)
//向向量最后增加一个数据 public final synchronized void addElement(Object newElement); //把新对象插入到index位置 public final synchronized void inssertElementAt(Object newElement,int index)
//小为initialcapacity,每次递增capacityIncrement 的Vector
2020/12/10
4
第5章 数组、Vector与字符串
向量Vector
访问和查找Vector中的数据
//访问某个数据 public final synchronized Object elementAt(int index)
throws ArrayIndexOutOfBoundsException; //查找第一个元素数据 firstElement(); //查找最后一个数据; lastElement(); //查找是否为空 isEmpty(); //查找是否包含某个元素 public final boolean contains(Object ob); //查找元素第一个出现的位置,找不到返回-1 public final int indexOf(Object ob);
throws ArrayIndexOutOfBoundsException; //查找从startIndex开始,最后一次出现的位置 public final synchronized Object lastIndexOf(Object ob, int startIndex)
throws ArrayIndexOutOfBoundsException;
2020/12/10
6
第5章 数组、Vector与字符串
向量Vector(增加和删除数据)
//向向量最后增加一个数据 public final synchronized void addElement(Object newElement); //把新对象插入到index位置 public final synchronized void inssertElementAt(Object newElement,int index)
java课件 第七章 数组
13
7.3 数组访问
数组是一种数据结构,它由一组数组元素组 成。 数组是一种对象,它也有自己的成员变量和 方法。 数组一旦创建,就可以通过数组对象的引用 访问数组中的每一个元素,或者访问数组的 成员变量和方法。
14
7.3.1 对数组元素的访问
访问数组元素可以使用以下表达式: <数组对象引用>[<下标>] 数组访问表达式的类型是数组元素的类型,值是对 应数组元素的值。数组访问表达式的计算结果是变 量,可以出现在赋值操作符的左边。 <下标>是一个表达式,其类型可以是byte、char、 short或int型,但最终都会自动单目算术提升为int 型。<下标>的类型不能是long型。 <下标>的取值从0开始,一直到数组的长度减1。如 果<下标>值超出了允许的取值范围,将引发运行时 例外ArrayIndexOutOfBoundsException。
18
7.4 二维数组
在Java语言中,所谓二维数组是指数组的嵌套,即 数组的数组。 一个数组的数组元素类型既可以是基本类型,也可 以是引用类型。其中,引用类型就包括数组类型。 当一个数组的数组元素类型本身是数组类型时,就 形成了二维数组,甚至三维数组、四维数组等。 int[][] 表示一个int型的二维数组。其中: 第1个方括号可 以理解为第一维(外层)数组,其元素类型为int[] 型;第2个方括号可以理解为第二维(被嵌套的内 层)数组,其元素类型为int型。
4
7.1.2 数组变量
数组对象也需要通过变量来引用和操纵,这种变量 称为数组变量。 数组变量是指那些类型为数组类型的变量。 数组变量是引用型变量,其中存储着指向某个数组 对象的一个引用值。定义数组变量的例子:
7.3 数组访问
数组是一种数据结构,它由一组数组元素组 成。 数组是一种对象,它也有自己的成员变量和 方法。 数组一旦创建,就可以通过数组对象的引用 访问数组中的每一个元素,或者访问数组的 成员变量和方法。
14
7.3.1 对数组元素的访问
访问数组元素可以使用以下表达式: <数组对象引用>[<下标>] 数组访问表达式的类型是数组元素的类型,值是对 应数组元素的值。数组访问表达式的计算结果是变 量,可以出现在赋值操作符的左边。 <下标>是一个表达式,其类型可以是byte、char、 short或int型,但最终都会自动单目算术提升为int 型。<下标>的类型不能是long型。 <下标>的取值从0开始,一直到数组的长度减1。如 果<下标>值超出了允许的取值范围,将引发运行时 例外ArrayIndexOutOfBoundsException。
18
7.4 二维数组
在Java语言中,所谓二维数组是指数组的嵌套,即 数组的数组。 一个数组的数组元素类型既可以是基本类型,也可 以是引用类型。其中,引用类型就包括数组类型。 当一个数组的数组元素类型本身是数组类型时,就 形成了二维数组,甚至三维数组、四维数组等。 int[][] 表示一个int型的二维数组。其中: 第1个方括号可 以理解为第一维(外层)数组,其元素类型为int[] 型;第2个方括号可以理解为第二维(被嵌套的内 层)数组,其元素类型为int型。
4
7.1.2 数组变量
数组对象也需要通过变量来引用和操纵,这种变量 称为数组变量。 数组变量是指那些类型为数组类型的变量。 数组变量是引用型变量,其中存储着指向某个数组 对象的一个引用值。定义数组变量的例子:
java第六讲 数组
数组元素做参数
数组做参数时传递的是地址,但数组元素 做参数传递的是值。
数组参数
class ArrayParameter2 { public static void main(String args[]) { int c[]={1,10,100,1000}; int j; System.out.println("Array c before calling elementMultiply"); for(j=0;j<c.length;j++) System.out.print(c[j]+" "); System.out.println(); elementMultiply(c[2]); System.out.println("Array c after calling elementMultiply"); for(j=0;j<c.length;j++) System.out.print(c[j]+" "); System.out.println(); } static void elementMultiply(int d) { d=2*d; System.out.println("d="+d); }
b[i]=a[i];
} }
数组的基本操作
一维数组的输出。 public class ArrayPrint { public static void main(String args[])
{
int a[]={32,45,76,89}; for(int i=0;i<a.length;i++) System.out.println(“a["+i+"]="+a[i]);
Java数组PPT课件
第四章 数组
1
数组
• 数组是相同类型的数据按顺序组成的一种复合 数据类型
• 通过数组名加数组下标来使用数组中的数据。 下标从0开始。
2
1. 声明数组
• 数组的声明格式:
– 数组元素类型 数组名[];
数组标志
– 数组元素类型[] 数组名;
– 例:int MyIntArray[];
int[] MyIntArray;
• clone方法的返回值是Object类型,要使用强 制类型转换为适当类型。
targetArray=(int[])sourceArray.clo
ne();
24
给方法传递数组参数
• Java使用值传递的方式将实参传递给方法: •对于基本数据类型的参数,传递的是实参的值 •对于数组类型的参数,参数值是引用,传递的是这个引用
} }
图示见下2页6
Stack
Space required for method m int[] numbers:reference int number: 1
Space required for the main method
int[] y: reference int x: 1
Heap
Array of ten int values is stored here
• 动态初始化 – 先用new操作符为数组分配内存,然后才为每9一
声明的同时赋初值:
静态初始化
String names = “Georgianna”, “Jen”, “Simon”;
动态初始化
String names ; names = new String 3; names 0 = “Georgianna”; names 1 = “Jen”; names 2 = “Simon”;
1
数组
• 数组是相同类型的数据按顺序组成的一种复合 数据类型
• 通过数组名加数组下标来使用数组中的数据。 下标从0开始。
2
1. 声明数组
• 数组的声明格式:
– 数组元素类型 数组名[];
数组标志
– 数组元素类型[] 数组名;
– 例:int MyIntArray[];
int[] MyIntArray;
• clone方法的返回值是Object类型,要使用强 制类型转换为适当类型。
targetArray=(int[])sourceArray.clo
ne();
24
给方法传递数组参数
• Java使用值传递的方式将实参传递给方法: •对于基本数据类型的参数,传递的是实参的值 •对于数组类型的参数,参数值是引用,传递的是这个引用
} }
图示见下2页6
Stack
Space required for method m int[] numbers:reference int number: 1
Space required for the main method
int[] y: reference int x: 1
Heap
Array of ten int values is stored here
• 动态初始化 – 先用new操作符为数组分配内存,然后才为每9一
声明的同时赋初值:
静态初始化
String names = “Georgianna”, “Jen”, “Simon”;
动态初始化
String names ; names = new String 3; names 0 = “Georgianna”; names 1 = “Jen”; names 2 = “Simon”;
第1章 JAVA语言基础_数组4PPT教学课件
A(int x1,String s1) { x=x1;
int sum=0; String s="";
实例化对象, str=s1; 给数组赋值}
for(int i=0;i<obj.length;i++) {
sum+=obj[i].x; s+=obj[i].str; }
引用对象的成 员变量
A add2(A a1) { A a2=new A(0,""); a2.x=x+a1.x; a2.str=str+a1.str;
1、一维数组的定义
数组类型 数组名[]; 或 数组类型[] 数组名;
• 数组类型可为Java中的任何数据类型(简单类型和复合
类型)。
• 数组名,必须符合标识符定义规则。 • “[]”指明该变量是一个数组类型的变量,可放到数组
名后面,也可放到数组名前。
int student[]; int[] student;
也可以在数组声明的时候初始化: int a[] = {1,2,3}
2020/12/10
11
3、 一维数组的引用
引用格式为: 数组名[下标]
int a[]=new int[10]; int b = a[0]+a[9];
数组下标为从0到9。如果调用了a[10],程序运行时将 提示错误:
ng.ArrayIndexOutOfBoundsException
{
定义有5个元素 的数组
class A {
public static void main(String args[]) { int x;
A[] obj=new A[5];
String str;
教学课件-java数组.ppt
数组的应用
1 3
main方法的字符串数组参数 对象数组 数组作为方法的参数与方法的返回值 数组在排序中的应用
2 3
3 4 3
内容提要
1
2 3
什么是数组
一维数组
二维数组
4
for each结构
一维数组
只有一个下标的数组称为一维数组。 1. 一维数组的定义:一维数组的定义分为声明数组和为数组分配内存空间两步。 第一步:声明数组: 语法格式为: type arrayName[]; 或 type[] arrayName;//建议采用该形式,更容易被理解为该类型的数组 说明:
什么是数组
根据数据类型的不同可以把数组分为:基本数据类型数 组和对象型数组。数组根据下标是一个还是多个,分为 一维数组、二维数组、三维数组……以及多维数组。 数组的作用在于提供了一种用来处理一组同类型数据的 存储和访问机制,因为在实际编程中,你无法为每一个 这样的数据声明一个变量。 在Java语言中,数组元素可以是基本类型,也可是对象。 实际上,Java认为数组本身也是一个对象,即虽然基本 数据类型不是对象,但是由基本数据类型组成的数组则是 对象。
如何找出一组数中的最小值?——“打擂台”法 在直接选择排序算法中有一项工作就是找出一组数中的最 小值(最大值),如何操作可以类比现实世界的“打擂 台”。因此把这种找出一组数据中的最小值(最大值)算 法形象地称为“打擂台”法。假设要找出8个数中的最小 数,步骤如下: 1) 先将第一个数送上“擂台”; 2) 其余7个数依次和“擂主”进行比较,比第一个数小的 就站在“擂台”上; 3) 最终站在台上的就是8个数中的最小值。
一维数组
一维数组定义第二步:为数组分配内存空间。使用关键字new来指定数组的长度,并分配相 应的内存空间,语法格式为: arrayName= new type[arraysize]; 说明: new是为数组分配内存使用的关键字。 arraysize是数组的大小,即数组包含多少个元素。数组的大小一旦指定,就不可更改。 例如: results = new int[10]; //数组results包含10个元素 通常也可以将声明与分配内存空间合成一条语句。 例如:int results[] = new int[10]; 和 C 语言不同,Java 允许使用 int 型变量指定数组的大小。例如: int size=30; double number[]=new double[size]; 一维数组在声明的时候,[ ]里面是什么都不能有的,但是在使用new运算符进行构造的时候,必 须指明数组的长度,只有这样系统才能知道应该给这个数组分配多少内存。
《java数组》ppt课件
循环录入学生成果 并存储在数组中
Scanner input = new Scanner(System.in);
System.out.println("请输入5位学员的成果:");
for(int i = 0; i < 5; i++){
数组中的元素被
score[i] = input.nextInt(); //依次录入重5新位陈学列员的成果
第十一章
数组(2)
回想
• 阅读下面代码,哪个有错误?阐明理由
double[ ] a = new double[ ];
×
× double[ ] a = new double[5]{1,2,3,4,5,};
× double a = {1,2,3,4,5};
• 填代码:逆序输出数组中的元素
int[ ] a = new int[ ] {1,2,3,4,5}; for (i_n_t_i_=__a_.l_e_n_g_th__-_1_; __i _>_=_0___; _i-_-__ ){
System.out.println(number); }
读取ArrayList对象的值
程序主要代码为: …….. /*获取ArrayList类对象中的内容*/ for(int i=0; i<apples.size(); i++) {
System.out.println(((Apple)apples.get(i)).getColor() + "\t"
ArrayList元素的遍历
• 遍历ArrayList元素
• 采用for循环遍历ArrayList数组中的元素
•
Java课件 第03讲 JAVA数组
Java集合类(上)
15
2010-6-9
多维引用数据类型数组
对二维复合数据类型的数组,必须首先为最高维分配 引用空间,然后再顺次为低维分配空间. 而且,必须为每个数组元素单独分配空间. String s[ ][ ] = new String[2][ ]; s[0]= new String[2];//为最高维分配引用空间 s[1]= new String[2]; //为最高维分配引用空间 s[0][0]= new String("Good");// 为每个数组元素单 独分配空间 s[0][1]= new String("Luck");// 为每个数组元素单 独分配空间 s[1][0]= new String("to");// 为每个数组元素单独分 配空间 s[1][1]= new String("You");// 为每个数组元素单独 分配空间
Java集合类(上)
13
2010-6-9
数组拷贝
source 1 2 3 dest 5 6 7 8 9 1 2 3 8 9
2010-6-9
System.arraycopy(source, 0, dest, 0, source.length); source 1 2 3 dest
Java集合类(上)
Java集合类(上)
17
2010-6-9
命令行参数( 命令行参数(例:CmdParam )
public class CmdParam { public static void main(String[] args) { for ( int i = 0; i < args.length; i++ ) { System.out.println("args[" + i + "] = " + args[i]); } } } java CmdParam lisa "bily" "Mr Brown" //输出结果: args[0] = lisa args[1] = bily args[2] = Mr Brown
java第04讲数组、字符串、向量与哈希表.ppt
第4章 数组、字符串、向量与哈希表
2019/4/5
1
ห้องสมุดไป่ตู้ 本章总体纲要
• • • • • 数组 字符串 字符串缓冲区 向量 哈希表
2019/4/5
2
数组
• 由相同类型的若干项数据组成 • 例如:public static void main(String args[])
– 其中args是String类型的数组
行的下标值
列的下标值
2019/4/5 13
示例 1
• 类似于一维数组进行二维数组的声明、创建(内存分配) 与初始化 • 示例: class J_FillArray { public static void main (String args[]) { int[ ][ ] matrix = new int[4][5]; for (int row=0; row < 4; row++) { for (int col=0; col < 5; col++) { matrix[row][col] = row + col; } // 内部for循环结束 } // 外部for循环结束 } // 方法main结束 } // 类J_FillArray结束
1
6453 78 12
4
c.length
下标
• 有时也称为索引 • 必须是整数或整数表达式, 例如:
c[11]
• 示例: 含有运算符的下标表达式:
if (x == 3) t= (c[ 5 - 2 ] == c[ 3 ]) &&( c[ x ]== c[ 3 ]); // t=true
2019/4/5
2019/4/5 24
2019/4/5
1
ห้องสมุดไป่ตู้ 本章总体纲要
• • • • • 数组 字符串 字符串缓冲区 向量 哈希表
2019/4/5
2
数组
• 由相同类型的若干项数据组成 • 例如:public static void main(String args[])
– 其中args是String类型的数组
行的下标值
列的下标值
2019/4/5 13
示例 1
• 类似于一维数组进行二维数组的声明、创建(内存分配) 与初始化 • 示例: class J_FillArray { public static void main (String args[]) { int[ ][ ] matrix = new int[4][5]; for (int row=0; row < 4; row++) { for (int col=0; col < 5; col++) { matrix[row][col] = row + col; } // 内部for循环结束 } // 外部for循环结束 } // 方法main结束 } // 类J_FillArray结束
1
6453 78 12
4
c.length
下标
• 有时也称为索引 • 必须是整数或整数表达式, 例如:
c[11]
• 示例: 含有运算符的下标表达式:
if (x == 3) t= (c[ 5 - 2 ] == c[ 3 ]) &&( c[ x ]== c[ 3 ]); // t=true
2019/4/5
2019/4/5 24
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Example:CountLettersInArray.java
搜索数组
线性搜索法(linear searching)将一个值与数组的每个 元素进行比较.如果找到相同的元素,返回元素的索 引;否则返回-1. 二分搜索法(binary searching)是在一个已排序的数组 中搜索特定元素.假设数组已按升序排列,将关键字 与数组中间元素进行比较:
声明和创建在一条语句中.
datatype[] arrayRefVar= new datatype[arraySize]; 或者 datatype arrayRefVar[] = new datatype[arraySize]; 例如: double[] myList = new double[10]; 或者 double myList[] = new double[10];
访问数组
一个数组的大小在创建这个数组之后不能被改变.可 以用以下语法进行访问数组的长度:
arrayRefVar.length 例如: myList.length的值为10.
数组元素通过索引进行访问.元素的索引从0开始, 范围从0到length-1.
arrayRefVar[index] 例如: myList[0]表示数组的第一个元素 myList[9]表示数组的最量作为实参传递给方法.
基本数据类型传递的是实际值的拷贝,修改形参,不影 响实参. 数组引用变量中传递的是对象的引用,修改形参,将改 变实参引用的数组对象.
实参 : 1 copy 形参 : 1 基本类型 实参 : ref copy 形参 : ref 数组类型 array
也可以从方法中返回数组.
[3] 10 11 12 int[][] array = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12} };
二维数组的长度
二维数组的每个元素是一个一维数组.
数组X的长度是数组X的元素的个数,可由X.length得到. 元素X[i]是一个一维数组,其长度可由X[i].length得到.
例 测试数组
编写程序,读入6个整数,找出它们中的最大值,并 统计最大值出现的次数.
Example:TestArray.java
例 划分成绩等级
编写程序,读入学生分数,求最高分,然后根据下面 的规则指定等级:
如果分数>=best 如果分数>=best 如果分数>=best 如果分数>=best >=best 否则等级为F – – – – 10, 20, 30, 40, 等级为A 等级为B 等级为C 等级为D D
声明数组引用变量
语法
datatype[] arrayRefVar; 例如: double[] myList;
或者
datatype arrayRefVar[]; 例如: double myList[];
数组变量是引用类型的变量,声明数组变量并不分配 内存空间.
创建数组
使用new操作符创建数组.
arrayRefVar = new datatype[arraySize]; 例如: myList = new double[10];
不规则数组
二维数组的每个元素(数组)的长度可以不同. 创建二维数组时,可以只指定第一下标.二维数组的 每个元素为空,必须创建每个元素数组.
例如:
int[][] x = new int[5][]; x[0] = new int[5]; x[1] = new int[4]; x[2] = new int[3]; x[3] = new int[2]; x[4] = new int[1]; x[0] x[1] x[2] x[3] x[4] x
数组初始化
新创建的数组对象,其元素根据类型被设置为默认的 初始值.
数值类型为0 字符类型为'\u0000' 布尔类型为false 引用类型为null null
数组可以在声明后的花括号中提供初始值.
double[] myList = {1.9, 2.9, 3.4, 3.5} 或者 double[] myList; myList = new double[] {1.9, 2.9, 3.4, 3.5}
2 9 5 4 8 1 6
Example:SelectionSort.java
二维数组
声明数组引用变量
dataType[][] refVar;
创建数组并将引用赋值给变量
refVar = new dataType[rowSize][colSize];
在一条语句中声明和创建数组
dataType[][] refVar = new dataType[rowSize][colSize]; 或者 dataType refVar[][] = new dataType[rowSize][colSize];
Example:AssignGrade.java
复制数组
直接使用赋值语句不能实现数组的复制,结果是两个 数组引用变量指向同一个数组对象.
x: 1 copy y:1 基本类型 x : ref copy y : ref 数组类型 array
复制数组的方法
使用循环来复制每个元素 使用System.arraycopy方法 使用数组的clone方法
如果关键字比中间元素小,则在前一半数组中搜索; 如果关键字与中间元素相同,查找结束; 如果关键字比中间元素在,则在后一半数组中搜索.
Example:LinearSearch.java, BinarySearch.java
排序数组
选择排序算法:假设将数组按升序排列
算法
将列表中的元素最大值放在最后一个位置 将剩下元素的最大值放在倒数第二的位置 以此类推,直到剩下一个数为止.
例 分数计算
编写程序计算班级中每个学生的总分.假设分数保存 在三维数组中,数组的第1维代表学生,第2维代表 试卷,第3维代表试卷的一部分的成绩.
部分6 部分5 部分4 部分3 部分2 部分1 部分0 学生4 学生3 学生2 学生1 学生0
Example:TotalScore.java
�
Java程序设计
YANGLIN@BNUITC
第6章 数组
学习目标
理解数组的概念 掌握声明数组变量,创建数组,初始化数组 掌握如何访问数组元素 掌握向方法传递数组 了解如何复制数组 掌握搜索和排序算法 掌握多维数组的声明和创建
数组
数组(array)是相同类型变量的集合.
double[] myList = new double[10];
学生0 学生1 1 学生2 学生3 学生4 学生5 学生6 学生7 0 A D E C A B B E 1 B B D B B B B B 2 A A D A D E A E 3 C B A E C C C C 4 C C C D C C C C 5 D A B C D D D D 6 E E E E E E E E 7 E E E E E E E E 8 A A A A A A A A 9 D D D D D D D D
x[0][0] x[0][1] x[0][2] x[0][3] x[0][4] x[1][0] x[1][1] x[1][2] x[1][3] x[2][0] x[2][1] x[2][2] x[3][0] x[3][1] x[4][0]
例 给选择题评分
编写程序,给选择题评分.设有8个学生10个问题, 答案存储在一个二维数组中.每行记录一个学生的答 案.输出每个学生的评分结果.
增强的for循环(JDK 1.5)
JDK 1.5引入一个新的for循环,可以不用下标就可以 依次访问数组元素.语法:
for(elementType value : arrayRefVar) { } 例如
for(int i = 0; i < myList.length; i++) { sum += myList[i]; } for(double value : myList) { sum += value; }
X X[0] X[1] X[2] X.length is 3
X[2][0] X[2][1] X[2][2] X[2][3] X[2].length is 4 X[1][0] X[1][1] X[1][2] X[1][3] X[1].length is 4
X[0][0] X[0][1] X[0][2] X[0][3] X[0].length is 4
myList[0] myList[1] myList[2] myList[3] myList[4] myList[5] myList[6] myList[7] myList[8] myList[9] 5.6 4.5 3.3 13.2 4 34.33 34 45.45 99.993 1123 引用 myList
答案 D B D C C D A E A D
Example:GradeExam.java
例 使用数组计算所得税
美国的个人所得税根据纳税人情况和须纳税收入进行 计算.编写程序,用户输入纳税人情况和须纳税收入, 计算出2002年的所得税.
2002年美国个人所得税税率表
Example:ComputeTax.java
例 传递数组
编写两个方法交换数组中的两个元素.
swap方法交换两个int类型的参数 swapFirstTwoInArray方法交换数组参数的前两个元素
Example:TestPassArray.java
例 统计每个字符出现的次数
编写程序,完成以下任务
随机产生100个小写字母,并保存在一个字符数组中. 计算数组中每个字母出现的次数.
二维数组示意图
[0] [1] [2] [3] [4] [0] [1] [2] [3] int[][] matrix = new int[4][5] [0] [1] [2] [3] matrix[2][1] = 7 7 [0] [1] [2] [3] [4] [0] [1] [2] [0] 1 [1] 4 [2] 7 2 5 8 3 6 9