通常什么情况下使用数组?
当存储相同数据类型的一组数据的时候使用数组


为什么需要数组?
当同一数据类型的变量过多时,会造成变量繁琐,不利于数据处理
所以需要数组来将同一数据类型的变量放在一块存储空间内

 

什么是数组?
数组是相同数据类型元素的集合
数组本身是引用数据类型,即对象。但是数组可以存储基本数据类型,也可以存储引用数据类型。
数组是一种线性数据结构

数组是一个变量,存储相同数据类型的一组数据

声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间


数组基本要素
标识符:数组的名称,用于区分不同的数组
数组元素:向数组中存放的数据
元素下标:对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问
元素类型:数组元素的数据类型


数组长度固定不变,避免数组越界


使用数组的好处
同时开辟多个空间,语句更加简洁,且提高效率
分类存储,而且数据中的空间都是连续的,所以查找比较方便
数组的最大好处就是能都给存储进来的元素自动进行编号.
注意编号是从0开始。方便操作这些数据。


如何定义一个int数组?
int[]a;


如何使用数组?
声明数组:int[]a; int[]a;
分配空间:a=new int[5];
赋值:a[0]=8;
处理数据:a[0]=a[0]*10;

声明数组:告诉计算机数据类型是什么
int[ ] score1; //Java成绩
int score2[ ]; //C#成绩
String[ ] name; //学生姓名
数据类型 数组名[ ] ;
数据类型[ ] 数组名 ;

分配空间: 告诉计算机分配几个连续的空间
score = new int[30];
avgAge = new int[6];
name = new String[30];
数据类型[ ] 数组名 = new 数据类型[大小] ;

赋值:向分配的格子里放数据
score[0] = 89;
score[1] = 79;
score[2] = 76;
……

方法1: 边声明边赋值
int[ ] score = {89, 79, 76};
int[ ] score = new int[ ]{89, 79, 76};
不能指定数组长度
方法2:动态地从键盘录入信息并赋值
Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){
score[i] = input.nextInt();
}

处理数据
对数据进行处理:计算5位学生的平均分
(使用聚合函数进行计算)

 

常见错误:编译出错,没有写明数组的大小
编译出错,数组越界
编译出错,创建数组并赋值的方式必须在一条语句中完成


怎样引用一个数组中的元素?(如何获得数组中指定位置的元素值?)
通过数组下标进行数组元素的引用
eg:a(10)
其中10为数组下标

数组元素的访问:
数组名字[索引] 例如:a[0],a[1];
注意:
1.数组的索引从0开始。
2.索引的数据类型是整型
3.索引最大值和数组长度始终差1

 

数组使用三步骤
数组的创建
数组的创建有三步:
1 、定义“类型 [] ” :指定数组里保存的值都是什么类型的
2 、定义大小 :指定数组只能保存多少个元素
3 、填充元素:每个元素的值是什么

数组创建的三种方式:
1.声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值
int[] ary0 = new int[10];
2.声明数组并分配内存,同时将其初始化
int[] ary1 = new int[]{1, 2, 3, 4, 5};
3.与前一种方式相同,仅仅只是语法相对简略
int[] ary2 = {1, 2, 3, 4, 5};

 

一、定义类型 :
变量的定义大家都知道:类型 变量名
数组的定义也是很简单:类型 [] 变量名
就是在变量的定义以后,在类型后加一“ [] ”即可。
也可以这样定义:“类型 变量名 [] ”,但显示不直观。因为只看类型时,并不能一目也然地看到这是一个数组。
示例:
int[] age :定义一个 int 类型的 age 数组
Student[] allStu :定义一个 Student 类型数组
二、定义大小 (2/3):
类型 数组名称 = new 类型 [ 大小 ];
或者在“数组名称”创建以后,也可以这样:
数组名称 = new 类型 [ 大小 ];
示例:
int[] age = new age[5] : age 数组中只能保存 5 个元素
int[] age ;
age = new age[5]
Student stu = new Student[3];

三、填充元素
一次性填充:
age = {10,11,12,13,14,15};
allStu = {stu1,stu2,stu3}
逐个填充:
age[0] = 10; age[1]=20;
allStu[0]= new Student( );allStu[1] = new Student( );

