Java中数组的使用

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);
·第一项:源数组 第二项:决定从源数组下标为几的元素开始拷贝
·第三项:目标数组 第四项:从目标数组的哪一个下标上开始烤
·第五项:从源数组拷几位

——数组的逆序


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++;
			}
	}





















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值