数组
1.容器的概念:
容器是将多个数据存储到一起,每个数据称为该容器的元素。
生活中的容器:水杯,衣柜,教室。
2.数组的概念:
数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。
1.所有元素类型必须一致
2.一旦创建长度不能改变
3.数组的定义:(三种定义方式)
1.方式一:
数组存储的数据类型[] 数组名 = new 数组存储的数据类型[长度];
int[] arr = new int[3];
- 长度自己指定
2.方式二:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
int[] arr = new int[]{1,2,3,4,5};
长度自动识别
3.方式三:
数据类型[] 数组名 = {元素1,元素2,元素3...};
int[] arr = {1,2,3,4,5};
4.总结:
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
[] : 表示数组。
数组名字:为定义的数组的变量名,满足标识符规范,可以使用名字操作数组。
new:关键字,创建数组使用的关键字。
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
[长度]:数组的长度,表示数组容器中可以存储多少个元素。
注意:数组有定长特性,长度一旦指定,不可更改。
4.数组的访问:
1.格式:
数组名[索引];索引从0开始
2.索引:
每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引 (index),可以通过数组的索引访问到数组中的元素。
3.访问:
数组名[索引] = 数值;表示给数组元素赋值
变量 = 数组名[索引] 表示取出数组元素赋值给变量
4.数组的内存图解:int[] array = new int[4] 四个元素
5.注意:
数组越界:索引超过长度(索引最大是长度-1)
空指针:数组内容被清除,数组名=null
5.数组的遍历:
通过for循环遍历,次数为数组长度。
初始化循环变量从零开始,循环条件可为1)< 数组名.length 2)<=数组名.length-1
6.数组作为方法参数和返回值:
1.数组作为方法参数传递:
传递的参数是数组内存的地址。
2.数组作为方法返回值
返回的是数组的首地址
7.数组的最大值获取:
获取数组中的最大值,就像是打擂台一样,最后选出最大值。
//首先创建一个擂台,擂台就是一个数组
int[] array = {10,50,20,40,100,80}
//然后让一个人先上台,等待其他人上台比试
int max = array[0];
//等待全部人上台比试
for(int i = 0;i < array.length;i++){
//如果有人比第一个人厉害,那么他就是暂时的擂主
if(array[i]>max){
max = array[i];
}
}
//比试结束,擂主选出,输出最大值
System.out.println(max);
8.数组的反转原理:
一串数字,第一个数字和最后一个数字交换位置,第二个数字和倒数第二个数字交换位置....
第一种方式:
int[] array = {1,2,3,4,5,6};
//获取两个索引,一个是第一个元素的索引,一个是在最后一个元素的索引
int min = 0;
int max = array.length-1;
//最小的索引+1,最大的索引-1进行交换,可以用循环实现
//交换先定义一个中间转换量
int temp = 0;
while(min < max ){
//交换位置,用到中间变量转接数值
temp = arrary[min];
array[min] = array[max];
array[max] = temp;
}
第二种方式:
int[] array = {1,2,3,4,5,6};
//交换中间变量
int temp = 0;
//获取数组长度,用.length属性获取
//遍历数组长度的一半,通过.length-1-i获取对用的后面需要交换位置的元素
for(int i = 0;i < array.length/2;i++){
//array[i]和array[array.length-i]交换
temp = arrary[i];
array[i] = array[array.length-1-i];
array[array.length-1-i] = temp;
}