使用数组的步骤:
声明数组
数据类型[ ]数组名;
数据类型 数组名[ ];
分配空间
数组名 = new 数据类型[数组长度];
数据类型[ ] 数组名=new 数据类型[数组长度];
赋值
数组名[下标值];
数据类型[ ] 数值名={值1,值2,值3,....,值n};
对数据进行处理
在循环中,循环变量i从0开始递增直到数组的最大长度scores.length。因此,每次循环i加1,实现数组的每个元素和的累加
数组下标从0开始,逐个+1增长,连续不间断,而不是从1开始。如果访问数组元素时指定的下标小于0,或者大于等于数组的长度,都将出现数组下标越界异常
数组排序:Arrays.sort(数组名); //对数组进行升序排序
Arrays是Java中提供的一个类,而sort( )是该类的一个方法。按照上面的语法,即将数组名放在sort( )方法的括号中,就可以完成对该数组的排序
数组的静态初始化
初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程
完整格式:
数据类型[] 数组名 = new 数据类型[] {元素1,元素2,元素3...};
简写格式:
数据类型[] 数组名 = {元素1,元素2,元素3...};
利用索引对数组中的元素进行访问
int[] arr ={1,2,3,4,5};
// 1.获取数组里面的元素
// 格式: 数组名[索引]
System.out.println(arr[0]);
// 2.把数据存储到数组当中
// 格式:数组名[索引] = 具体数据/变量:
// 细节:一旦覆盖之后,原来的数据就不存在了
arr[0] = 100;
System.out.println(arr[0]);
// 在Java当中,关于数组的一个长度属性:length
// 调用方式: 数组名.length
System.out.println(anr,length);
//扩展:
//自动的快速生成数组的遍历方式
//idea提供的
//数组名.fori
数组的动态初始化
// 1.完整格式:
数据类型[] 数组名 = new 数据类型[数组的长度]
数组动态初始化和静态初始化的区别
动态初始化:手动指定数组长度,由系统给出默认初始化值
只明确元素个数,不明确具体数值,推荐使用动态初始化
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度。
需求中已经明确了要操作的具体数据,直接静态初始化即可。
数组转换
/**
* {1,2,3,4,5,6,}转换为
* {6,5,4,3,2,1}
* 数组转换
* */
int[] number={1,2,3,4,5,6};
for (int i = 0,j=number.length-1; i <j ; i++, j--) {
int num=number[i];
number[i]=number[j];
number[j]=num;
}
for (int i = 0; i < number.length; i++) {
System.out.println(number[i]);
}
数组数据随机打乱
//如何获取数组中的随机索引
int[] arr = {1,2,3,4,5};
Random r = new Random();
int suiJiShu = r.nextInt(arr.length);
System.out .printIn(suiJiShu);
数组的内存图
只要是new出来的一定是在堆里面开辟了一个小空间
如果new了多次,那么在堆里面有多个小空间,每个小空间中都有各自的数据
两个数组指向同一个空间的内存图
当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问的时候都是修改之后的结果了