数组:
概念:数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致,不能出现混合类型
1.什么数据类型就只能储存什么数据元素,比如int只能储存整形数组
2.数组有定长特性,长度一旦指定,就只能存储固定长度
3.要输出数组中的全部值,要一个个for循环遍历,然后打印输出
4.使用场景:知道要存入的元素值,用静态初始化\未知要数组中放入什么元素值,用动态初始化
1.两种常见初始化方式:
动态初始化(指定长度):
使用场景:只指定数组长度,后期赋值,适合开始就知道数据的数量,但是不确定具体元素值的业务场景(先定义长度再赋值)
数组存储的数据类型[ ] 数组名字 = new 数组存储的数据类型[数组长度];----常用
数组存储的数据类型 数组名字[ ] = new 数组存储的数据类型[数组长度];
代码例子:
package one; public class a { public static void main(String[] args) { //动态初始化数组, int[]a = new int[5];//1.先new一个数组长度,可以放5个int类型数据 a[0] = 10;//2.给a数组一个个具体赋值 a[1] = 20; a[2] = 30; a[3] = 40; a[4] = 50; //具体输出数组一个值 System.out.println(a[2]); //3.高效率遍历输出全部数组值用for循环 for (int i = 0; i < a.length; i++) {//快捷键:数组名.fori+回车 System.out.println(a[i]);//输出i遍历到的所有数组a的值 } } }
运行结果:
30
10
20
30
40
50
静态初始化(指定内容):
使用场景:开始就存入元素值,适合一开始就能确定元素值的业务场景(第一步就直接赋值给数组)
语法:
数据类型[] 数组名 = {元素1,元素2,元素3…};----常用
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
代码例子:
package one; public class a { public static void main(String[] args) { //静态初始化数组,直接赋值 int[]a = {1,2,3,4,5,6,7,8,9}; //只能一个个去输出数组中的具体值 System.out.println(a[0]);//数组索引从0开始.这里索引0,也就是索引到第一位数字1 //高效率遍历输出数组值用for循环 for (int i = 0; i < a.length; i++) {//i遍历数组a的全部值.快捷键:数组名.fori+回车 System.out.println(a[i]);//输出数组中的所有值 } } }
运行结果:
1
1
2
3
4
5
6
7
8
9
数组越界报错:ArrayIndexOutOfBoundsException
解决方法:检测for循环遍历的位数,有没有超过数组本身的位数,注意:=号是有包含进去的
题外话:
定义的初始值都是在栈里面,后面new出来的东西都是在堆中
辨别数组:有new的数组就是动态数组,直接给值的就是静态数组