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 }
原文地址:https://www.cnblogs.com/bfcs/p/10315057.html