完整word版数组的定义及使用Word文件下载.docx
- 文档编号:15737962
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:27
- 大小:2.39MB
完整word版数组的定义及使用Word文件下载.docx
《完整word版数组的定义及使用Word文件下载.docx》由会员分享,可在线阅读,更多相关《完整word版数组的定义及使用Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
所有的开发之中都一定要使用到数组,但是数组没有讲解的这么复杂。
之所以本次要讲解的比较多,主要是为了防止笔试中出现的问题。
3.1、数组的基本概念
数组指的是一组相关变量的集合。
如果说现在要求你定义100个整型变量,那么按照最原始的方式则肯定这样定义:
inti1;
inti2;
...
inti100;
这种操作可以实现要求,但是这些变量的关联实在是太麻烦了。
为此在开发之中可以利用数组来解决这一问题。
在Java中数组属于引用数据类型,既然是引用数据类型就牵扯到内存的关系。
对于数组的定义语法有以下两种形式:
·
声明并开辟数组:
数据类型数组名称[]=new数据类型[长度];
数据类型[]数组名称=new数据类型[长度];
分步完成:
|-声明数组:
数据类型数组名称[]=null;
数据类型[]数组名称=null;
|-开辟数组:
数组名称=new数据类型[长度];
当数组开辟空间之后那么就可以采用“数组[索引]”的形式进行数组的访问,但是需要注意的是,如果现在数组的长度为3,那么索引的范围:
0~2(一共3个元素)。
如果操作中超过了数组的允许索引范围,则程序在运行过程之中会出现“ArrayIndexOutOfBoundsException”(数组索引超出绑定异常,数组越界)。
以上的操作属于数组的动态初始化,动态初始化的特点,是数组开辟空间之后,数组中每个元素的内容都是其对应数据类型的默认值。
范例:
定义数组
publicclassArrayDemo{//程序必须有类
publicstaticvoidmain(Stringargs[]){
intdata[]=newint[3];
//开辟了一个data数组,长度为3
System.out.println(data[0]);
System.out.println(data[1]);
System.out.println(data[2]);
}
}
数组的赋值操作
data[0]=10;
//为数组赋值
data[1]=20;
data[2]=30;
但是现在数组本身是一种顺序式的结构,所以在进行数组内容输出的时候,往往可以采用循环的方式完成。
由于数组的长度是固定的,所以只要是进行数组的输出那么都会考虑使用for循环,这里面就牵扯到了一个数组长度的取得,在Java中可以使用“数组对象.length”属性取得。
数组输出
System.out.println(data.length);
for(intx=0;
x<
data.length;
x++){
System.out.print(data[x]+"
、"
);
}
3.2、数组的引用分析
引用数据类型的分析过程几乎都是一样的,所以数组的引用分析其本质也是一样的,与对象的流程是相同的,以下面的代码为例。
以上的流程与普通对象本质上是没有什么区别的,唯一的区别是在于普通的类对象是保存属性,利用属性名称来操作,但是数组保存的是一组内容,利用索引来操作。
那么既然此关系可以弄明白,所谓的分步的操作也就一样的过程。
分步实例化数组对象
intdata[]=null;
//只有声明的时候加上“[]”
data=newint[3];
那么现在如果此关系可以明白的话,就意味着可以进行数组的引用操作了。
引用的本质同一块堆内存空间被不同的栈内存所指向。
数组的引用操作
inttemp[]=data;
//引用操作
temp[0]=100;
//修改数据
还是通过内存关系图来进行操作描述。
3.3、数组的静态初始化
以上是针对于数组的动态初始化操作讲解的,动态初始化操作的特点在于其只能够在开辟数组空间之后进行数组内容的赋值,如果现在希望数组开辟之后就可以存在明确的内容,那么则可以使用数组的静态初始化,而语法有如下两种:
第一种:
简化型
数据类型数组名称[]={值,值,...};
数据类型[]数组名称={值,值,...};
第二种:
完全型(推荐使用)
数据类型数组名称[]=new数据类型[]{值,值,...};
数据类型[]数组名称=new数据类型[]{值,值,...};
使用数组的静态初始化
intdata[]=newint[]{10,20,30};
//数组的静态初始化
判断某一个数字是否在数组中存在?
最简单的做法是进行for循环操作,一次与每一个数组中的内容进行相等比较。
intsdata=11;
//要查找的数据
booleanflag=false;
//保存查找结果,如果找到了修改为true
intdata[]=newint[]{10,20,30,11,22,33};
if(data[x]==sdata){//现在已经查找到了内容
flag=true;
break;
//退出循环
}
if(flag){
System.out.println("
该数据已经查找到!
"
}else{
该数据没有查找到!
但是严格来讲现在这样的代码性能并不好,因为它需要将数组中的每一个元素都进行判断。
面试题:
请解释什么叫二分查找法(折半查找法)
二分查找法的重要支持:
数组中的数据必须是有序的。
intsdata=161;
intdata[]=newint[]{10,20,30,40,50,60};
System.out.println(search(sdata,data));
publicstaticbooleansearch(intsdate,int[]data){
System.out.print(java.util.Arrays.toString(data)+"
len="
if(data.length==1){
returnsdate==data[0];
intlen=data.length/2;
//012=1、01=1
System.out.println(len+"
,"
+(sdate==data[len]));
if(sdate>
data[len]){//右边,取出新的数组数据
int[]temp=null;
if(data.length%2==0){
temp=ne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 数组 定义 使用