数组
-
args.length:数组的长度
int[] nums; //建议采用
int nums[]; //同C、C++ 格式,但不建议采用
nums = new int[10];
初始化
Java对象都存放在堆中,数组本身是对象,存放在堆中。声明的数组名在栈中,new出的对象和初始化的值在堆中;
静态初始化
int[] i = {1, 2, 3, 4, 5};
Man[] m = {new Man(), new Man()};
System.out.println(i[0]);
动态初始化
int[] i; //栈
i[1] = 10; //堆
System.out.println(i[0]);
默认初始化
int[] i;
System.out.println(i[0]);
ArrayIndexOutofBounds
多维数组
-
数组的数组:一维数组每个元素都是一个数,二维数组每个元素都是一个一维数组,三维数组每个元素都是一个二维数组,n维数组每个元素都是一个 n-1 维数组。
int[][] array = new int[2][5]; //每个元素都是一个包含5个元素的数组
int[][] brray = {{1,2,3,4,5},{6,7,8,9,10}};
Arrays 类
-
提供了各种 static 方法,可以通过类名直接调用;
-
Arrays.toString、Arrays.sort、Arrays.fill
int[] array = {6, 5, 4, 3, 2, 1};
System.out.println(Arrays.toString(array)); //[6, 5, 4, 3, 2, 1]
int temp;
for (int i = 0, j = array.length - 1; i < array.length - 1 && i < j; i++, j--) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
System.out.println("============================");
System.out.println(Arrays.toString(array)); //[1, 2, 3, 4, 5, 6]
int[] reverse = reverse(array);
System.out.println("============================");
System.out.println(Arrays.toString(reverse)); //[6, 5, 4, 3, 2, 1]
Arrays.sort(reverse);
System.out.println("============================");
System.out.println(Arrays.toString(reverse)); //[1, 2, 3, 4, 5, 6]
System.out.println("============================");
Arrays.fill(reverse, 2, 5, 0);
System.out.println(Arrays.toString(reverse)); //[1, 2, 0, 0, 0, 6]
System.out.println("============================");
Arrays.fill(reverse, 0);
System.out.println(Arrays.toString(reverse)); //[0, 0, 0, 0, 0, 0]
-
冒泡排序
static int[] sort(int[] array){
boolean flag = false;
int temp = 0;
for (int i = 0; i < array.length - 1; i++) {
for(int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
flag = true;
}
}
if (!flag) {
break;
}
}
return array;
}
-
稀疏数组
int[][] array = new int[11][11];
array[1][2] = 1;
array[2][3] = 2;
System.out.println("原始数组:");
for (int[] a : array) {
for (int b: a) {
System.out.print(b + "\t");
}
System.out.println();
}
System.out.println("=========================================");
System.out.println("稀疏数组:");
//计数:共多少个非 0 元素:
int sum = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j] != 0) {
sum++;
}
}
}
//反转
int[][] brray = new int[sum + 1][3];
brray[0][0] = 11;
brray[0][1] = 11;
brray[0][2] = sum;
int count = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (array[i][j] != 0) {
count++;
brray[count][0] = i;
brray[count][1] = j;
brray[count][2] = array[i][j];
}
}
}
for (int[] a : brray) {
for (int b: a) {
System.out.print(b + "\t");
}
System.out.println();
}
System.out.println("=========================================");
System.out.println("还原数组:");
int[][] crray = new int[brray[0][0]][brray[0][1]];
for (int i = 1; i
