本文介绍了在java开发中经常使用的数组,以及数组的使用方法,注意事项。
一.什么是数组
1. 数组:数组即是一堆逻辑上无序的元素的序列,用来存储多个相同类型的数据,数组可以看做是一个集合,其内部元素存储在一个连续的内存块当中,并通过索引(即数组中元素的下标)来访问。
2. 特点:
A. 数组中的元素数据类型都相同;
B. 各元素在内存中的存储是有先后顺序的;
C. 表示数组元素的时候,需要使用数组名和该元素在数组中的位置来表示;
3. 分类:
最简单的形式是一维数组,即数组中直接存储元素,如{1,2,3,4};其次是二维数组,在二维数组中的元素都是一维数组,如{{123},{456},{789}};再次意义上可以有更多维的数组。
二.Java中的数组
(以下示例中皆以整型一维数组 int array[] 为例)
1. 特点:
java中的数组满足数组的所有含义和特点;
2. 声明数组:
在java中,声明数组时有两种情况:有大小,或者无大小,同时在声明数组时,需要声明数组的数据类型,以及数组的维度,声明方式分为以下几种:
a. int array[] = {1,2,3};直接在声明数组的同时进行赋值;
b. int array[] ;声明数组未进行赋值操作;
c. Int array[] = new int[10];声明数组时定义了数组的大小;
3. 数组长度:
使用数组的 length 属性,可已查看数组的大小:
Int length = array.lenth;
4. 遍历数组:
在开发中,根据数组的特性,经常会通过循环来遍历数组,如for循环或forEach循环:
For循环,根据数组的小标进行遍历:for(int i=0;i<array.length;i++){System.out.println(array[i]);}
ForEach循环,根据数组的数据类型得到元素,进行遍历:
for(Integer data : array){
System.out.println(data);
}
3. 类型转换:
A. 数组转为Set集合:
使用java api 中Arrays 工具类进行转换为list,再转为set:Set<Integer> set = new HashSet<Integer>(Arrays.asList(array));
B.数组转为List集合:
第一种:遍历数组,向list中添加元素;
第二种,使用api java.util.Arrays进行转换:List<Integer> list = Arrays.asList(array);
6. java数组常用操作:
A. int数组转换为String:
String result =Arrays.toString(array);
B.判断数组是否包含元素:
使用数组的contains 方法进行判断,该方法返回值为boolean类型,如果包含该元素,返回值为true,否则返回false;
如:int array[] = {1,2,2,3,4,5};
array.contains(1)返回值为true;array.contains(6)返回值为false;
C.填充数组:
第一种可通过循环数组的下标(index),维数组的每一个位置进行赋值(array[index] = data);
第二种可以通过工具类Arrays进行填充,如:Arrays.fill(array,5),将array的每个位置都赋值为5.
D.复制数组:
第一种方法是直接指定新的数组:int array2[] = Arrays.copyOf(array,20),将数组array复制到array2中,同时指定array2的数组大小是20;
第二种方法是根据指定范围进行赋值,如:
Int array2[] = Arrays.copyOfRange(array,5,10);将array中第5位到第9位的元素复制到array2中。
E.比较数组:
通常使用Arrays.equals()方法进行比较,返回值为boolean类型,如Arrays.equals(array,array2);
F.数组排序:
在java中,通常可以通过循环,按照特定的业务逻辑进行排序,如果对元素没有特殊要求,则可以通过Array.sort()方法进行排序,如:Arrays.sort(array);对数组进行排序;
Arrays.sort(array,2,6);对数组的第2个元素到第5个元素进行排序。
三.Java中的数组与内存
在java中,若声明数组时直接进行赋值,则为数组分配的内存中直接存入数值;若声明数组时没有进行赋值,只说明了数组的大小size,则在数组的内存块中,有size个状态为null的内存块被占用;
当程序执行结束后,数组的有效长度如果变小,这时需要注意数组原先占用的内存块不会被jvm处理,如果这种情况比较多,则会发生内存泄漏,此时需要程序员在使用数组后,及时对无效的资源进行释放,即在数组的该元素为空,array[index] = null.
四.总结
在java中,数组是经常使用的技术,通过一个能够存储多个相同类型数据元素的容器来实现各种需求,同时在数组内部可以通过位置下标来快速所以数据,增加了java程序的可读性与健壮性;在使用数组的同时,也需要注意数组容易造成的内存泄漏等问题。