数组使用要点:
两个下标的区别
类型名称 [5] :表示该数组的元素一共有 5 个。如: age = new int[5]
数组名称 [5] :表示该数组的第 6 个元素。如: age[5]
数组的循环
普通的 for 循环即可:
for(int i=0,i<age.length;i++){ …… }
什么时候用数组
同一个类型的变量有很多个时,而且对每个变量的处理方法相同,
这个时候就要用数组。
一维数组最常用。
二维数组使用的关键是:类型 [R][C] 。 R 代表行号, C 代表列号。


陷井提醒:数组 [ 数字 ] :数组的第一个元素为“数组 [0] ”。
所以数组元素的是这样数的:第 0 个、第 1 个……。而创建数组“ new 类型 [5] ”,
表示的是该数组一共有 5 个元素,不要混淆了。

 

如何为数组元素赋值?
a [0] = 8;

 


Arrays的使用

遍历: toString()    将数组的元素以字符串的形式返回

排序: sort()        将数组按照升序排列

查找: binarySearch()在指定数组中查找指定元素,返回元素的索引,
如果没有找到返回(-插入点-1) 注意:使用查找的功能的时候,数组一定要先排序。

 


数组排序:
使用java.util.Arrays类
java.util包提供了许多工具类
Arrays类提供操作数组的方法
如排序、查询
Arrays类的sort()方法:对数组进行升序排列
Arrays.sort(数组名);

eg:
import java.util.*; //导入包
……
int[] scores = new int[5]; //成绩数组
Scanner input = new Scanner(System.in);
System.out.println("请输入5位学员的成绩:");
for(int i = 0; i < scores.length; i++){
scores[i] = input.nextInt();
}

Arrays.sort(scores);
System.out.print("学员成绩按升序排列:");
for(int i = 0; i < scores.length; i++){
System.out.print(scores[i] + " ");
}


数组遍历:
public static void main(String[] args) {

int[] x = { 1, 2, 3 };

for (int y = 0; y < 3; y++) {

System.out.println(x[y]);

// System.out.println("x["+y+"]="+x[y]); 打印效果 x[0]=1;

} // 那么这就是数组的第一个常见操作.遍历

}

 

数组中有一个属性可以获取到数组中元素的个数,也就是数组的长度. 数组名.length


public static void main(String[] args) {

int[] x = { 1, 2, 3 };

for (int y = 0; y < x.length; y++) {

System.out.println(x[y]);

// System.out.println("x["+y+"]="+x[y]); 打印效果 x[0]=1;

} // 那么这就是数组的第一个常见操作.遍历

}


数组迭代的两种方式:
第一种:for循环
第二种:增强for循环


数组的常见异常
数组中最常见的问题:

1. NullPointerException 空指针异常
原因: 引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。\


2. ArrayIndexOutOfBoundsException 索引值越界。
原因:访问了不存在的索引值。

一数组角标越界异常:,注意:数组的角标从0开始。

 

二维数组:实质就是存储是一维数组。

数组定义:
数组类型[][] 数组名 = new 数组类型[一维数组的个数][每一个一维数组中元素的个数];

数组的初始化:
静态初始化:
int [][] a = new int[][]{ {12,34,45,89},{34,56,78,10},{1,3,6,4} };
动态初始化:(数组迭代)
int [] [] a=new int [3] [4]; //3*4=12
for (int i =0; i<a.lenght; i++){
for (int j=0;j<a[i].lenght; j++){
a[i] [j]=++value; //a[1][0]=4
}
}

数组创建
int [][]a = new int[][]{{1,2,3},{1,2,3},{1,2,3}};
int [] [] b = {{1,2,3},{1,2,3},{1,2,3}};
int [][] c = new int[3][5];
int[][] arr = new int[3][5];—定义了一个整型的二维数组 ,这个二维数组有3个一维数组,每一个一维数组包含5个元素.

 

posted on 2021-03-31 09:15  吅^O^  阅读(157)  评论(0编辑  收藏  举报