01 数组概述
- 数组的作用
- 为了存储同种类型的多个值
- 数组的概念
- 数组是存储同一种数据类型多个元素的集合,可以看成是一个容器。
- 数组既可以存储基本数据类型,也可以存储引用数据类型。
数组定义格式
数据类型[] 数组名 = new 数据类型[数组长度];
02 数组的初始化
动态初始化
数据类型[] 数组名 = new 数据类型[数组长度];
静态初始化
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...} 数据类型[] 数组名 = {元素1,元素2,元素3...}
03 数组操作的两个常见问题
数组索引越界异常
ArrayIndexOutOfBoundsException
空指针异常
NullPointerException
- 数组已经不指向堆内存了,还用数组名去访问元素
04 数组的操作遍历
public static void print(int[] arr)
{
for (int i = 0; i < arr.length; i++)
{
System.out.print(arr[i] + " ");
}
}
05 数组的操作取最值
public static int getMax(int[] arr)
{
int max = arr[0];
for (int i = 1; i < arr.length; i++)
{
if (arr[i] > max)
{
max = arr[i];
}
}
return max;
}
06 数组的操作反转
public static int[] reverse()
{
for (int i; i < arr.length / 2; i++)
{
arr[i] = arr[i] + arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = arr[i] - arr[arr.length - 1 - i];
arr[i] = arr[i] - arr[arr.length - 1 - i];
}
}
07 数组的操作查找
public static int getIndex(int[] arr,int value)
{
for (int i = 0; i < arr.length; i++)
{
if (int[i] == value)
{
return i;
}
}
return -1;
}
08 二维数组概述
- 二维数组定义格式
- 数据类型[][] 数组名 = new 数据类型[m][n]; (推荐使用这种)
- 数据类型 数组名[][] = new 数据类型[m][n];
- 数据类型[] 数组名[] = new 数据类型[m][n];
- int[][] arr = new int[3][];
- int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
09 二维数组的遍历
public static void print(arr[][] arr)
{
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j < arr[i].length; j++)
{
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
Java中的参数传递问题
public static void main(String[] args)
{
int a = 10;
int b = 20;
System.out.println("a:" + a + ",b:" + b);
change(a, b);
System.out.println("a:" + a + ",b:" + b);
int[] arr = {1, 2, 3, 4, 5};
change(arr);
for (int i = 0; i < arr.length; i++)
{
System.out.print(arr[i] + " ");
}
}
public static void change(int a, int b)
{
System.out.println("a:" + a + ",b:" + b);
a = b;
b = a + b;
System.out.println("a:" + a + ",b:" + b);
}
public static void change(int[] arr)
{
for(int x=0; x<arr.length; x++)
{
if(arr[x] % 2 == 0)
{
arr[x] *= 2;
}
}
}
/*
运行结果:
a:10,b:20 //main方法区中
a:10,b:20 //change方法区中
a:20,b:30 //在change方法区中改变a和b的值
a:10,b:20 //main方法区中a和b的值不变
1 4 3 8 5 //main方法区中数组元素的值改变了
*/