• 【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]+"	");
                }
                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);
        }
    }
  • 相关阅读:
    洛谷 P1089.津津的储蓄计划
    AcWing 786.第k个数
    差分
    AcWing 798.差分矩阵
    AcWing 797.差分
    AcWing 796.子矩阵的和
    Python 初始—(项目 目录结构)
    Python 初始—(迭代器和生成器)
    Python 初始—(装饰器)
    Python 初始—(高阶函数)
  • 原文地址:https://www.cnblogs.com/frankruby/p/13032751.html
Copyright © 2020-2023  润新知