JAVASE(10数组)

本文详细讲解了一维数组的定义、初始化、存储、遍历、拷贝和扩容,以及二维数组的定义、初始化、内存结构。通过实例演示了如何使用for和foreach遍历,以及多种数组拷贝方法。深入剖析了数组在内存中的布局,适合初学者理解数组原理。

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

一.一维数组

数组是一种数据结构,用来存储同类型的集合

1.一维数组的定义和初始化

一维数组通用的声明方式:类型名[] 数组名;

  1. 先声明后初始化:
int[] arr;
arr=new int[5];
//数组中包含 5 个元素,每一个元素的初始值都是系统分配的int 类型的默认值 0
  1. 声明的同时进行初始化:
(1)int[] arr=new int[]{1,2,3,4,5};
//指定元素初始值
(2)int[] arr=new int[5];
//指定元素个数,每一个元素的初始值都是系统分配的int 类型的默认值 0

注:一维数组的错误定义方式

(1)int[] arr=new int[];
//error:定义的时候需要指定元素个数或者指定元素初始值
(2)int[] arr=new int[5]{1,2,3,4,5};
//error:指定元素个数和指定元素初始值操作不能同时进行

2.一维数组的存储

一维数组的内存结构
在这里插入图片描述

例题

int[]arr={1,2,3,4,5};
int[]brr=new int[arr.length+1];   
brr[5]=6;
arr=brr;
System.out.println(arr[5]);
  • 运行结果: 6
  • 分析如图

在这里插入图片描述

3.一维数组的遍历

3.1 for 遍历

for(int i=0;i<arr.length;i++){}
在这里插入图片描述

3.2 for each 遍历

for each语句: for(int a:arr){}

注:for(int value : arr)的意思就是说,遍历arr数组,每次遍历的整型用i 这个变量去接收。

for(int value:arr){}
 //相当于:
int value=0; //用于接收arr数组中的某一个对象
for(int j = 0;j<arr.length;j++)
{
value = arr[j];
}

在这里插入图片描述

  1. Arrays .toString()
    在这里插入图片描述

4.一维数组的拷贝

4.1 数组名.clone();

在这里插入图片描述
在这里插入图片描述

4.2 Arrays.copyof(原数组,拷贝数组长度);

在这里插入图片描述
在这里插入图片描述

4.3 System.arraycopy(src, srcPos, dest, destPos, length);

注:System.arraycopy(src(原数组), srcPos(原数组拷贝的起始位置), dest(目标数组), destPos(从目标数组的此位置开始拷贝), length);

在这里插入图片描述

4.4 for 循环进行拷贝

在这里插入图片描述

5.一维数组的扩容

在这里插入图片描述

二.二维数组

二维数组:一维数组中每一个元素类型不再是一个基本数据类型的元素,而是一个引用数据类型,分布指向一个一维数组在堆上存储的地址。

1.二维数组的定义和初始化

(1)int[][] arr={{1,2,3},{4,5,6},{7,8,9}};
(2)int[][] arr=new int[3][3]; 
(3)int[][] arr={new int[3],new int[3],new int[3]};
(4)int[][] arr=new int[3][];//相当于定义了二维数组里的行数
arr[0]=new int[3];//分别定义每一行中的存放的元素类型,也是一个一维数组
arr[1]=new int[3];
arr[2]=new int[3];

二维数组中每一行的元素个数不一定相等,每一行元素个数不相等二维数组就称为交错数组

例:

 public class TestDemo {
 public static void main(String[] args) {
  int[][] arr = new int[3][];
  arr[0] = new int[4];
  arr[1] = new int[2];
  arr[2] = new int[8];
  for(int i=0;i<arr.length;i++){
     for(int j=0;j<arr[i].length;j++){
    System.out.print(arr[i][j]);
   }
  System.out.println();
  }
 }
}

在这里插入图片描述

2.二维数组的存储

二维数组的内存结构
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值