首页 > 编程语言 >java二维数组

java二维数组

时间:2022-09-02 14:44:07浏览次数:57  
标签:arr java int 元素 二维 数组 new

二维数组

二维数组可以看成以数组为元素的数组。

还可以有二维、三维、甚至更多维数组,但是实际开发中用 的非常少。最多到二维数组(学习容器后,我们一般使用容器,二维数组用的都很少)。

  1. 数据类型[] [] 变量名; int[] [] arr; 推荐

  2. 数据类型 变量名[] []; int arr[] [];

  3. 数据类型[] 变量名[]; int[] arr[];

 

二维数组的声明

 

动态初始化一个二维数组

   格式:数据类型[] [] 变量名 = new 数据类型[m] [n]; 

  范例:int[] [] arr = new int[2] [3];

  定义了一个二维数组 二维数组中有2个元素(一维数组) 每一个一维数组有3个元素(int类型数据)

  适合开始知道数据的数量,但是不确定具体元素值的业务场景

 

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        int[][] a = new int[3][]; // 动态初始化一个二维数组
// a[0] = {1,2,5}; //错误,没有声明类型就初始化
        a[0] = new int[]{1, 2};
        a[1] = new int[]{2, 2};
        a[2] = new int[]{2, 2, 3, 4};
        System.out.println(a[2][3]);
        System.out.println(Arrays.toString(a[0]));
        System.out.println(Arrays.toString(a[1]));
        System.out.println(Arrays.toString(a[2]));
    }
}

 

public class Test {
    public static void main(String[] args) {
// Java中多维数组的声明和初始化应按从低维到高维的顺序进行
        int[][] a = new int[3][]; // 动态初始化一个二维数组
        a[0] = new int[2];
        a[1] = new int[4];
        a[2] = new int[3];
// int a1[ ][ ]=new int[ ][4];//非法
    }
}

二维数组的静态初始化

   格式:数据类型[] [] 变量名 = new 数据类型[] []{{元素…},{元素…},{元素…},…};

  范例:int[ ] [ ] arr = new int[] []{{1,2,3},{4,5,6},{7,8,9}};

  定义了一个二维数组 二维数组中有三个元素(一维数组) 每一个一维数组有三个元素(int类型数据)

  注意:一维数组中元素的个位可以是不同的 比如: int[] [] arr = new int[] []{{1,2,3},{4,5},{6,7,8,9}}; // new int[][] 为二维数组类型开辟一个空间

  同样,针对静态初始化,二维数组也给出了简化格式:

  简化格式数据类型 [ ][ ] 变量名 = { {元素…},{元素…},{元素…},… };

  范例:int [ ] [ ] arr = {{1,2,3},{4,5,6},{7,8,9}};

  适合一开始就能确定元素值的业务场景

public class Test {
    public static void main(String[ ] args) {
        int[ ][ ] a = { { 1, 2, 3 }, { 3, 4 }, { 3, 5, 6, 7 } };
        System.out.println(a[2][3]);
    }
}

二维数组内存图

 二维数组常见操作----遍历

