9 数组
9.1 什么是数组
数组(Array)是一种引用数据类型,可以解决大量数据的命名问题和大量数据存储和传递问题。
9.2 数组的创建
数组的创建分为静态创建和动态创建两种
静态创建;
数据类型[] 数组名={数据};
数据类型[] 数组名=new 数据类型[]{数据};
数组中的每一个数据叫元素,数组中的元素类型都是相同或者相近的。(可以在double[]里面放个float,但不可以在String[]中放个float)(隐式类型转换)
动态创建:
动态:当数组创建时,我们还不确定里面对的值是什么,仅仅知道数据的个数
数据类型[] 数组名 = new 数据类型[数据的长度];
数组的长度:数组的元素个数
code:
public class code01 {
public static void main(String[] args) {
int[] stuCNScore = {
100,98,115,72,96};
int[] stuENScore = new int[]{
101,120,119,118,95};
int[] stuMathsScore = new int [5];
}
}
9.3 数组的属性,特点,使用细节
数组的索引机制:
索引:多个数据虽然使用同一个标识符,但每个数据默认都有自己的编号。索引由数组自动生成并维护,默认第一个元素的索引为0,后面的索引依次递增。索引本身是整数 int。
访问数组中的元素:数组名[索引值]
修改数组中的元素:数组名[索引值] = 新值
或许数组长度属性:数组名.length
确定索引范围:0~(数组长度-1)
数组的特点:
-
内存特点:内存分为栈内存和堆内存,栈内存主要用于执行方法,存储量相对较小;堆内存用于存出大量数据,存储量相对较大。创建数组的时候,在堆内存上开辟出一段连续空间,用于存储数组中的元素,栈内存上实际存储的是数组首元素的地址,栈内存存储机制其实就是引用堆内存中的数据。
基本数据类型创建的变量存储在栈内存中,是方法中的,内部的局部的变量。数据量比较小,一种临时的使用。
引用数据类型创建的变量存储在堆内存中,栈内存引用堆内存上的地址,占用两块。数据量比较大,一种持久的使用。 -
数组一旦创建,长度是不可改变的。
-
数组存储数据增加和删除数据比较麻烦。但是根据索引访问数据非常快。
数组根据索引查询数据的方式是计算得来的。目标元素的地址=首元素地址+索引+数据长度,通过较少次数的运算就可以快速定位元素,即使数组元素非常多,依据索引查询数据也是极快的。 -
数组存储数据的特点
数组的数据在内存上是连续的
根据索引查询数据快
面对数据的增加和删除 需要大量移动元素或者重新创建数组
一般经常修改或者查询,但是基本不会增加和删除的数据适合使用数组存储
9.4 数组的遍历
-
使用for循环遍历
-
使用增强型for循环——foreach循环遍历
针对于数组的增强型for循环,简化了for循环
for(数据类型 临时变量名:数组名){循环体}
foreach循环在写法上更为简单,没有索引
而for循环通过索引查询元素,在循环内部可以通过索引修改元素
code:
public class code03 {
public static void main(String[] args) {
int[] array = {
13,54,24,76,45,53,23};
//for循环
for (int index = 0; index < array.length; index++){
System.out.print(array[index]+"\t");
}
//foreach循环
System.out.println();
for (int i:array){
System.out.print(i+"\t");
}
}
}
9.5 查找数组中的最大值,最小值及其索引
code:
public class code04 {
public static void main(String[] args) {
int[] arr = {
12,45,78,35,49,65,33,1};
int max=arr[0];
int maxIndex=0;
int min = arr[0];
int minIndex= 0;
for (int i = 0; i < arr.length; i++) {
if(max<=arr[i]){
max=arr[i];
maxIndex=i;
}
if(min>=arr[i]){
min=arr[i];
minIndex=i;
}
}
System.out.println("最大值为:"+max);
System.out.println("最大值索引为"+maxIndex);
System.out.println("最小值为:"+min);
System.out.println("最小值索引为"+minIndex);
}
}
9.6 查找数组中元素的索引
code:
public class code05 {
public static void main(String[] args) {
int target = 1;
int index = -1, _index = -1;
int[] arr = {
455,123,4,1,3,6545,8,689,1,864,18648,385,86};
//查找元素第一次出现位置
for (int i = 0; i < arr.length; i++){
if (arr[i] == target){
index = i;