java基础-数组

数组的动态初始化

  • 格式:数据类型[] 数组名 = new 数据类型[长度];
  • 给定数组的长度,有系统分配空间和初始值,数组长度一旦给定无法改变;
  • 数组本身是引用数据类型,数组内的元素可以是基本数据类型,也可以是引用数据类型();
  • 赋值:数组名[索引值:元素在数组中的序号,从0开始] = 要赋的值;
  • 取值:数组名[索引值];
	public static void main(String[] args) {
		int[] arr = new int[5];
		arr[0] = 1;
		arr[1] = 2;
		arr[2] = 3;
		arr[3] = 4;
		arr[4] = 5;
		System.out.println(arr[2]); //结果为3
	}

数组的静态初始化

  • 格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
  • 简写:数据类型[] 数组名 = {元素1, 元素2, 元素3…};
	public static void main(String[] args) {
		int[] a = new int[]{1,2,3,4,5};
		int[] b = {1,2,3,4,5};
		//遍历数组b
		for(int i = 0; i < b.length; i++) { //数组长度:数组名.length
			System.out.print(a[i] + " " );
		}
	}  //结果为:1 2 3 4 5

数组的内存分析

  • 栈:存储局部变量,方法的执行,没有初始值
  • 堆:new出来的东西,有初始值,堆的空间很大
    基本数据类型初始值:默认值
    引用数据类型初始值:null
	//形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。方法执行完毕会释放掉分配的空间,调用结束后便不能再使用形参
	//实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
	static int a = 5;
	public static void main(String[] args) {
		change(a);  //调用方法在栈中执行,执行完毕方法会释放掉分配的空间,同样形参被释放掉,因此实参内容不会改变
		System.out.println(a); //此处为定义的实参,结果为:5
		int[] arr = new int[5];
		String[] arr1 = new String[5];
		System.out.println(arr[0]); //结果为:0
		System.out.println(arr1[0]); //结果为:null
	}
	public static int change(int m) {
		return m += 2;
	}

案例

1、随机点名
		//点名系统
		//构建String类型的数组
		String[] string = new String[] {"1号", "2号", "3号", "4号", "5号", "6号", "7号", "8号", "9号"};
		//创建随机数
		Random random = new Random();
		//创建一个index索引值,使用随机数
		int index = random.nextInt(string.length-1);
		//点名
		System.out.println(string[index]);
2、遍历数组
		//遍历数组,按照如下格式输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
		int[] a = {1,2,3,4,5,6,7,8,9,0};
		System.out.print("[");
		for(int i = 0; i < a.length; i++) {
			if(i == a.length-1) {
				System.out.print(a[i] + "]" );
			}else {
				System.out.print(a[i] + ", ");
			}
		}
3、数组的工具类封装
	//下方这个例子是格式输出int类型数组,可以再写输出其他数据类型的工具类封装
	public static void printArr(int[] arr) {
		for(int i = 0; i < arr.length; i++) {
			if(arr.length == 1) {
				System.out.print("[" + arr[0] + "]");
			}else if(i == 0) {
				System.out.print("[" + arr[i] + ", ");
			}else if (i == arr.length-1) {
				System.out.print(arr[i] + "]" );
			}else {
				System.out.print(arr[i] + ", " );
			}
		}
	}
	//打印数组中的最大值和最小值
	public static void printMaxAndMin(int[] arr) {
		int max = arr[0];
		int min = arr[0];
		for(int i = 0; i < arr.length; i++) {
			if(arr[i] > max) {
				max = arr[i];
			}
			if(arr[i] < min) {
				min = arr[i];
			}
		}
		System.out.println("最大值:" + max);
		System.out.println("最小值:" + min);
	}
1、数组逆序
    //将遍历封装
	public static void bianLi(int[] arr) {
		System.out.print("[");
		for(int i = 0; i < arr.length; i++) {
			if(i == arr.length-1) {
				System.out.print(arr[i] + "]" );
			}else {
				System.out.print(arr[i] + ", ");
			}
	}
	}
	//数组逆序1
	public static void reverse(int[] arr) {
		for(int start = 0, end = arr.length-1; start < end; start++, end--) {
			int temp = arr[start];
			arr[start] = arr[end];
			arr[end] = temp;
		}
		bianLi(arr);
	}
	//数组逆序2
	public static void getReverse(int[] arr) {
		for(int i = 0; i < arr.length; i++) {
			int temp = arr[i];
			arr[i] = arr[arr.length-i-1];
			arr[arr.length-i-1] = temp;
		}
		bianLi(arr);
	}

二维数组

格式:

  • 数据类型[][] 数组名 = new 数据类型[m][n]; m:一维数组的个数,n:一维数组的内容
  • 数据类型[][] 数组名 = new 数据类型[m][];
  • 数据类型[][] 数组名 = new 数据类型[][]{{一维数组}, {一维数组}…}
  • 简写:数据类型[][] 数组名 = {{一维数组}, {一维数组}…}
		int[][] i1 = new int[3][5];
		int[][] i2 = new int[5][];
		int[][] i3 = new int[][] {{1,2,3,4,5}, {2,3,4,5,6}, {3,4,5,6,7}};
		int[][] i4 = {{1,2,3,4,5}, {2,3,4,5,6}, {3,4,5,6,7}};
		//二维数组的遍历
		for(int i = 0; i < i1.length; i ++) {
			for(int j = 0; j < i1[i].length; j++) {
				System.out.println(i1[i][j]);
			}
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值