数组
一维数组
一维数组的使用:
数组是一个包含相同类型的一个集合。当我们需要许多相同类型的元素进行操作的时候,如果像之前一样一个一个定义,是会很麻烦的,所以我们就需要一个集合,这个集合里存放的是相同类型的数据,那么我们就把这个集合称为数组。
定义:
通用声明方式: 类型名 [ ] 数组名;
1、Int[] arr = {1,2,3};
2、声明的同时进行初始化方式
Int[] arr=new int[]{1,2,3};
3、先声明后初始化,使用的是系统分配的默认值0
Int[] arr=new int[100];//默认初始值0;
遍历:
1、for(int i=0;i<arr.length;i++){
打印下标};
2、 foreach:
for(int value:arr){
打印value};
3、 直接打印Array.toString(arr);
2和3 有局限,不能够修改单个元素,只能打印
拷贝:
一维数组拷贝,都是深拷贝
1、 for循环遍历
for(int i=0;i<arr.length;i++){
brr[i] = arr[i];}
2、 clone拷贝
brr = arr.clone();
3、 brr = Arrays.copyOf(arr,arr.length);
4、 System.arraycopy(arr,0,brr,0,arr.length);
(原始数组,从第几个考,新数组,拷贝到第几个,长度)
对于基本数据类型的一维数组:4种拷贝方式都是深拷贝
深浅拷贝:
深拷贝:不存在内存共享
浅拷贝:存在内存共享现象
二维数组
二维数组的使用:
通俗理解就是一维数组中每一个元素不再是一个具体类型的元素,而是一个一维数组。
定义:
Int[][] arr={{1,2,3},{4,5,6}}; //定义两行三列
Int[][] arr = new int[][]{{1,2,3},{4,5,6}}; //定义两行三列
Int[][] arr = new int[5][5];
交错数组:
Int[][] arr = new int[3][];
Arr[0]=new int[2];
Arr[1]= new int[5];
Arr[2]= new int[3];
遍历:
public class test {
public static void main(String[] args){
int[][] arr=new int[3][2];
for(int i=0;i<3;i++){
for(int j=0;j<2;j++){
arr[i][j] = i+j;
}
}
int[][] brr ={{1,2},{3,4},{5,6}};
int[][] crr = new int[][]{{1,2},{3,4},{5,6}};
for(int i=0;i<3;i++){
for(int j=0;j<2;j++){
System.out.print(arr[i][j]+"\t");
System.out.print(brr[i][j]+"\t");
System.out.print(crr[i][j]+"\t");
}
System.out.println();
}
}
}
拷贝:
package com.tulun.work;
import java.util.Arrays;
public class test {
public static void main(String[] args){
int[][] arr ={{1,2},{3,4},{5,6}};
int[][] brr = new int[3][2];
int[][] err = new int[3][2];
for(int i=0;i<3;i++){ //深拷贝
for(int j=0;j<2;j++){
brr[i][j] = arr[i][j];}}
System.out.println(arr[0]+"\t"+brr[0]);
int[][] crr = arr.clone(); //clone()浅拷贝
System.out.println(arr[0]+"\t"+crr[0]);
for(int i = 0;i<arr.length;i++){ //clone()深拷贝
crr[i] = arr[i].clone();}
System.out.println(arr[0]+"\t"+crr[0]);
int[][] drr = Arrays.copyOf(arr,arr.length); //Arrays.copyOf浅拷贝
System.out.println(arr[0]+"\t"+drr[0]);
for(int i=0;i<arr.length;i++){ //Arrays.copyOf深拷贝
drr[i] = Arrays.copyOf(arr[i],arr[i].length);}
System.out.println(arr[0]+"\t"+drr[0]);
System.arraycopy(arr,0,err,0,arr.length); //System.arraycopy浅拷贝
System.out.println(arr[0]+"\t"+err[0]);
for(int i=0;i<arr.length;i++){ //System.arraycopy深拷贝
System.arraycopy(arr[i],0,drr[i],0,drr[i].length);}
System.out.println(arr[0]+"\t"+drr[0]);
}
}