数组的概念:
数组可以看成容器,可以存数,数组是一组数据的集合,数组中的每个数据被称为元素。数组可以存放任意类型的数据,但同一数组里存放的元素必须一致,数组可以分为一维数组和多维数组。
数组的优点:能够存多个,查询遍历效率快
数组的定义格式:数组类型 变量名 【】 = {数值};
另一种格式: 数据类型 【】 变量名;
例如:
Int a [] ;
float [] b;
String [] c;
也可以这样写:
int a[];
int b[];
数组的使用:
- 从内存原理来看,数组是一个特殊的变量
- 从内存中看,堆区的内存是空闲的,我们可以在堆区去定一个数组的变量,让其存多个数据。
- 保证cpu的执行由栈区交给堆区(new)
- 在堆区中,开辟内存的目的是存数据
- 存数据:开辟内存空间,数据类型
- 定义数组 = new 数据类型[长度]; //数组的动态初始化
数组的数据操作:
* 取值操作 : 注意:如果是整数,系统会赋默认值0 ,小数 :0.0 String : null
* 直接取值(将值打印到控制台)
* 取值方便
* 无法对数组中的数据进行多次操作
* 变量 = 数组的数值; int a =arr[1];
* 使用比较繁琐
* 可以对数组的数据进行多次操作
* 赋值操作
* 数组名[索引] = 数值;arr[5]=15;前提是明确数组的类型。
数组的特性:
length,表示数组的长度
数组名.length
数组的静态初始化
- 数据类型[] 变量名= new 数据类型[]{数值1,数值2,…};
- 数据类型[] 变量名 = {};
- 静态和动态比
- 动态,默认值:系统给的。长度自己给的
- 静态,自己的 ;长度的是系统给的
数组常见的异常:
- Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException
- 数组索引越界异常
- Exception in thread “main” java.lang.NullPointerException
- 空指针异常
二维数组:
数组中嵌套数组
数据类型 [ ] [ ] 变量名 = new int [3] [4];
例如:
int [] [] arr = new int [3] [4];
数据的操作:
- 取数
* 直接取
* 赋值取 - 赋值
- 变量名[索引第几个数组][索引具体的内容]
演示代码:
int [] a;
//
// int b [];//定义数组的二种格式。
//new int [3]; 没有对数组进行初始化,没有进行抢占CPU的执行权,执行权还在栈区的main方法下,
int [] a = new int [3];//在堆区开辟内存空间,使得堆区和栈区关联起来。
System.out.println(new int [3]);//sys可以抢占main方法的CPU执行权。
// 数组的取值,直接取值和变量赋值取值
//直接取值
System.err.println(a[0]);
System.err.println(a[1]);
System.err.println(a[2]);
//变量赋值取值
int con=a[0];
int b=con+100;
//数组的赋值
a[1] = 100;
int c= a.length;//数组的长度
// 二维数组
int[] [] arr1 =new int [3] [4];//表示数组的嵌套 ,表示有三行,每行存四个,
int [] [] arr2= {{1,2},{1,2,3},{1,2,3,4}};
//二维数组的存取,
int [] [] arr= new int [3] [4];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) { //外层数组的内层数组的长度。
System.out.println(arr[i][j]);
}
}
}
}
练习
一定要写注释和或者写需求分析
例如:数组中存5个整数,求和,以及求平均数
- 第一步:创建项目,并进行测试
- 第二步:需求分析
- 第三步:定义数组,并在初始化的时候给5个长度
* 数组的定义格式 : 数据类型[] 变量名 = new 数据类型[长度] - 第四步;往数组中存入5个整数
* 数组的赋值操作
* 数组名[索引] = 数值; - 第五步:在进行求和和平均数操作之前,先把数组中的数据取出来
* 取值操作
* 直接取值 :进行测试
* 赋值取值 - 第六步:求和操作
* 求和会产生新的值,就需要变量进行存储
* 数据类型 变量名 = 数值; - 第七步:求平均值,用sum值除以长度
public class test02 {
public static void main(String[] args) { //新建项目 需求分析
//求数组中的平均值。
Scanner sc = new Scanner(System.in); //键盘输出
int sum = 0;
//定义个变量来铺垫所求的和与平均数
int begin =sc.nextInt(); //获取键盘输入值为数组的长度,
int arr [] = new int [begin];
for (int i = 0; i < arr.length; i++) { //把键盘输入的值存入数组中
arr[i]=sc.nextInt();
}
for (int j = 0; j < arr.length; j++) { //利用循环求数组所有值的和;
sum+=arr[j];
}
System.out.println(sum); //输出和;
System.out.printf("%.2f",sum/(arr.length)); // 输出平均数;保留二位小数
}
}