介绍数组:
数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。
1.定义数组的格式
格式一:
数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
//定义可以存储3个整数的数组容器,代码如下:
int[] arr = new int[3];
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
[] : 表示数组。
数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。
new:关键字,创建数组使用的关键字。
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
[长度]:数组的长度,表示数组容器中可以存储多少个元素。
格式二:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
//定义存储1,2,3,4,5整数的数组容器。
int[] arr = new int[]{1,2,3,4,5};
格式三:
数据类型[] 数组名 = {元素1,元素2,元素3...};
//定义存储1,2,3,4,5整数的数组容器
int[] arr = {1,2,3,4,5};
2.数组的访问
索引(index):每一个存储到数组的元素都会拥有自己的索引值,从0开始一直到数组长度-1。
通过索引值可以访问到数组中的元素
提到最大数组长度有个能获取的语句【数组名.length】属性length的执行结果是数组的长度
由此可见数组的最大索引值为【数组名.length-1】
3.数组的遍历
数组遍历: 就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。
利用for循环
public static void main(String[] args) {
int[] arr={1,2,3,4,5}
for(int i = 0;o<arr.length;i++)
System.out.println(arr[i]);
}
4.数组反转
数组的反转: 数组中的元素颠倒顺序,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
/*
首先明白最小索引值和最大索引值的概念
1为最小索引值 他的索引为0
5为最大索引值 他的索引为4
.length属性是获取数组长度,此数组长度为5所以需要-1,
*/
for(int max=arr.length-1,min=0;max>=min;min++,max--){
int temp = arr[min];
arr[min] = arr[max];
arr[max] = temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
5 数组作为方法参数
基本数据类型能够作为方法的参数和返回值,作为引用类型的数组也是可以的。
首先需要明白一个概念,数组作为方法参数传递,传递的参数是数组的内存地址
那他存在我们五大内存里的哪里呢?当然是堆数组,为什么呢,因为他new了(参见基本格式1)
public static void main(String[] args) {
int[] arr = { 1, 3, 5, 7, 9 };
//调用方法,传递数组
printArray(arr);
}
/*
创建方法,方法接收数组类型的参数
进行数组的遍历
*/
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
6数组作为方法返回值
数组作为方法的返回值,返回的是数组的内存地址
public static void main(String[] args) {
//调用方法,接收数组的返回值
//接收到的是数组的内存地址
int[] arr = getArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
/*创建方法,返回值是数组类型
return返回数组的地址
*/
public static int[] getArray() { //方法名为getArray
int[] arr = { 1, 3, 5, 7, 9 };
//返回数组的地址,返回到调用者
return arr;
}
【注意事项】
数组一旦指定长度,不可更改 买了一个2升的水杯,总容量就是2升,不能多也不能少。
数组其实中在堆内存当中开辟了一块儿地址。数组拥有自己的内存地址值。
方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值
数组静态初始化里面还能写变量
一个方法可以有多个参数,但是只能有0个或者1个返回值,不能有多个返回值。
如果希望一个方法当中产生了多个结果数据进行返回,怎么办?
解决方案:使用一个数组作为返回值类型即可。
数组可以作为方法的参数。
当调用方法的时候,向方法的小括号进行传参,传递进去的其实是数组的地址值。
任何数据类型都能作为方法的参数类型,或者返回值类型。
数组作为方法的参数,传递进去的其实是数组的地址值。
数组作为方法的返回值,返回的其实也是数组的地址值。
NullPointerException 空指针异常
ArrayIndexOutOfBoundsException 数组越界异常