1.数组(掌握)
什么是数组?
数组就是一个容器,用来装东西的
数组这个容器的特点?
一旦初始化之后,数组容器的长度就固定了,不可以再改变了
数组容器即可存储基本数据类型的数据,也可以存储引用数据类型的数据
一个数组容器里面所装的所有的东西的数据类型必须是一致的
怎么创建出来一个数组容器(数组的定义格式)?
格式一:
东西的数据类型[] 容器的名字 = new 东西的数据类型[容器的长度];
int[] arr = new int[5];
String[] arr = new String[5];
变形:
东西的数据类型 容器的名字[] = new 东西的数据类型[容器的长度];
int arr[] = new int[5];
格式二:
东西的数据类型[] 容器的名字 = new 东西的数据类型[]{东西,东西,... ...};
int[] arr = new int[]{1,2,3,4,5};
格式三:
东西的数据类型[] 容器的名字 = {东西,东西,... ...};
int[] arr = {1,2,3,4,5};
怎么向这个数组容器中放东西?
放东西是通过容器的名字[索引]
int[] arr = new int[5];
arr[0] = 23;
arr[1] = 21;
怎么向这个数组容器中拿东西?
取东西就是通过容器的名字[索引]
int i = arr[0];
System.out.println(i);
System.out.println(arr[1]);
注:
int[] arr = new int[5];
System.out.println(arr); //地址值,是指的是数组容器在内存中存储的位置0x123
System.out.println(arr[0]); //0
数组容器的内存图?
至少要求能看懂
能看懂一个数组的内存图
能看懂二个数组的内存图
能看懂两个引用(变量),指向同一个数组的内存图
在我们使用数组的时候最常见到的两个异常?
数组索引越界异常 ArrayIndexOutOfBoundsException
知道这个异常是如何产生的?
int[] arr = new int[3];
System.out.println(arr[-1]);
System.out.println(arr[3]);
知道这个异常是如何解决的?
空指针异常 NullPointerException
知道这个异常是如何产生的?
int[] arr = {1,2,3};
arr = null;//二次赋值,赋值一个null空常量
System.out.println(arr[0]);
知道这个异常是如何解决的?
练习:
遍历数组容器?
int[] arr = {1,2,3};
for(int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
获取数组容器中的最值?
方法一:
int[] arr = {1,4,2,3,7,6,5};
int max = arr[0];
for(int i = 1; i < arr.length; i++) {
if(max < arr[i]) {
max = arr[i];
}
}
System.out.println(max);
方法二:
int[] arr = {1,4,2,3,7,6,5};
int max = 0;
for(int i = 1; i < arr.length; i++) {
if(arr[max] < arr[i]) {
max = i;
}
}
System.out.println(arr[max]);
数组容器中数据的反转?
int[] arr = {1,2,3,4,5};
for(int i = 0, j = arr.length-1; i < arr.length/2; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
-------------------------------------------------------------------------------------------------------------------------------
数组容器中数据的排序?(冒泡)
排序:就是将数组中不规则的数字按照从大到小或者从小到大进行排序
冒泡:就是在排序的过程中,方法向气泡似的排序方法
int[] arr = {1,4,2,6,3,5};
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
System.out.println();
for(int i = 0; i < arr.length - 1; i++) {
for(int j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
二维数组?
什么是二维数组?
元素为一维数组的数组就是二维数组
二维数组的定义格式?
格式一:
int[][] arr = new int[3][2];
3:指的是这个二维数组可以装三个元素(一维数组)
2:每一个元素(一维数组)里面可以装2个元素
格式二:
int[][] arr = new int[3][];
arr[0] = new int[5];
arr[1] = new int[3];
arr[2] = new int[6];
3:指的是这个二维数组可以装三个元素(一维数组)
格式三:
int[][] arr = {{1,2,3},{2,3,4},{6,4}};
二维数组的遍历?
int[][] arr = {{1,2,3},{2,3,4},{6,4}};
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
|