大家好,又见面了,我是你们的朋友全栈君。
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 classTestArray2 {2 public static voidmain(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]);//214
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 classTestArray3 {public static voidmain(String[] args) {//二维数组
int [] intA[] ={ {1,2},{2,3,4},{3,4,5,6}};//(1)普通for循环
for(int i=0;i
for(int j=0;j
System.out.print(intA[i][j]+”\t”);
}
System.out.println();
}//(2)加强for循环
System.out.println(“\n=========================”);for(int[] arr:intA){ //int[]二维数组中元素的类型, arr迭代变量, intA二维组的名称
for(int i:arr){ //int,一维数组中元素的类型,i,迭代变量,arr,一维数组的名称
System.out.print(i+”\t”);
}
System.out.println();
}//(3)普通与加强for循环的混搭
System.out.println(“\n————————-“);for(int [] arr:intA){//加强for
for(int i=0;i
System.out.print(arr[i]+”\t”);
}
System.out.println();
}
System.out.println(“\n————————–“);for(int i=0;i
System.out.print(j+”\t”);
}
System.out.println();
}
}
}
View Code
4.对象数组存储表格数据
张三 19 男
李四 20 女
王五 28 男
数组存基本数据类型,也可以存引用数据类型
对象数组:使用数组存储对象(自定义对象)
public classPerson {private String name;//姓名
private int age;//年龄
private String gender;//性别//重写toString以打印想要的输出 否则只会打印对象的内存地址
@OverridepublicString toString() {//TODO Auto-generated method stub
return name+”\t”+age+”\t”+gender;//}public Person(String name, intage, String gender) {super();this.name =name;this.age =age;this.gender =gender;
}publicPerson() {super();
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public intgetAge() {returnage;
}public void setAge(intage) {this.age =age;
}publicString getGender() {returngender;
}public voidsetGender(String gender) {this.gender =gender;
}
View Code
1 public classTestArray {2 public static voidmain(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
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 classTestArrayCopy3 {2 public static voidmain(String[] args) {3 int [] arrA={11,22,33,44};//源数组
4 int [] arrB=new int[5];//目标数组
5
6 System.out.println(“数组拷贝之前”);7 for(intnum:arrB){8 System.out.print(num+”\t”);9 }10 //0 0 0 0 011 //拷贝
12 System.arraycopy(arrA, 0, arrB, 1, 2);13
14 System.out.println(“\n数组拷贝之后”);15 for(intnum:arrB){16 System.out.print(num+”\t”);17 }18 //0 11 22 0 0
19 }20 }
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132948.html原文链接:https://javaforall.cn