Java数组-二维数组16

Posted 朝九晚五浪迹江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数组-二维数组16相关的知识,希望对你有一定的参考价值。

一、二位数组是一个特殊的一维数组,特殊在这个一维数组中每个元素都是一维数组

相当于一维数组存储一维数组(遍历二维数组可以通过debug模式很直观的展示)

通过以下堆区分布证明:

 

int[][] data = new int[2][3];

 

 

 

 

 

 

 

二、语法:

数据类型[][]:第一个[]代表行,第二个[]代表列

三、举例

1、基本类型:动态二位数组声明

 

package com.JavaStudy.studyArray0601;

/**
 * @Author wufq
 * @Date 2020/6/2 16:07
 * 二维数组:相当于一维数组存储一维数组
 */
public class ArrayTest05 {

    public static void main(String[] args){
        //动态初始化
        //声明二位数组
        int[][] data = new int[2][3];  //前面的一维数组长度为2,后面的一维数组长度为3,即:int[n][m],就是前面的一维数组长度为n,后面的一维数组长度为m

        //对二维数组赋值
        data[0][0] =1;
        data[0][1] =2;
        data[0][2] =3;

        data[1][0] =4;
        data[1][1] =5;
        data[1][2] =6;

        //遍历数组
        for(int i=0;i<data.length;i++){
            for(int j=0;j<data[i].length;j++){

                System.out.print(data[i][j]+" ");
            }
            System.out.println();
            System.out.println("一维数组元素里面有几个一维数组:"+data[i].length);
        }

        //上面这个特殊的一维数组有多少个一维数组
        System.out.println("有几个一维数组:"+data.length);

    }
}
=====执行结果=====
1 2 3
一维数组元素里面有几个一维数组:3
4 5 6
一维数组元素里面有几个一维数组:3
有几个一维数组:2

 

2、基本类型:静态二位数组声明

package com.JavaStudy.studyArray0601;

/**
 * @Author wufq
 * @Date 2020/6/3 10:25
 */
public class ArrayTest06 {
    public static void main(String[] args){
        int[][] data = {{1,2,3},{4,5,6}}; //相当于一个一维数组存储两个一维数组,而且第一个一维数组有三个元素,第二个一维数组有三个元素

        for(int i=0;i<data.length;i++){
            for(int j=0;j<data[i].length;j++){
                System.out.print(data[i][j]+"\\t");
            }
            System.out.println();
        }
    }
}

3、引用类型:动态/静态二维数组的声明

package com.JavaStudy.studyArray0603;

/**
 * @Author wufq
 * @Date 2020/6/3 10:58
 */
public class Students {
    private int age;
    private String name;

    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return age;
    }

    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }

    public Students(){}

    public Students(int age,String name){
        this.age = age;
        this.name = name;
    }

//重写toString方法
    public String toString(){
        return "Students[age="+age+",name="+name+"]";
    }
}
package com.JavaStudy.studyArray0603;

/**
 * @Author wufq
 * @Date 2020/6/3 10:59
 */
public class ArrayTest {
    public  void test1(){
        //静态初始化一维数组
        Students[] stu1 = {new Students(18,"张三"),new Students(19,"李四"),new Students(20,"王五")};
        Students[] stu2 = {new Students(22,"花花"),new Students(23,"贝贝"),new Students(24,"成成")};

        //动态初始化二维数组
        Students[][] students = new Students[2][3];

        //把一维数组的stu1赋值给students的第一个元素,把一维数组的stu2赋值给students的第二个元素,
        students[0] = stu1;
        students[1]= stu2;

        printArr(students);

    }

    public void test2(){
        //静态初始化二维数组
        Students[][] students = {
                {new Students(18,"张1"),new Students(19,"张2")},
                {new Students(20,"张3"),new Students(21,"张4")},
                {new Students(22,"张5"),new Students(23,"张6")},
        };

        printArr(students);
    }

    public  void printArr(Students[][] Arr){
        for(int i=0;i<Arr.length;i++){
            for(int j=0;j<Arr[i].length;j++){
               System.out.println("Arr["+i+"]["+j+"]="+Arr[i][j].toString());
            }
            System.out.println();
        }
    }

    public static void main(String[] args){
        ArrayTest at = new ArrayTest();
        at.test1();
        System.out.println("----------------");
        at.test2();
    }
}

test1堆区分布图

 

 四、main方法中String[] args数组

需求:要使用改系统必须提供用户名和密码,如果不提供则不能使用该软件

package com.JavaStudy.studyArray0603;

/**
 * @Author wufq
 * @Date 2020/6/3 15:10
 * 通过登录名和密码来理解main方法中String[] args数组
 */
public class ArrayTest02 extends ArgsException{

    public static void main(String[] args) throws ArgsException{
        System.out.println(args.length);

        if(args.length!=2){
            throw new ArgsException("java ArrayTest02 username password Error");
        }

        //获取用户名
        String username = args[0];
        //获取密码
        String passwd = args[1];

        if(username.equals("admin")&&passwd.equals("123456")){
            System.out.println("登录成功,欢迎"+username+"回来!");
        }else{
            System.out.println("登录失败"+username+"不存在或者密码错误");
        }
    }
}

class  ArgsException extends Exception{
    ArgsException(){}

    ArgsException(String msg){
        super(msg);
    }
}

 

以上是关于Java数组-二维数组16的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中将二维数组拆分为多个不同大小的二维数组

请问java中深度copy一个二维数组是啥意思?怎么用代码实现?

Java:文本文件到二维数组

java 如何将二维数组的一列作为参数传进去 求代码

这个二维数组为啥里面要有大括号呢?为啥风格成4个?难道不是4×4=16个元素吗?

java Arrays.sort 二维数组