3JAVA基础语法数组Word文档下载推荐.docx

上传人:b****6 文档编号:21935559 上传时间:2023-02-01 格式:DOCX 页数:16 大小:60.25KB
下载 相关 举报
3JAVA基础语法数组Word文档下载推荐.docx_第1页
第1页 / 共16页
3JAVA基础语法数组Word文档下载推荐.docx_第2页
第2页 / 共16页
3JAVA基础语法数组Word文档下载推荐.docx_第3页
第3页 / 共16页
3JAVA基础语法数组Word文档下载推荐.docx_第4页
第4页 / 共16页
3JAVA基础语法数组Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

3JAVA基础语法数组Word文档下载推荐.docx

《3JAVA基础语法数组Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《3JAVA基础语法数组Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

3JAVA基础语法数组Word文档下载推荐.docx

数组的角标越界异常

当访问到了数组中不存在的角标时,就会发生该异常。

NullPointerException空指针异常。

当一个引用型变量没有任何实体指向时,还在使用实体中的内容。

就会发生该异常。

System.out.println(arr);

//[I@c17164@前面代表一个一维数组@后面代表一个哈希值

1,数组是什么?

数组:

数组就是具有同一类型的一些数的一个集合。

2,数组有什么特点?

数组的特点:

必须明确数组的长度和数组的类型,以及数组带有角标,方便使用。

3,数组什么时候使用?

当在处理多个同类型的数据时候可以采用数组存储

4,java的内存(栈和堆)的特点?

栈:

存储都是局部变量(函数参数,函数内定义的变量,局部代码块中定义的变量),栈内存的变量没有初始化值。

变量一点使用完(作用域结束),随着函数的加载变量会在内存中开辟属于自己的空间。

一旦函数运行结束,就会在栈内存中自动释放。

先进后出,后进先出。

存储的是实体(数组和对象,只要是new的都在堆中)。

new关键字一出现都会在堆内存中分配实体空间。

堆内存中的所有变量都会有默认初始化值。

5,画出一个数组的内存分布图。

并用文字描述步骤。

内存分布图:

int[]arr=newint[3];

arr[1]=100;

内存加载说明:

当执行到int[]arr时。

首先在栈内存开辟一个以数组名为名的空间,这个空间的目的是存放一个堆内存中数组的内存地址。

此时这个空间中并没有存放任何值。

当执行到newint[3]时,会在堆内存中首先划分出一块数组内存区域,这个时候就有一个内存地址与之对应,这里假设0x0056。

然后将这个区域分成3个小空间分别代表数组的三个存储空间,他们一旦分配就会自动产生索引角标,同时也会自动初始化值,此时由于数组是int的所有初始化值为0.并将这个堆内存中的数组首地址赋值给栈内存的arr空间。

当赋值后,栈内存的arr数组名就能所引到堆内存中的数组存储区域。

此时整个数组的定义个空间分配结束。

当执行arr[1]=100时,就会将这个以100存放到数组角标为1的空间中,原来初始化的0被覆盖。

需要注意的是,一旦arr不再指向堆内存的数组存储区域时,这个数组同时也没有其他引用变量所有引用,那么堆内存中的这个数组存储区域将变成垃圾,等待JVM的垃圾回收器把它收走。

 

数组的简单操作、排序、最值、折半查找、查表法、数组内存分布图

1、数组的简单操作:

数组在定义的时候必须明确数组的类型和长度,并明确了数组中元素的内容。

为了方便获取数组中的元素个数的方式,可以使用数组实体一个属性。

length

使用方法为数组名.length

数组最常见的操作就是数组:

遍历。

其实操作数组的最终核心思想:

就是操作角标(索引)。

2、最值:

