java中的数组

补漏

  • while语句和if语句,for语句同,可以不加{},直接while(i<10);

1. 定义数组

  • 分两个步骤:声明和初始化
  • 之所以能够分开写,是因为new关键字分配空间
	//1.定义数组
	int[] arr=new int[3];
	//声明
	int[] arr1;
	//初始化
	arr1=new int[2];
	//给元素赋值
	arr[0]=10;
	//输出数组名
	System.out.println(arr[1]);
	System.out.println(arr[0]);

2. 数组的其他两种定义格式

  • 注意:下面第一种定义格式,[]中不能加任何数字,原因是后面的{}已经表明具体长度是多少了,没必要画蛇添足。另外就是如果写上了和后面的长度有不一致,也会出现问题。
  • 下面的第二种方式,只能在声明的时候直接赋值,因为Java在底层有对应的处理机制,会动态的开辟空间。如果说初始化的时候直接赋值,而声明的变量是null,这样赋值是存在问题的
	//2.定义格式
	int[] arr=new int[]{1,2,3};
	//声明
	int[] arr1;		
	//初始化
	arr1=new int[]{2,3};
	//ArrayIndexOutOfBoundsException---数组下标越界异常
	//System.out.println(arr[3]);
	
	3.定义格式
	//在底层可以动态的开辟空间
	int[] arr={1,2,3};
	//声明
	int[] arr1;
	//初始化---没有开辟存储元素的空间
	arr1={3,4,5};

3. 数组的三种遍历方式

  • 普通循环
	int[] arr={2,4,8,2,9,0};
	//1.普通循环  操作循环
	//arr.length---数组长度
	for(int i=0;i<arr.length;i++){
		//System.out.println(arr[i]);
		arr[i]+=2;
	}
  • for增强
		//2.增强for循环---迭代器
		//(数组元素类型 变量名:要进行遍历的数组名)
		//增强for循环只能做遍历不能做其他操作
		for(int i:arr){
			//System.out.println(i);
			i+=2;
		}

		for(int i:arr){
			System.out.println(i);
		}
  • Arrays工具类
		//3.转成字符串输出
		System.out.println(Arrays.toString(arr));

4. 数组的扩容

class ArrayKuoRong{
	public static void main(String[] args) {
		//原数组
		int[] arr1={1,2,5,7};
		/*//新数组
		int[] arr2=new int[arr1.length/2];
		//数组的复制
		//(原数组,复制的起始下标,新数组,开始复制的起始下标,复制的元素的个数)
		System.arraycopy(arr1,0,arr2,0,arr1.length/2);
		//数组值赋值
		arr1=arr2;*/

		//
		arr1=Arrays.copyOf(arr1,arr1.length/2);
		
		//
		System.out.println(Arrays.toString(arr1));
		
	}
}

5. 二维数组

  • 存储的元素是一维数组的数组
  • 定义格式
  1. 数据类型[][] 数组名=new 数据类型[有几个一维数组][每个一维数组元素的个数];
int[][] arr=new int[2][3];
  1. 二维数组
    数据类型[][] 数组名=new 数据类型[有几个一维数组][];
    int[][] arr=new int[2][];//声明了两个一维数组
    //初始化
    arr[0]=new int[4];
    arr[1]=new int[]{2,3,4}
    arr[0]={1,2,3};//不可以
  2. 数据类型[][] 数组名={{元素值1,元素值2…},{元素值1,元素值2…}};(常用)
    int[] [] arr={{1,2,3},{3,4,5}};
    如果[]在数据类型的后面,随着数据类型修饰的变量一起去
    修饰,如果[]在变量的后面就只能修饰这个变量
  3. 解析二维数组原理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值