2026/11/5 3:55:31
网站建设
项目流程
- 数组是什么:一种容器,可以存储同种数据类型多个值
- 数组应用:要操作数据有多个,且属于一个整体,比如给一堆数排序找最大最小值之类的。
- 数组格式化定义:
- 数据类型[ ] 数组名;int[] arr1;(常用)
- 数据类型 数组名[ ] (java里面不常用,C里面常用这种方式定义)
- 数组静态初始化:
- 数据类型[ ] 数组名=new 数据类型[ ]{元素1,元素2,元素3……};
- 一般用简写 数据类型[ ] 数组名 ={ 元素1,元素2,元素3……}
- 手动指定元素,系统自动计算数组的长度
- 使用场景:要操作的数据需求中已经明确告知,如学生的成绩分别是多少
- 数组动态初始化
- 数据类型[ ] 数组名=new 数据类型[数据长度];
- 手动指定长度,系统默认分配初始值 int 默认 0、double默认0.0、布尔默认false、字符串默认null、字符默认“\u0000”(unicode值,代表空白)
- 使用场景:不明确要操作的数据。例如:1到100中选10个随机数求最大值
- 打印数组名看到什么
- 十六进制内存地址,例:[I@10f87f48
- “[”表示当前空间是数组类型,“@”表示分隔符,“I”表示数组中元素的类型,“10f87f48”十六进制地址值
- 数组元素访问格式:
- 数组名[索引]
- 数组名.length 动态获取数组长度,元素的个数
- 数组遍历快捷方式:数组名.fori+回车
- 一些数组计算思路
- 求数组里的最大值:取出数组里第一个元素为初始值,然后遍历数组里的元素与它进行比较,若大于,则替换第一个元素。
public static void getMax(int[] arr){ int myMax=arr[0]; for(int i=1;i<arr.length;i++){ if(myMax<arr[i]){ myMax=arr[i]; } } System.out.println("最大值时"+myMax); }
- 反转:两个值交换时,需要找个中间值过度一下。具体代码
//分析思路:两头交换,交换到最中间一个停止 public static void Test(int[] arr){ for(int start=0, end=arr.length;start<end;start++,end--){ int temp=arr[start]; arr[start]=arr[end]; arr[end]=temp; } }
- 数组内存图:(稍后补充)int arr=[I@10f87f48在栈内存 ,{11,12,13}在堆内存开辟一块空间,由栈里存的地址指向这里
- 数组常见异常:
- IndexOutOfBoundsException(索引越界异常):访问了数组中不存在的索引。
- NullPointerException(空指针异常):当引用数据类型变量被赋值为null之后,地址的指向被切断,还继续访问内存数据,就会空指针异常。
- 二维数据(了解,实际中使用集合较多)
- 概念:一个存储一堆一维数组的容器
- 使用场景:要操作的一维数组有多个,并且属于同一个整体。
- 格式:int[][] arr2=new[][]{{1,2},{3,4}};简化格式int[][] arr2={{1,2},{3,4}};
- 访问:数组名[索引][索引];
- 遍历:
public static void bianLiTwo(){ int[][] arr={ {1,2,3}, {4,5,6} }; for(int i=0;i<arr.length;i++){ for(int j=0;j<arr[i].length;j++){ System.out.println(arr[i][j]); } } }