zoukankan      html  css  js  c++  java
  • java 二维数组和对象数组

    1.二维数组:二维数组就是存储一维数组(内存地址/引用)的数组

    2.二维数组的初始化

    1) int intA[][]={{1,2},{2,3},{3,4,5}};


    2) int [][] intB=new int[3][5];


    3) int []intC []=new int[3][];
    intC[0]=new int[2];
    intC[1]=new int[3];
    intC[2]=new int[5];

     1 public class TestArray2 {
     2     public static void main(String[] args) {
     3         //二维数组不是规则的矩阵
     4         int [] intA[] ={{1,2},{2,3,4},{3,4,5,6}};
     5         System.out.println(intA);//[[I@5e265ba4 两个[[表示是二维的 I表示数组是int型 @5e265ba4是内存地址
     6         
     7         //声明一一个二维数组,用于存储3个一维数组,每一个一维数据存多少个数组,不知道 ,null
     8         int [][]intB=new int[3][];
     9         intB[0]=new int[3];  //3
    10         intB[1]=new int[]{1,2,3,4};  //3
    11         intB[2]=new int[2];  //2
    12         System.out.println(intB[1]);//[I@156643d4
    13         System.out.println(intB[1][1]);//2
    14         
    15         //声明一个二维数组,同时创建出一维数组,每个一维数组的长度均相同
    16         //存储三个一维数组,每个一维数组的长度为4
    17         int []intC[]=new int[3][4];
    18         System.out.println(intC);
    19         
    20     }
    21 }

    3.二维数组的遍历

    1) 普通 for 循环
    2) 加强 for 循环
    3) 普通 for 循环+加强 for 循环

    public class TestArray3 {
        public static void main(String[] args) {
            //二维数组
            int [] intA[] ={{1,2},{2,3,4},{3,4,5,6}};
            //(1)普通for循环
            for(int i=0;i<intA.length;i++){ //0,1,2
                for(int j=0;j<intA[i].length;j++){ //每一个一维数组的长度
                    System.out.print(intA[i][j]+"	");
                }
                System.out.println();
            }
            //(2)加强for循环
            System.out.println("
    =========================");
            for(int[] arr:intA){  //int[]二维数组中元素的类型, arr迭代变量, intA二维组的名称
                for(int i:arr){ //int,一维数组中元素的类型,i,迭代变量,arr,一维数组的名称
                    System.out.print(i+"	");
                }
                System.out.println();
            }
            //(3)普通与加强for循环的混搭
            System.out.println("
    -------------------------");
            for(int [] arr:intA){//加强for
                for(int i=0;i<arr.length;i++){
                    System.out.print(arr[i]+"	");
                }
                System.out.println();
            }
            System.out.println("
    --------------------------");
            for(int i=0;i<intA.length;i++){
                for(int j:intA[i]){//加强for
                    System.out.print(j+"	");
                }
                System.out.println();
            }
        }
    }
    View Code

    4.对象数组存储表格数据

    张三   19   男
    李四   20   女
    王五   28   男

    数组存基本数据类型,也可以存引用数据类型
    对象数组:使用数组存储对象(自定义对象)

    public class Person {
        private String name;//姓名
        private int age;//年龄
        private String gender;//性别
        
        //重写toString以打印想要的输出 否则只会打印对象的内存地址
        @Override
        public String toString() {
            // TODO Auto-generated method stub
            return name+"	"+age+"	"+gender;//
        }
        
        public Person(String name, int age, String gender) {
            super();
            this.name = name;
            this.age = age;
            this.gender = gender;
        }
        public Person() {
            super();
        }
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getGender() {
            return gender;
        }
        public void setGender(String gender) {
            this.gender = gender;
        }
    View Code
     1 public class TestArray {
     2     public static void main(String[] args) {
     3         //创建一个Person类型的数组,用于存储3个Person类型的对象
     4         Person [] pers=new Person[3];
     5         //创建Person类型的对象
     6         Person p1=new Person("张三", 19, "男");
     7         //将p1对象存储到Person类型的数组中
     8         pers[0]=p1;
     9         
    10         pers[1]=new Person("李四", 20, "女");
    11         pers[2]=new Person("王五",28,"男");
    12         
    13         for(int i=0;i<pers.length;i++){
    14             System.out.println(pers[i]);
    15         }
    16         //对象数组中存储的是对象的引用(内存地址)
    17     }
    18 }

    5.数组拷贝

    地址的拷贝
    int[]array={11,22,33,44};
    int[] arrayB=new int[5];
    arrayB=array   //两个数组指向同一内存

    值的拷贝
    int[]array={11,22,33,44};
    int[] arrayB=new int[5];
    arrayB[0]=array[0];

    System 类中的 arraycopy(…)方法:快速,数组大时用次方法。

     1 public class TestArrayCopy3 {
     2     public static void main(String[] args) {
     3         int [] arrA={11,22,33,44};//源数组
     4         int [] arrB=new int[5];//目标数组
     5         
     6         System.out.println("数组拷贝之前");
     7         for(int num:arrB){
     8             System.out.print(num+"	");
     9         }
    10         //0        0        0        0        0    
    11         //拷贝
    12         System.arraycopy(arrA, 0, arrB, 1, 2);
    13         
    14         System.out.println("
    数组拷贝之后");
    15         for(int num:arrB){
    16             System.out.print(num+"	");
    17         }
    18         //0        11        22        0        0
    19     }
    20 }
  • 相关阅读:
    Linux连接字符串
    【aws】
    运行mlflow命令报错 The 'nose' distribution was not found and is required by nose-exclude
    【apt install】Unable to locate package python3-pip
    python package打包发布,安装
    【mlflow】mlflow打包、启动、换用mysql backend、mysql配置
    【mlflow】打包:npm run build + python setup.py sdist
    【css flex】将多个<div>放在同一行
    【react 条件渲染】在render的html中使用 三元运算符 进行条件渲染
    由于无法验证发布者 所以windows阻止此软件
  • 原文地址:https://www.cnblogs.com/bfcs/p/10315057.html
Copyright © 2011-2022 走看看