Java基本语法续
Java数组
一.一维数组
数组: 相同数据类型的数据的组合.
1 2 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 出来的东西都存放在 堆中
对于数组来讲:
字符串: 面向对象之后再看
二.二维数组
1 2 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.二维数组的结构:
三.数组中常见的异常
1 2 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: 浅复制, 两个数组的引用指向同一片内存空间, 改变一个的内容另一个也会改变
1 2
| int[] arr1 = new int[]{10,11,12}; int[] arr2 = arr1;
|
情况2: 深复制, 将一片内存里的内容, 复制到另一片内存里(如何实现复制)
1 2 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]; }
|
数组的反转:
数组元素的反转
1 2 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”;
数组的排序
使用冒泡排序使数组元素从小到大排列
1 2 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; } } }
|
使用直接选择排序使数组元素从小到大排列
1 2 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);