标签:默认值 基础 turn 清除 数组 sys arc 引用 超出
一、数组的定义。
1、数组的含义:数组是一组具有相同数据类型的元素的有序集合。数组可以分为一维数组和多维数组。(数组是一个引用类型的容器,从0开始编号存储相同数据类型的数据。)
2、数组的定义语法格式:
(1)、格式一:数据类型 [ ] 数组名=new 数据类型[元素的个数或数组的长度];
例如:int[ ] arr=new int[3];//定义了一个整型数组,数组中有3个元素(数组长度为3)
附:数组名放在[ ] 前面也是可以的,即int arr[ ] =new int[3];//但一般不建议这么定义。
(2)、格式二:数据类型 [ ] 数组名=new 数据类型[ ]{元素1,元素2,元素3,......};
例如:int[ ] arr=new int[ ]{1,2,3,4,5};//直接给数组进行赋值,需要注意的是new int[ ] 的括号中不能够指定数组中存放元素的个数,因为我们不清楚后面定义的数组个数。如果写了元素个数,JVM虚拟机在运行的时候会报错。
(3)、格式三:数据类型 [ ] 数组名={元素1,元素2,元素3,......};
例如:int[ ] arr= {1,2,3,4,5};//属于直接赋值的方式
格式二和格式三也称静态初始化,就是在定义数组的同时就为数组的每个元素赋值。
注意:
a)arr(即数组名)是引用数据类型中的数组类型,arr存的是地址值。该变量必须指向一个有效的数组对象,如果该变量的值为null,arr不再指向堆内存中的数组,此时通过该变量访问数组中的元素会出现空指针异常(NullPointerException)。堆内存中数组被虚拟机视为垃圾,(虚拟机会启动垃圾回收机制)不定时间内最终被清除。
b)数组中元素最小的索引(下标、角标)是0,最大的索引是数组的长度-1.访问元素时超出了数组的索引范围会出现数组角标越界异常(ArrayIndexOutOfBoundsException)。在Java中,为了方便获得数组的长度,提供了一个length属性,在程序中可以通过“数组名.length”的方式来获得数组的长度,即元素的个数。
c)不同数据类型数组的元素都有默认初始化值,其中byte、short、int、long的默认初始化值为0,float和double类型的默认初始化值为0.0,char类型的默认初始化值为一个空字符,即"\u0000",boolean类型的默认初始化值为false,引用类型的默认初始化值为null,表示变量不引用任何对象。
代码示例演示:
输出结果为:
数组的长度为:3
数组的第一个元素为:0
数组的第二个元素为:0
数组的第三个元素为:0
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Demo.main(Demo.java:11)
//Exception in thread "main" java.lang.NullPointerException
at Demo.main(Demo.java:14)
二、数组的常见操作。
1、数组的遍历
在操作数组时,经常需要依次访问数组中的每一个元素,这种操作称作数组的遍历。由于数组中元素类型的相同,而且元素是有序的,从0开始到最大下标,所以常用循环的方式遍历数组。
代码示例演示:
输出的结果为:
arr[0]=5
arr[1]=12
arr[2]=21
arr[3]=9
arr[4]=7
5 12 21 9 7
2、数组的最值
在操作数组时,经常需要获取数组中元素的最值。
代码示例演示:
输出结果为:
max=21
最大值为:21
min=1
最小值为:1
3、数组的排序
在操作数组时,经常需要对数组中的元素进行排序,数组排序的方法有很多种,比如选择排序,冒泡排序,插入排序,希尔排序等。(这里就只简答介绍选择和冒泡排序。)
(1)、选择排序
每一次从待排序的数据元素中选取最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
代码实现:
(2)、冒泡排序
遍历要排序的数列,依次比较相邻两个元素,如果符合条件,把顺序错误的交换过来,让较大的数往下沉,较小的数往上冒。重复进行直到没有要交换的。
代码实现:
4、数组元素的查找(折半查找)
折半查找也称二分查找,假设表中元素按升序排列,将表中位置的元素与查找的值比较,如果二者相等,则查找成功。否则从中间将表分成前后两个部分,如果中间位置记录的元素大于查找的元素,则查前部分,否则查后部分,重复直到找到或表已查完。
优点是比较次数少,查找速度快,平均性能好;
缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
5、数组工具类(Arrays)
在java.util包中有一个Arrays工具类,该工具类包含操作数组的各种方法,如查找、排序、搜索等。
如使用Arrays实现数组排序:Arrays.sort(arr);该方法有函数重载,可以提供short、long等其他数据类型的排序。
实际中建议使用该方法,因为简单不容易错,但面试切勿这样写。
三、多维数组。
1、多维数组的含义:多维数组可以简单的理解为在数组中嵌套数组,即数组中的元素还是数组。在程序中比较常见的是二维数组。
2、二维数组的语法定义格式:
(1)、格式一:数据类型[ ][ ] 数组名=new [ 二维数组长度][一维数组长度 ];
(2)、格式二:数据类型[ ][ ] 数组名=new [ 二维数组长度][ ];
(3)、格式三:数据类型[ ][ ] 数组名=new [ ][ ]{{元素1,元素2,..},{元素1,元素2,..},{元素1,元素2,..}......};
或者 数据类型[ ][ ] 数组名={{元素1,元素2,..},{元素1,元素2,..},{元素1,元素2,..}......};
定义格式提醒:数组名可以放在数据类型后面,两个中括号之间以及两个中括号之后。
代码示范上述:
3、二维数组的遍历
二维数组的遍历同一维数组一样采用循环遍历,不同的是由于数组中还是数组,需要用到循环嵌套。
代码实现:
标签:默认值 基础 turn 清除 数组 sys arc 引用 超出
原文地址:http://www.cnblogs.com/stsinghua/p/6418524.html