二维数组
二维数组的定义
方式一:元素类型[][] 数组名称;
方式二:元素类型 数组名称[][];
推荐使用方式一
数组的初始化
静态初始化:
语法:元素类型[][] 数组名称 = new 元素类型[][]{{一维数组1,一维数组2,一维数组3....};
简化:元素类型[][] 数组名称 =m{{一维数组1,一维数组2,一维数组3....};
举例:int[][] arr = new int[][]{{2,3},{5,2,1},{10,45,22,54}};
int[][] arr = {{2,3},{5,2,1},{10,45,22,54}};
动态初始化:
语法:元素类型[][] 数组名称 = new 元素类型[二维数组的长度][一维数组的长度]
举例:int[][] arr = new int[3][4];
说明:定义一个数组arr,二维数组中一维数组的个数为3个,每个一维数组中元素的个数为4个
二维数组的访问
通过下标访问二维的指定元素
class TwiceArrayDemo01
{
public static void main(String[] args)
{
int[][] arr = new int[3][4];
System.out.println(arr);//[[I@15db9742
System.out.println(arr.length);//3
System.out.println(arr[0]);//[I@6d06d69c
System.out.println(arr[0].length);//4
System.out.println(Arrays.toString(arr));//[[I@6d06d69c, [I@7852e922, [I@4e25154f]
System.out.println(Arrays.toString(arr[0]));//[0, 0, 0, 0]
/*
[[I@15db9742
3
[I@6d06d69c
4
[[I@6d06d69c, [I@7852e922, [I@4e25154f]
[0, 0, 0, 0]
*/
}
}
遍历二维数组
//常见的操作:遍历二维数组
class TwiceArrayDemo02
{
public static void main(String[] args)
{
//如果二维数组中一维数组的元素个数不确定
//int[][] arr = new int[3][];
int[][] arr = new int[][]{{2,3},{5,2,1},{10,45,22,54}};
//遍历arr
for(int i = 0;i < arr.length;i++) {
System.out.println(arr[i]);
}
//赋值:给arr中的第1个元素修改值
arr[1] = new int[2];
//给arr[0]中的第0个元素修改值
arr[0][0] = 10;
//遍历arr[0]
for(int i = 0;i < arr[0].length;i++) {
System.out.println(arr[0][i]);
}
//二维数组的遍历:嵌套for循环
//简单for循环
for(int i = 0;i < arr.length;i++) {
int[] subArr = arr[i];
for(int j = 0;j < subArr.length;j++) {
System.out.println(subArr[j]);
}
}
//增强for循环
for(int[] subArr1:arr) {
for(int n:subArr1) {
System.out.println(n);
}
}
}
}
拓展:
Arrays工具类
作用:主要用于对数组进行排序,查找,填充,比较等的操作
Arrays工具类存在于java.util包下,所以使用的第一步就是导包:import java.util.Arrays;
注意1:如果在同一个Java文件中同时使用Scanner和Arrays,则可以向如下方式导包:
import java.util.Scanner;
import java.util.Arrays;
或者简写为:* 所有的类
import java.util.*;
注意2:但凡是工具类,类中的方法全部是静态的,方便调用
调用语法:类名.方法名(实参列表)
代码实现:
//演示Arrays工具类的使用
package com.qf.day07;
import java.util.Arrays;
/*
* Arrays工具类的使用
* 1 二分查找
* 2 排序
* 3 复制
* 4 填充
* 5 把数组转成字符串
*
*
*/
public class Demo1 {
public static void main(String[] args) {
// binarySearch();
//sort();
//copy();
//fill();
toStr();
}
//binarySearch 二分查找
public static void binarySearch() {
int[] arr=new int[] {5,8,10,20,65,100};
int result=Arrays.binarySearch(arr,22);
if(result>=0) {
System.out.println("找到了");
}else {
System.out.println("没找到 ");
}
}
//排序
public static void sort() {
int[] arr=new int[] {12,8,100,2,9};
Arrays.sort(arr);
System.out.println("排序之后:");
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
}
//复制
public static void copy() {
int[] arr=new int[] {12,8,100,2,9};
int[] arr2=Arrays.copyOf(arr, arr.length);
for(int i=0;i<arr2.length;i++) {
System.out.println(arr2[i]);
}
}
//填充
public static void fill() {
int[] arr=new int[] {12,8,100,2,9};
Arrays.fill(arr, 10);
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
//把数组转成字符串
public static void toStr() {
int[] arr=new int[] {12,8,100,2,9};
String s=Arrays.toString(arr);
System.out.println(s);
}
}