java基础:数组的定义与使用

数组

数组是一个引用类型,会涉及到内存的分配问题。但是在实际的开发过程中不经常使用,因为数组最大缺陷的存在: 长度固定

注:

  • 因为数组的长度固定,所以需要考虑它需要的最大容量,防止数组长度不够用;
  • 如果想要改变数组的容量,就要用到数组列表(ArrayList,叫做动态数组)或者向量(Vector)。这也是经常使用的,因为在实际开发过程中,需要对数组进行增加或删除等的操作。

但是对于数组,基础知识也是极其重要的。

一、数组的概念

数组是指一组相关类型的变量集合,这些变量可以按照统一的方式进行操作。

二、数组的实例化方式(动态初始化)

数组具有两种实例化方式:

  1. 声明并开辟数组:
数据类型[ ] 数组名称 =new 数据类型[长度];
或者
数据类型 数组名称[ ] =new 数据类型[长度]
  1. 分步实例化

第一步:声明数组:

数据类型 数组名称[ ]=null;
或者
数据类型[ ] 数组名称=null;

第二步:开辟数组空间

数组名称=new 数据类型[长度]

几点说明:

  • 数组的索引是从0开始的;
  • 动态初始化数组开辟空间之后,数组的每个元素都是其数据类型的默认值;
  • java提供了一种获得数组动态长度的方式:数组名称.length;

三、数组的实例化方式(静态初始化)

数组首先开辟空间(就是以上动态实例化的两种表达方式),然后使用数组的索引进行内容的设置,就是动态初始化的过程。

但是如果我们希望在定义数组的同时就为其赋值,就可以采用静态初始化来完成。

静态初始化有两种语法表达:

  • 简化格式:数据类型 数组名称[ ]={值,值。。。};
  • 完整格式:数据类型 数组名称[ ] =new 数据类型[ ]{值,值。。。};(一般采用此种

四、数组的引用传递

引用传递的本质就是:一块堆内存,可以被多个不同的栈内存所指向。

代码示例:

int data[]=new int[3];
data[0]=0;
data[1]=1;
data[2]=2;
int temp[]=null;
temp=data;//引用传递时不带“[]”
temp[0]=8;
temp[1]=9;
temp[2]=10;

画图解释:
在这里插入图片描述

四、二维数组

语法格式:数组名称 [ 行索引 ] [ 列索引 ]

两种初始化方式:

  • 数组的动态初始化:
    数据类型 对象名称 [ ] [ ]=new 数据类型[ ] [ ] ;
  • 数组的静态初始化:
    数据类型 对象名称 [ ] [ ]=new 数据类型[ ] [ ] {{值,值…}, {值,值…}, {值,值…}…};

五、java对数组的支持

  1. 数组的排序:java.util.Arrays.sort(数组名称);(默认是升序)
  2. 数组拷贝:就是将一个数组的一段内容去替换另一个数组的一段内容。
    方法:System.arraycopy(源数组名称,源数组开始索引,目标数组名称,目标数组开始索引,拷贝长度);

代码示例:

int data[]=new int[] {1,2,3,4,5,6,7,8,9};
int temp[]=new int[] {10,20,30,40,50,60,70,80,90};
System.arraycopy(temp,4,data,1,3);
printArray(data);//1,50,60,70,5,6,7,8,9

注:当然,对于数组的统计和数组排序等的操作,属于数据统计和算法分析的内容,后面再写。

猜你喜欢

转载自blog.csdn.net/weixin_41550144/article/details/86574053