Java_1_05

本文深入讲解Java数组的定义、初始化及常见操作,包括遍历、排序、动态扩展等,并介绍了多维数组的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组

数组定义

定义格式:

  • 数据类型[] 数组名 = new 数据类型[数组长度]; (动态初始化)
    • int[] arr = new int[5];
    • 变形:数据类型 数组名[] = new 数据类型[数组长度];
      • int arr[] = new int[5];
  • 数据类型[] 数组名 = new 数据类型[]{item1,item2,item3,…};(静态初始化)
    • int[] arr = new int[]{13,4,71,33,16};
  • 数据类型[] 数组名 = {item1,item2,item3,…};(静态初始化的简化版)
    • int[] arr = {13,4,71,33,16};

java 内存分配

  • 栈内存(Stack)
  • 堆内存(Heap)
  • 方法区
  • 本地方法栈
  • 寄存区

数组的常见操作

遍历

  • 标准 for 循环

  •   int[] a = {1,2,3,4,5};
      for(int i=0;i <a.length - 1;i++) {
      	System.out.println(a[i]);
      }
    
  • foreach 方式

      int[] a = {1,2,3,4,5};
      for(int i : a) {
      	System.out.println(i);
      }
    

取最值

	int[] arr = {1,2,3,4,5};
	int max = arr[0];
	for(int i = 1;i < arr.length;i++) {
		if(max < arr[i]) {
			max = arr[i];
		}
	}
	System.out.println(max);

倒序存放数组

让数组第一个元素与最后一个元素交换,第二个与倒数第二个交换…直到数组的一半为止。

	int[] arr = {1,2,3,4,5};
	int len = arr.length;
	for(int i = 0;i < len / 2;i++) {
		int temp = arr[i];
		arr[i] = arr[len-1-i];
		arr[len-1-i] = temp;
	}
	/*for(int i = 0,j = arr.length - 1;i++,j--){
		int temp = arr[i];
		arr[i] = arr[j];
		arr[j] = temp;
	}*/
	for(int i : arr) {
		System.out.println(i);
	}

拼接两个数组

定义第三个数组 C ,长度为另两个数组的长度之和,
然后将 A 赋值给 C 的前半部分,B 赋给后半部分。

	int[] a = {1,2,3,4,5};
	int[] b = {6,7,8,9,10};
	int[] c = new int[a.length + b.length];
	for(int i = 0;i < a.length;i++) {
		c[i] = a[i];
	}
	for(int j = 0;j < b.length;j++) {
		c[a.length + j] = b[j];
	}
	for(int k : c) {
		System.out.println(k);
	}

冒泡排序

	int[] arr = new int[] {32,12,53,72,49};
	for(int i = 0; i < arr.length - 1;i++ ) {
		for(int j = 0;j < arr.length - 1 - i;j++) {
			if(arr[j] > arr[j + 1]) {
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	for(int k : arr) {
		System.out.println(k);
	}

动态扩展

Java中数组是固定长度不能改变的,但实际运用中,经常需要我们动态地扩展数组以适应程序需求。
原理:

  • 定义两个数组A、B,B的长度为A的长度+1

  • 将A 的数组元素全部赋值给 B

  • 然后将 B 的地址 赋值给 A

  • 如此就实现了 数组A 的动态扩展

      int[] arr = {11,32,26,47};
      System.out.println("数组 arr 的初始长度为:" + arr.length);
      int[] arr2 = new int[arr.length + 1];
      for(int i = 0;i < arr.length;i++) {
      	arr2[i] = arr[i];
      }
      arr = arr2;
      System.out.println("数组 arr 扩展后的长度为:" + arr.length);
    

多维数组

二维数组

  • 数据类型[][] 数组名 = new 数据类型[一维数组的个数][一维数组中元素个数];
    • int[][] arr = new int[5][4];
  • 数据类型[][] 数组名 = new 数据类型[一维数组个数][];
    • int[][] arr = new int[3][];
  • 数据类型[][] 数组名 = {{元素1,元素2,元素3,元素4},{元素1,元素2,元素3},{元素1,元素2,元素3,元素4,元素5}};
    • int[][] arr = {{1,30,28,5},{21,4,33},{9,18,23,90}};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值