classArrayTest{

publicstaticvoidmain(String[]args){

int[]arr={3,6,8,1,88,22};

intmax=getMax(arr);

System.out.println("

max="

+max);

}

/*

定义一个功能完成获取数组中最大值的动作。

定义一个函数来体现。

1,确定结果:

整数数组中的最大值,int。

2,确定未知:

数组是未知的,参数列表中有一个参数,数组类型int[]

具体怎么功能细节如何实现呢?

思路:

1,对数组中的元素进行比较,将比较后比较大的值进行记录,并参与下一次比较。

当数组中的元素都比较完成后,最大值就已经被记录下来了。

2,每次比较的较大的值不确定,定义一个变量进行记录,该变量如何初始化呢?

只要初始化为数组中的任意一个元素即可。

3,应该让数组中的元素自动和该变量记录的元素进行比较。

所以可以使用遍历,获取出数组中的每一个元素。

4,当遍历到的元素比较变量中的记录的元素大,用该变量记录住更大的元素。

5,遍历结束后,变量中存储的就是数组中的最大值。

*/

publicstaticintgetMax(int[]arr){

//定义变量记录较大的值。

intmax=arr[0];

//初始化为数组中的任意一个元素。

for(intx=1;

x<

arr.length;

x++){

if(arr[x]>

max)

max=arr[x];

}

returnmax;

//继续获取数组最大值。

publicstaticintgetMax2(int[]arr){

intmaxIndex=0;

//初始化为数组中的一个角标。

arr[maxIndex])

maxIndex=x;

returnarr[maxIndex];

}

数组的各种操作:

classArraySort{

int[]arr=newint[]{3,5,7,8,9,5,3,1,3,4,67,7,8,12,8,98,9};

printArray(arr);

//intmax=getMax(arr);

//System.out.println("

//intmin=getMin(arr);

min="

+min);

//selectSortMaxToMin(arr);

//printArray(arr);

//niZhuan(arr);

//intindex=halfSearch2(arr,98);

index="

+index);

bubbleSort(arr);

getMax函数用于获取int数组的最大值,需要指明具体哪一个int数组

publicstaticintgetMax(int[]arr)

{

intmax=arr[0];

for(inti=0;

i<

i++)

{

if(arr[i]>

max)

{

max=arr[i];

}

getMin函数用于获取int数组的最小值,需要指明具体哪一个int数组

publicstaticintgetMin(int[]arr)

intmin=arr[0];

if(arr[i]<

min)

min=arr[i];

returnmin;

selectSortMaxToMin函数用于int数组的从大到小排序,需要指明具体哪一个int数组

publicstaticvoidselectSortMaxToMin(int[]arr)

arr.length-1;

for(intj=i+1;

j<

j++)

arr[j])

swap(arr,i,j);

}

selectSortMinToMax函数用于int数组的从小到大排序,需要指明具体哪一个int数组

publicstaticvoidselectSortMinToMax(int[]arr)

printArray函数用于int数组的打印,需要指明具体哪一个int数组

publicstaticvoidprintArray(int[]arr)

if(i<

arr.length-1)

System.out.print(arr[i]+"

"

);

else

