Java基本语法续
Java数组
一.一维数组
数组: 相同数据类型的数据的组合.
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 
 | int score1 = 72;
 int score2 = 90;
 int score3 = 59;
 
 int[] scores1 = new int[]{72,90,59};
 
 int scores2[] = new int[3];
 scores2[0] = 72;
 scores2[1] = 90;
 scores2[2] = 59;
 int[] arr = {72,90,59};
 
 
 
 
 
 
 
 System.out.println(scores2.length);
 for(int i = 0;i < scores1.length;i++){
 System.out.println(scores1[i]);
 }
 
 | 
注意
  1.不管是动态还是静态初始化数组, 一定在创建的时候, 就指明了数组的长度
  2.如何引用数组元素: 通过数组的下角标的方式. 下角标从0开始, 到n-1结束.其中n为数组的长度
  3.关于数组元素的默认初始化值
- byte short int long 而言:0
- float double 而言:0.0
- char而言:空格
- boolean而言:false
- 引用类型变量而言:null
4.数组的内存结构
内存结构图:

在JAVA中, 凡是new出来的东西, 都会被默认初始化并赋值. new 出来的东西都存放在 堆中
对于数组来讲:

字符串: 面向对象之后再看

二.二维数组
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 
 | 
 int[] i = new int[12];
 i[0] = 12;
 int[] j = new int[]{12,3};
 
 String[][] str = new String[4][3];
 String[][] str1 = new String[4][];
 str1[0] = new String[3];
 
 str1[3] = new String[5];
 int[][] arr = new int[][]{{1,2,3},{4,5},{6}};
 
 arr[1][0] = 12;
 
 arr.length;
 arr[1].length;
 
 for(int i = 0;i < arr.length;i++){
 for(int j = 0;j < arr[i].length;j++){
 System.out.print(arr[i][j] + "\t");
 }
 System.out.println();
 }
 
 | 
5.二维数组的结构:
![String[][]](https://cdn.jsdelivr.net/gh/crainyday/blog@master/lazyload.svg)

三.数组中常见的异常
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 
 | int[] i = new int[10];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 int[][] j = new int[3][];
 
 
 | 
四.数组中常用的算法
求数组元素的最大值&最小值&和&平均数
数组的复制和反转
情况1: 浅复制, 两个数组的引用指向同一片内存空间, 改变一个的内容另一个也会改变
| 12
 
 | int[] arr1 = new int[]{10,11,12};int[] arr2 = arr1;
 
 | 
情况2: 深复制, 将一片内存里的内容, 复制到另一片内存里(如何实现复制)
| 12
 3
 4
 5
 
 | int[] arr1 = new int[]{10,11,12};int[] arr2 = new int[arr1.length];
 for(int i = 0;i < arr1.length;i ++){
 arr2[i] = arr1[i];
 }
 
 | 
数组的反转:
数组元素的反转
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | for(int i = 0;i < arr.length/2;i++){
 int temp = arr[i];
 arr[i] = arr[arr.length-1 - i];
 arr[arr.length - 1 - i] = temp;
 }
 
 for (int x = 0, y = arr.length - 1; x < y; x++, y--) {
 int temp = arr[x];
 arr[x] = arr[y];
 arr[y] = temp;
 }
 
 | 
拓展:String str = “abcdefg”;
数组的排序
使用冒泡排序使数组元素从小到大排列
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | 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;
 }
 }
 }
 
 | 
使用直接选择排序使数组元素从小到大排列
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | for(int i = 0; i < arr.length - 1; i++){int t = i;
 for(int j = i;j < arr.length;j++){
 
 if(arr[t] > arr[j]){
 t = j;
 }
 }
 if(t != i){
 int temp = arr[t];
 arr[t] = arr[i];
 arr[i] = temp;
 }
 }
 
 | 
还可以调用: Arrays工具类: Arrays.sort(arr);