5、java中的数组

1、简介

数组是一种具有随机存取特性的数据结构,是内存上一段连续区域的表示,是实现顺序存储的基础,数组只能用于存储同一类型的数据。数组的长度在初始化时定义之后就不可更改,并且在初始化数组时必须指定数组的长度。

2、数组的声明和赋值

这里用一维数组为例,创建数组有以下两种方式,一是声明时直接赋值,而是先声明后赋值。

第一种:

Int []array = {1,2,3} ;//声明并给数组赋值,长度为3

第二种:

Int []array = new int[3];//声明一个长度为3的数组,这个时候在堆中已经开辟了空间,长度为3

array[0] = 1;

array[1] = 2;

array[2] = 3;//赋值

这里注意的是数组的下标是从0开始的,例如声明一个长度为3的数组,那么他的最后一个下标是2,当给下标大于2的元素赋值时就会报错。

3、内存分配

数组是引用数据类型,当声明一个长度为len数组时,就会在堆内存中开辟一段连续长度为len的区域,然后栈中的变量的值则存储的是指向数组第一个元素的地址,也就是下标为0的元素的地址。

现在用2中声明的数组来说名一下内存的分配情况,int []array = new int[3];这样创建一个数组时,在栈中则会开辟一个空间存储变量名array,在堆中开辟3块连续的并且每一块占用的空间是相同的空间,而array变量的值则是堆中3块连续空间的第一块空间的地址,以后不管是设置数组值还是获取数组值时都直接根据地址进行设置即可,例如这里声明的是int数组,那么每一个元素占4个字节大小的空间,则会在内存中开辟3块连续的并且每一块空间长度都是4个字节大小的空间,然后array的值是一个块空间的地址值,假如array=0x1234,那么array[0]=0x1234,array[1] = 0x1234+4*1=0x1238,这样便使得数组具有随机存取的特性,这也是数组为什么只能存储同一类型数据的根本原因。

基本内存分配情况如下图:

4、基本操作

对于数组的操作无非就是设置、获取、遍历、排序和求最值

设置值就不说了,说一下其他几个。

获取数组中的值,直接根据数组的下标获取即可,例如想获取array中第二个元素的值,则直接使用array[1]来获取即可。

遍历数组的值,遍历的概念就是将数组中的值挨个获取一遍,这个时候就可以使用循环语句来获取即可,这里说一下数组有一个属性length,可以获取数组的长度。

for(int i=0 ; i <array.length; i++){

    System.out.println(array[i]);//根据下标获取每一个值

}

给数组中的元素进行排序,实现数组排序的方式有很多算法,可以尝试着去了解一下,这里就不细说了(有一篇文章详细的介绍了排序算法),只要记住没有什么问题是不能通过使用一个中间层来解决的就可以了,java中提供了处理数组的工具类Arrays,其中的sort方法直接可以实现数组的排序

求最值的操作,这里先说一下,java已经提供了Arrays类来处理数组,开发时直接使用即可,这里简单的说一下实现的过程,就是借助一个临时变量,然后遍历每一个数组的元素,比较每一个元素,将每一次的较大值存放在临时变量中,当数组变量结束时临时变量便是最大值

int max = array[0];//假设最大值是array[0]

for(int i=1 ; i<array.length;i++){

     if(array[i] > max){

          max = array[i];

     }

}

System.out.println(“最大值是max=”+max);

5、二维数组

二维数组没什么好说的,二维数组就是一个每一个元素都是一维数组的一维数组,创建方式如下:

创建一个二维数组,他的长度是2,元素是长度为3的一维数组

Int [][]array = new int[2][3];//

或者:

Int [][]array = {{1,2,3},{1,2,3}};

对于二维数组的操作和一维数组相同,只是多一层循环而已,就是先处理二维数组的每一个元素,又因为每一个元素是一维数组,又要循环处理每一个元素。

需要自己动手去测试,动脑去思考。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值