System.out.println(arr[i]+"

\n"

halfSearch函数采用折半法(二分法)从int数组中查找一个指定的数在此数组中的角标位置,使用之前必须保证提供的数组已经是有序的数组,需要指明具体哪一个int数组

publicstaticinthalfSearch(int[]arr,intkey)

intmin,max,mid,index;

min=0;

max=arr.length-1;

mid=(min+max)/2;

while(min<

=max)

if(key>

arr[mid])

min=mid+1;

elseif(key<

max=mid-1;

elsereturnmid;

mid=(min+max)/2;

return-1;

publicstaticinthalfSearch2(int[]arr,intkey)

while(arr[mid]!

=key)

elsereturn-1;

returnmid;

swap函数用于交换数组中的两个数值,必须明确具体着两个数的角标

publicstaticvoidswap(int[]arr,inti,intj)

inttemp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

;

niZhuan函数用于把一个数组反转

publicstaticvoidniZhuan(int[]arr)

for(inti=0,j=arr.length-1;

j;

i++,j--)

swap(arr,i,j);

bubbleSort函数功能是用冒泡发对数组进行排序

publicstaticvoidbubbleSort(int[]arr)

for(inti=0;

arr.length-1;

for(intj=0;

j<

arr.length-i-1;

j++)

if(arr[j]>

arr[j+1])

{

swap(arr,j,j+1);

}

查表法完成进制转换:

classArrayTest

{

publicstaticvoidmain(String[]args)

toBin(-6);

System.out.println(Integer.toBinaryString(-6));

toHex(26);

toOctal(48);

//十进制--二进制

publicstaticvoidtoBin(intnum)

trans(num,1,1);

//十进制--八进制

publicstaticvoidtoOctal(intnum)

trans(num,7,3);

//十进制--十六进制

publicstaticvoidtoHex(intnum)

trans(num,15,4);

publicstaticvoidtrans(intnum,intbase,intoffset)

if(num==0)

System.out.println(0);

return;

//定义一个十六进制的元素的表。

char[]arr={'

0'

'

1'

2'

3'

4'

5'

6'

7'

8'

9'

A'

B'

C'

D'

E'

F'

};

//定义一个char类型元素的数组,用于存储每次获取到的十六进制值。

char[]chs=newchar[32];

intpos=chs.length;

while(num!

=0)

{

inttemp=num&

base;

chs[--pos]=arr[temp];

num=num>

>

offset;

pos="

+pos);

//打印数组内容。

for(intx=pos;

chs.length;

x++)

System.out.print(chs[x]);

System.out.println();

二维数组:

常见的二维数组的定义形式:

1、int[][]arr=newint[3][3];

2、int[][]arr=newint[3][];

//定义一个二维数组,明确了二维数组的长度,但是二维中的每一个一位数组没有明确

arr[0]=newint[3];

arr[1]=newint[2];

arr[2]=newint[5];

3、int[]arr[]=newint[3][3];

4、intarr[][]=newint[3][3];

5、int[][]arr={{1,3,5,6},{6,3,2},{1,2}};

什么时候使用二维数组:

当数组多了就可以采用二维数组来继续存储。

中括号随着类型定义对所有变量都起作用,如果中括号在变量后面只对当前的变量起作用。

classArray2Demo

{

//int[]arr=newint[3];

//数组中的数组:

数组中的元素还是数组。

//int[][]arr=newint[2][3];

//System.out.println(arr[0][1]);

//0

//System.out.println(arr[0]);

//[I@c17164

//System.out.println(arr);

//[[I@c17164

int[][]arr=newint[][];

//定义一个二维数组,明确了二维数组的长度,

//但是二维中每一个一维数组并没有明确。

//对二位数组中的每一个一维数组进行初始化。

arr[0]=newint[3];

arr[1]=newint[1];

arr[2]=newint[2];

System.out.println(arr);

//[[I@c17164

System.out.println(arr[0]);

//null

classArray2Demo2

//int[][]arr={{3,7,18,5},{3,6,4,8,9},{15,89}};

int[][]arr={{4,6,2,8},{1,9,3,2},{6,8,4,8}};

//System.out.println(arr.length);

//3

//System.out.println(arr[1].length);

//遍历二维数组中的所有元素。

大圈套小圈

for(intx=0;

x++)

intsum=0;

for(inty=0;

y<

arr[x].length;

y++)

//System.out.println(arr[x][y]);

sum+=arr[x][y];

System.out.println("

sum="

+sum);

String[]arr1=getMonth("

夏季"

arr1.length;

System.out.println(arr1[x]+"

publicstaticString[]getMonth(Stringstr)

String[]season={"

春季"

秋季"

冬季"

intindex=searchIndex(season,str);

String[][]month={{"

三月"

四月"

五月"

},{"

六月"

七月"

八月"

}};

returnmonth[index];

publicstaticintsearchIndex(String[]arr,Stringkey)

if(arr[x].equals(key))

returnx;

1,数组的操作基本思想?

数组:

数组就是一个容器,用来装元素,需要明确数组的类型和数组的长度。

数组就是把很多个变量放在一起的一个集合。

2,数组的常见的操作动作以及理解过程。

最值,排序,折半.

数组的基本思想:

数组最常用的操作动作:

存值和获取值,比如获取:

最值

排序,折半查找。

3,数组容器的应用场景?

什么时候使用容器:

一旦数据多,个数能确定就采用数组来存储。

4,必须掌握查表法,将查表法的思想写出来,并明确什么时候使用查表法。

表:

是个容器,表里面存在一定的对应关系。

查:

用一种对应关系去找另外一种对应关系。

编码表:

是生活中的一些事物对应的二进制数的一个序列。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1