1、数组的初始化
数组就是同一种类型数据的集合。其实数组就是一个容器。
数组 | 语法 | 示例 |
---|---|---|
一维数组 | 元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; | int[] arr = new int[5]; |
元素类型[] 数组名 = new 元素类型[]{元素,元素,……}; | int[] arr = new int[]{3,5,1,7}; | |
元素类型[] 数组名 = {元素,元素,……}; | int[] arr = {3,5,1,7}; | |
二维数组 | 元素类型[][] 数组名 = new 元素类型[元素个数][元素个数] | int[][] arr = new int[3][3]; |
元素类型[] 数组名[] = new 元素类型[元素个数][元素个数] | int[] arr[] = new int[3][3]; | |
元素类型 数组名[][] = new 元素类型[元素个数][元素个数] | int arr[][] = new int[3][3]; | |
…………………………… = new 元素类型[个数][个数]{元素,元素} | ………… = new int[3][3]{1,1} |
1.1 动态初始化
生命声明的时候后面不直接添加元素的
- 例如,类型[] 名 = new 类型[]
类型 | 初始默认值 |
---|---|
byte | |
short | |
int | |
long | |
float,double | 0.0 |
boolean | false |
1.2 静态初始化
生命声明的时候后面直接添加元素
- 例如,类型[] 名 = new 类型[]{}; 或者 类型[] 名 = {}简化声明赋值只能在同一行
2、数组基本操作
2.1 遍历
arr.length
数组的长度
int[] x = { 1, 2, 3 };
for (int y = 0; y < x.length; y++) {
System.out.println(x[y]);
}
2.2 反转
// 遍历数组
for(int i = 0;i < arr.length / 2;i++){
// 交换元素
int temp = arr[arr.length -i - 1];
arr[arr.length -i - 1] = arr[i];
arr[i] = temp;
}
2.3 最值
for (int i = 0; i<array.length;i++){
if (array[i]<minValue)
minValue = array[i];
}
2.4 查值
的
Arrays类
方法,可以使用二分搜索法来搜索指定的数组。该方法返回要搜索元素的
binarySearch()
。
索引值
int a[] = new int[n];
int x = sc.nextInt();
int index = Arrays.binarySearch(a, x);
- 查表法
- 基本查找法
2.5 main函数参数数组
- 运行Java程序的同时,可以通过输入参数给main函数中的接收参数数组args[],供程序内部使用!即当你在Java命令行后面带上参数,Java虚拟机就直接把它们存放到了main方法中的参数String数组里了。
- args是Java命令行参数,因为参数可以为多个,所以要用数组来存我们在DOS中执行Java程序的时候使用“java 文件名 args参数”。args这个数组可以接收到这些参数。
注:如果程序要使用用命令行参数的话就必须在java运行前指定相应的参数。
public class Test {
public static void main(String[] args) {
System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);
}
}
用控制台编译: javac Test.java
运行: Java Test aaa bbb ccc
记得运行那一行代码后面带上三个参数~~~参数之间用空格隔开!
在eclipse中选择运行参数就可以选择,添加参数运行+
3、数组的常见异常
-
空指针异常NullPointerException
原因: 引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。
-
索引值越界。ArrayIndexOutOfBoundsException
原因:访问了不存在的索引值。
4 、数组的内存分析
- 数组是一种引用内存,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的。
实际的数组对象被存放在堆内存(heap)中,数组的引用变量被存储在栈内存中。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uY8e5xq2-1610904109242)(D:\u(backups)]\note\java\img\19-1.JPG)
-
和array1
都是引用类型变量,存储的都是地址。当执行aray2
后,array2=array1
的指向对象发生改变,见红色指引线。array2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ufFhE6dK-1610904109243)(D:\u(backups)]\note\java\img\19-2.JPG)