Java中数组的运用array
什么是数组?
数组可以看成是多个相同数据类型数据的组合,对这些数据的统一管理。
数组是对象?
数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员
变量。
·数组中的元素可以是任何类型,包括基本类型和引用类型。
·数组存放同一类类型的容器
·数组存在一维数组和二位数组和多维数组。
——数组的定义格式
·格式1:数据类型[] 数组名;(推荐)
·格式2:数据类型 数组名[];
·例如:int[] iArray、int iArray[]
·注意:这两种定义做完了,数组中是没有元素值的。
——数组的初始化
Java中的数组必须先初始化,然后才能使用。所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
——数组的初始化方式
*动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
*静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
——动态初始化
·初始化时只指定数组长度,由系统为数组分配初始值。
·格式:数据类型[] 数组名 = new 数据类型[数组长度]
·举例:int[] arr = new int[3];
——数组长度
·数组名.length 用于获取数组的长度
·数组长度其实就是数组中元素的个数。
·数组下标从 0 开始。因此 数组名[3],表示数组中的第 4 个元素,并非第 3 个元素
·数组下标的范围是 0 至 数组长度-1 ,如果越界访问,就会报错。
——静态初始化
·初始化时指定每个数组元素的初始值,由系统决定数组长度。
·格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
·举例:int[] arr = new int[]{1,2,3};
·其实这种写法还有一个简化的写法: int[] arr = {1,2,3};
——数组的拷贝
·System.arraycopy(myArray,0,hold,0,myArray.length);
·第一项:源数组 第二项:决定从源数组下标为几的元素开始拷贝
·第三项:目标数组 第四项:从目标数组的哪一个下标上开始烤
·第五项:从源数组拷几位
——两个常见的问题:
·ArrayIndexOutOfBoundsException:访问到了数组中的不存在的索引时发生。
·NullPointerException:数组引用没有指向实体,却在操作实体中的元素时
——二维数组
二维数组其实就是一个元素为一维数组的数组。
——二维数组定义格式
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组;
n表示每一个一维数组的元素个数
举例:
int[][] arr = new int[3][2];
定义了一个二维数组arr,这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2],每个一维数组有2个元素,可以通过arr[m][n]来获取,表示获取第m+1个一维数组的第n+1个元素。
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组,这一次没有直接给出一维数组的元素个数,可以动态的给出。
举例:
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3]
arr[2] = new int[1];
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}}
简化版格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
举例:
int[][] arr = {{1,2,3},{4,6},{6}};
——数组遍历(依次输出数组中的每一个元素)和二维数组遍历
一维数组要用for循环控制输出
什么是数组?
数组可以看成是多个相同数据类型数据的组合,对这些数据的统一管理。
数组是对象?
数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员
变量。
·数组中的元素可以是任何类型,包括基本类型和引用类型。
·数组存放同一类类型的容器
·数组存在一维数组和二位数组和多维数组。
——数组的定义格式
·格式1:数据类型[] 数组名;(推荐)
·格式2:数据类型 数组名[];
·例如:int[] iArray、int iArray[]
·注意:这两种定义做完了,数组中是没有元素值的。
——数组的初始化
Java中的数组必须先初始化,然后才能使用。所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
——数组的初始化方式
*动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
*静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
——动态初始化
·初始化时只指定数组长度,由系统为数组分配初始值。
·格式:数据类型[] 数组名 = new 数据类型[数组长度]
·举例:int[] arr = new int[3];
——数组长度
·数组名.length 用于获取数组的长度
·数组长度其实就是数组中元素的个数。
·数组下标从 0 开始。因此 数组名[3],表示数组中的第 4 个元素,并非第 3 个元素
·数组下标的范围是 0 至 数组长度-1 ,如果越界访问,就会报错。
——静态初始化
·初始化时指定每个数组元素的初始值,由系统决定数组长度。
·格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
·举例:int[] arr = new int[]{1,2,3};
·其实这种写法还有一个简化的写法: int[] arr = {1,2,3};
——数组的拷贝
·System.arraycopy(myArray,0,hold,0,myArray.length);
·第一项:源数组 第二项:决定从源数组下标为几的元素开始拷贝
·第三项:目标数组 第四项:从目标数组的哪一个下标上开始烤
·第五项:从源数组拷几位
——数组的逆序
for(int i=0;i<arr.length/2;i++){
int temp=0;
temp=arr[i];
arr[i]=arr[arr.length-i-1];
arr[arr.length-i-1]=temp;
}
——两个常见的问题:
·ArrayIndexOutOfBoundsException:访问到了数组中的不存在的索引时发生。
·NullPointerException:数组引用没有指向实体,却在操作实体中的元素时
——二维数组
二维数组其实就是一个元素为一维数组的数组。
——二维数组定义格式
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组;
n表示每一个一维数组的元素个数
举例:
int[][] arr = new int[3][2];
定义了一个二维数组arr,这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2],每个一维数组有2个元素,可以通过arr[m][n]来获取,表示获取第m+1个一维数组的第n+1个元素。
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组,这一次没有直接给出一维数组的元素个数,可以动态的给出。
举例:
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3]
arr[2] = new int[1];
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}}
简化版格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
举例:
int[][] arr = {{1,2,3},{4,6},{6}};
——数组遍历(依次输出数组中的每一个元素)和二维数组遍历
一维数组要用for循环控制输出
二维数组要用双重for循环控制输出
——数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组。
int[] oldArr={1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0 ,5};
int j=0;
//这个for循环计算出你传入的这个数组去掉0后的长度
for(int i=0;i<oldArr.length;i++){
if(oldArr[i]!=0){
j++;
}
}
// 定义数组的长度
int[] newArr=new int[j];
j=0;//不加会造成数组溢出
//将不为零的copy到新数组中去
for(int i=0;i<oldArr.length;i++){
if(oldArr[i]!=0){
newArr[j]=oldArr[i];
j++;
}
}