/*
需求:已知一个二维数组 arr = {{1,2,3},{4,5,6},{7,8,9}}; 请把元素在控制台输出
*/
public class ArrayTest {
    public static void main(String[] args) {
//定义二维数组,并进行静态初始化
        int[][] arr = {
                {1, 2, 3}, 
                {4, 5, 6}, 
                {7, 8, 9}
                        };
//获取数据
        for (int i = 0; i < arr.length; i++) { // 取出二维数组中的一维数组
//arr[i]
            for (int j = 0; j < arr[i].length; j++) { // 依次取出每个二维数组中的一维数组的元素
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}         

  ① 循环嵌套:循环语句中嵌套循环语句

  ② 通过外层循环可以得到一维数组

  ③ 在通过内存循环可以得到每一个二维数组元素

二维数组常见操作---元素打乱

/*
已知二维数组 arr = {{1,2,3},{4,5,6},{7,8,9}};用程序实现把数组中的元素打乱,并在控制台输出打乱后的数组元素

*/

import java.util.Random;  
class Test11 {
    public static void main(String[] args) {
//定义二维数组,并进行静态初始化
        int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
//创建随机数对象
        Random r = new Random();
//遍历二维数组,进行元素打乱
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
//arr[i][j]
                int x = r.nextInt(arr.length);
                int y = r.nextInt(arr[x].length);
//元素交换
                int temp = arr[i][j];
                arr[i][j] = arr[x][y];
                arr[x][y] = temp;
            }
        }
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

 

  这里的思路和前面一维数组中的元素打乱是一样的,也是要随机产生二维数组中元素的索 引,并进行元素交换。

  只不过呢,二维数组元素的索引是两个值,所以,这里要产生两个随机数。 

使用Arrays来操作二维数组

使用二维数组保存表格数据

import java.util.Arrays;
class Test11 {
    public static void main(String[] args) {
        // 创建对象类型的一维数组
        Object[] a1 = {1001, "高淇", 18, "讲师", "2-14"}; 
        Object[] a2 = {1002, "高小七", 19, "助教", "10-10"};
        Object[] a3 = {1003, "高小琴", 20, "班主任", "5-5"};
        // 动态初始化一个对象类型的二维数组 存3个一维数组
        Object[][] emps = new Object[3][];
        // 手动把上面创建的一维数组加入到二维数组中
        emps[0] = a1;
        emps[1] = a2;
        emps[2] = a3;
        // 使用arrays类快速获取数组中的数据 ,省去了两个for嵌套循环
        System.out.println(Arrays.toString(emps[0]));
        System.out.println(Arrays.toString(emps[1]));
        System.out.println(Arrays.toString(emps[2]));
    }
}

标签:arr,java,int,元素,二维,数组,new
From: https://www.cnblogs.com/e-link/p/16648253.html

相关文章

  • Java基础
    Java基础注释//单行注释/*回车多行注释/**回车文档注释标识符和关键字数据类型publicclassDemo01{publicstaticvoidmain(String[]args){......
  • 原生js处理数组数据小方法
    <ulid="ul"></ul><script>//假设这是一组数据,要渲染到页面页面vararr=[{msg:"nisjsiqi",img:"https://img1.baidu.com/it......
  • java Builder模式
    Builder 模式也叫建造者模式,builder模式的作用将一个复杂对象的构建与他的表示分离,一步一步创建一个复杂对象的创建型模式。在不知道内部建造细节的情况下,可以更精细的控......
  • 20个既简单又实用的JavaScript小技巧
    1.滚动到页面顶部我们可以使用window.scrollTo()平滑滚动到页面顶部。const scrollToTop = () => {  window.scrollTo({ top: 0, left: 0, behavior: "sm......
  • java开发技术栈
    技术栈名称说明备注TLog轻量级的分布式日志标记追踪神器 ignite以内存为中心的数据平台内存数组组织框架是一个高性能、集成和分布式的内存计算和事务平台......
  • Java接口自动化测试框架系列(三)LOG信息的处理
    既然是搭建自动化测试框架,肯定是希望框架的整体功能是全面的。如果在执行过程中出了问题,通过log进行查看是比较方便的,所以需要有一个log方法来记录日志。记录日志比较常......
  • 猿人学安卓逆向对抗比赛-第一题(JAVA层加密)
    JAVA层加密抓包证书导入(charles同理)先安装为用户证书(如下)然后将证书导入系统adbshellsucd/data/misc/user/0/cacert-addedmount-oremount,rw/systemcp*/......
  • 使用java完成图形验证码
    序目标是使用Java生成验证码,传入前端。一.实现思路利用接口调用工具类,使用ajax反馈给前端二.实现步骤1.添加依赖点击查看代码<dependency><group......
  • JAVA进阶--常用时间API、包装类、正则表达式、Array类、Lambda表达式、常见算法--202
    第一节 Date日期对象1、日期对象如何创建,如何获取时间毫秒值Datedate=newDate();Longtime=date.getTime();2、时间毫秒值怎么恢复成......
  • js数组方法
    修改器方法会改变自身的值push(element1,...,elementN):在数组的末尾增加一个或多个元素,并返回数组的新长度。pop():删除数组的最后一个元素,并返回这个元素(数组为空......