1.为什么需要数组:
1.案例分析:一个养鸡场有 6 只鸡,它们的体重分别是 3kg,5kg,1kg,3.4kg,2kg,50kg 。请问这六只鸡的总体重是多少?平 均体重是多少? 请你编一个程序
2.用以前的思路分析,定义6个double变量分别存放这6只鸡的体重,求和/个数就等到了
问题:这样如果有100只鸡我们就需要100个变量,就会很麻烦,所以引出了---->今天的主角数组
2.数组的介绍
数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。
即:数(数据)组(一组)就是一组数
3.数组的初始化
数组的初始化主要分为两种:
1.静态初始化
2.动态初始化
方法一:
数组类型[] 数组的名字 = {元素值,元素值……}
数组类型 数组名[] = {元素值,元素值……}
两种方法都是一样的但是我们一般用第一种形式
int[] arr = {5,6,4,3,5}; //这里的大小是看你给定的元素
方法二:
数组类型[] 数组的名字 = new 数组类型[数组的大小]
数组类型 数组的名字[] = new 数组类型[数组的大小]
两种方法都是一样的但是我们还是用第一种
int[] arr = new int[3]; //这里给定的大小是3如果存放的数组超过这个大小就会报错
数组格式的讲解
数据类型是什么类型,数组就是什么类型
- 数组的声明:
- 数组类型[] 数组名 或 数组类型 数组名[]都是一样的
- 创建数组:
- 我们使用动态的时候:语法: 数组名=new 数据类型[大小]
- int[] a=new int[10]
- 数组的大小:我们给的数组大小是多大我们就存放多大
注意:数组有定长特性,长度一旦指定,不可更改。
4.数组的注意事项
- 数组是多个相同类型数据的组合,实现对这些数据的统一管理
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
- 数组创建后,如果没有赋值,有默认值 int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,boolean false,String null
- 使用数组的步骤
- 1. 声明数组并开辟空间
- 2 给数组各个元素赋值
- 3 使用数组
- 数组的下标是从 0 开始的。
- 数组下标必须在指定范围内使用,否则报:下标越界异常,比如
- int [] arr=new int[5]; 则有效下标为 0-4
- 数组属引用类型,数组型数据是对象(object)
举例:
如果我们超出了下标的范围又会发生什么呢?让我们一起看一看
能看到他给我们报了一个访问越界的错误,所以我们一定要记得下标是从0开始的
5.数组的赋值机制(重要)
数组是引用数据类型是地址传递,尔基本数据类型是值传递
执行流程
main方法进入方法栈执行
- 创建数组,JVM会在堆内存中开辟空间,存储数组
- 数组在内存中会有自己的内存地址,以十六进制数表示
- 数组中有3个元素,默认值为0
- JVM将数组的内存地址赋值给引用类型变量arrNew
- 变量array保存的是数组内存中的地址,而不是一个具体数值,因此称为引用数据类型。
6.数组的遍历
数组的遍历就是吧每一个数组的值遍历出来,这也是数组里面的基础
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8};
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i]+" ");
}
}
7.数组的扩容
问题的提出,我们都知道数组的大小定义之后呢就无法改变了,我们要是还需要添加元素怎么办呢,这个时候我们就提出了数组扩容
8.多维数组
多维数组我们用的最多的就是二维数组,所以我们重点讲解一下二维
二维数组也是有两种初始化情况
1.动态初始化
先声明:类型 数组名[][];
再定义(开辟空间) 数组名 = new 类型[大小][大小]
赋值(有默认值,比如 int 类型的就是 0)
2.静态初始化
定义 类型 数组名[][] = {{值 1,值 2..},{值 1,值 2..},{值 1,值 2..}}
使用即可 [ 固定方式访问]
举例:
int[][] arr = {{1,2,30},{4,5,6},{7,8,9}};
//这个时候就是有3行3列大小的数组
//arr有3个元素,第一个一维数组有3个元素 , 第二个一维数组有3个元素, 第三个一维数组有3个元素
//因为二维数组的每一行都是一维数组,所以我们要以大括号括起来
二维数组的列数可以是不确定的
int[][] array = new int[3][];
array[0] = new int[1];
array[1] = new int[2];
array[2] = new int[3];
二维数组的声明
分为3种
int[][] y 或者 int[] y[] 或者 int y[][]
遍历二维数组