二维数组如何声明和初始化?
静态初始化的一种方式?
int[][] arr = new int[][]{{1,2,3},{3,4,5},{6,7,8,9}};
动态初始化的2种方式?
int[][] arr = new int[3][4];
int[][] arr = new int[3][];
如何调用动态、静态数组指定位置的元素?
如何获取二维数组的长度以及里面元素的长度?
如何遍历二维数组?
二维数组元素的默认初始化值?(2种方式)(内层元素、外层元素、元素名)
二维数组的内存如何解析?
练习
package com.atguigu.contact;
public class ZhuShi {
public static void main(String[] args) {
int sum = 0;
int[][] arr = new int[][]{{3,5,8},{12,9},{7,0,6,4}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
sum = sum + arr[i][j];
}
}
System.out.println(sum);
}
}//sum = 54
package com.atguigu.contact;
public class ZhuShi {
public static void main(String[] args) {
int[][] yanghui = new int[10][];
for (int i = 0; i < yanghui.length; i++) {
yanghui[i] = new int[i + 1];
yanghui[i][0] = yanghui[i][i] = 1;
if (i > 1) {
for (int j = 1; j < yanghui[i].length - 1; j++) {
yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
}
}
}
for (int i = 0; i < yanghui.length; i++) {
for (int j = 0; j < yanghui[i].length; j++) {
System.out.print(yanghui[i][j] + " ");
}
System.out.println();
}
}
}
面试题目: 创建一个长度为6的int数组,要求数组元素的值都在1-30之间,且是随机赋值。同时要求数组元素的值各不相同。
package com.atguigu.contact;
public class ZhuShi {
public static void main(String[] args) {
// 创建一个长度为6的int数组,要求数组元素的值都在1-30之间,且是随机赋值。
// 同时要求数组元素的值各不相同。
// 方式一:
int[] arr = new int[6];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 30) + 1;
for (int j = 0; j < i; j++) {
if (arr[j] == arr[i]) {
i--;
break;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
// 方式二:
int[] arr = new int[6];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 30) + 1;
boolean flag = false;
while (true) {
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
flag = true;
break;
}
if (flag) {
arr[i] = (int) (Math.random() * 30) + 1;
flag = false;
continue;
}
}
if (flag == false) {
break;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
定义一个int的一维数组,包含10个元素,分别赋一些随机整数,
然后求出所有元素的最大值、最小值、值。
要求所有的随机数都是两位数。
package com.atguigu.contact;
public class ZhuShi {
public static void main(String[] args) {
// 定义一个int的一维数组,包含10个元素,分别赋一些随机整数,
// 然后求出所有元素的最大值、最小值、值。
// 要求所有的随机数都是两位数。
int[] arr = new int[10];
int max = 0;
int min = 99;
int sum = 0;
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 90) + 10;
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
System.out.print(arr[i] + " ");
}
System.out.println("最大值为:" + max);
System.out.println("最大值为:" + min);
System.out.println("最大值为:" + sum);
System.out.println("平均数为:" + sum/10);
}
}
package com.atguigu.contact;
public class ZhuShi {
public static void main(String[] args) {
int[] array1 = new int[] { 2, 3, 5, 7, 11, 13, 17, 19 };
int[] array2;
for (int i = 0; i < array1.length; i++) {
System.out.print(array1[i] + " ");
}
System.out.println();
// array2 = array1;//快捷方式
// 数组的复制
array2 = new int[array1.length];
for (int i = 0; i < array2.length; i++) {
array2[i] = array1[i];
}
for (int i = 0; i < array2.length; i++) {
if (i % 2 == 0) {
array2[i] = i;
}
System.out.print(array1[i] + " ");
}
}
}
数组的复制、反转
package com.atguigu.contact;
public class ZhuShi {
public static void main(String[] args) {
//数组的复制、反转
String[] str = new String[]{"GG","JJ","DD","MM","HH"};
//算法的复制(new开辟新的空间,赋值同一个地址值)
String[] str1 = new String[str.length];
for (int i = 0; i < str1.length; i++) {
str1[i] = str[i];
}
//数组的反转
String temp;
//方法一:
for (int i = 0; i < str.length/2; i++) {
temp = str[i];
str[i] = str[str.length - 1 - i];
str[str.length - 1 - i] = temp;
}
//方法二:
for (int i = 0, j = str1.length - 1; i < j;i++,j--) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
for (int i = 0; i < str.length; i++) {
System.out.print(str[i] + "t");
}
}
}
数组的查找
package com.atguigu.contact;
public class ZhuShi {
public static void main(String[] args) {
// 数组的查找
// ①线性查找
String[] str = new String[] { "GG", "JJ", "DD", "MM", "HH" };
boolean flag = false;
String find = "DD";
for (int i = 0; i < str.length; i++) {
if (str[i] == find) {
flag = true;
System.out.println("恭喜你!找到了,位置为:" + i);
break;
}
}
if (flag == false) {
System.out.println("很遗憾,没有找到。");
}
// ②二分法查找
int temp;
int find = 78;
boolean flag = true;
int[] arr = new int[] { 99, 66, 789, 45, 1, 78 };
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < i; j++) {
if (arr[i] < arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "t");
}
int head = 0;
int end = arr.length - 1;
while (head <= end) {
int middle = (head + end) / 2;
if (find == arr[middle]) {
flag = false;
System.out.println("恭喜你!找到了,位置为:" + middle);
break;
} else if (find < arr[middle]) {
end = middle - 1;
} else if (find > arr[middle]) {
head = middle + 1;
}
}
}
}
数组的冒泡排序
package com.atguigu.contact;
public class ZhuShi {
public static void main(String[] args) {
// 数组的冒泡排序
int[] arr = new int[] { 23, 22, 14, 787, 15, 55 };
int temp;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
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] + "t");
}
}
}
数组Arrays工具类的使用
package com.atguigu.contact;
import java.util.Arrays;
public class ZhuShi {
public static void main(String[] args) {
//判断两个数组是否相等。
int[] arr1 = new int[]{1,2,3,4};
int[] arr2 = new int[]{1,3,2,4};
boolean isEquals = Arrays.equals(arr1,arr2);
System.out.println(isEquals);
//输出数组信息
System.out.println(Arrays.toString(arr1));
//将指定的值填充到数组中
Arrays.fill(arr1, 10);
System.out.println(Arrays.toString(arr1));
//对数组进行排序
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
//二分法查找
int[] arr3 = new int[]{2,3,5,78,99,101,556,878};
int index = Arrays.binarySearch(arr3, 78);
System.out.println(index);
}
}
数组中的常见异常
package com.atguigu.contact;
import java.util.Arrays;
public class ZhuShi {
public static void main(String[] args) {
//数组角标越界的异常:ArrayIndexOutOfBoundsException
//出现异常,程序运行终止
int[] arr = new int[]{1,2,3,4,5};
for (int i = 0; i <= arr.length; i++) {
System.out.println(arr[i]);
}
//空指针异常:NullPointerException
int[][] arr1 = new int[3][];
System.out.println(arr1[0][0]);
}
}



