什么是数组?
数组是一组相同数据类型元素的集合。在Java中数组属于引用类型,即数组是一个对象。这里的数据类型不仅含八大基本数据类型,还包含引用数据类型,如数组里面可以存数组,数组里面可以存放字符串。
数组的作用?在程序中常常需要使用数组,利用循环可以对数组中的数据进行批量操作,大大提高了效率,十分方便。
如何使用数组?
数组的声明方式:
1.数据类型 [] 数组名称 eg:int [] a;
2.数据类型 数组名称 [] eg:int a [];
注:推荐使用第一种声明方式,因为可以方便看出变量a是一个整型数组类型。此时a并没有指向具体的一块堆内存,因此它的默认值为null.数组的初始化:
1.动态初始化:
数据类型 [] 数组名称 = new 数据类型 [长度];
注:new关键字的含义是在堆上开辟一块新的空间。只要有new关键字的出现,就意味着有新空间的开辟。
2.静态初始化:在定义数组的同时设置元素的值。
简化格式:
数据类型 [] 数组名称 = {值1,值2,…};
完整格式:
数据类型 [] 数组名称 = new 数据类型 [] {值1,值2,…};
匿名数组
利用完整格式,可以方便使用匿名数组。匿名数组就是没有名称的数组,本质是一块没有栈内存指向的堆内存。只能使用一次,用完就被回收了。
public class Test
{
public static void main(String[] args) {
int[] arr = init();
for(int i=0; i < arr.length;i++) { System.out.print(arr[i]+" “);
}
System.out.println(); }
public static int[] init() { return new int[]{1,2,3,4,5};//方法返回一个匿名数组
}
}
二维数组
概念:数组里的每一个元素都是是一个一维数组的数组被称为二维数组。
定义:
静态初始化:
int[][] arr1 = {{1,2,3},{1,2}};//简化格式
int[][] arr2 = new int[][] {{1,2,3},{4,5}};//完整格式123
动态初始化: int arr[][] = new int[2][3];//2 行个数,3,列个数1
注:其中列个数可以省略不写,因为Java中的二维数组存在不规则矩阵这样的数组,因此写了也没有多大意义。
利用增强型for循环(foreach循环)打印多维数组
格式:for(part1:part2){part3}
part2 是一个数组对象
part1:定义一个变量,变量的类型是数组中元素的类型。
part3:循环体
原理:将part2 数组中的元素值拷贝一份逐一赋给part1,然后利用part3循环体将值打印出来。因此该循环只能作为输出不能修改数组中元素的值。因为它仅是一份值得拷贝。
public class Arrays
{ public static void main(String[] args){
int[] arr=new int[10];
for(int i=0;i<arr.length;i++){
arr[i]=i; }
for(int i=0;i<arr.length;i++){ System.out.println(arr[i]);
}
System.out.println(”#--------------#"); //foreach循环:用于读取数组元素的值,不能修改元素的值 for(int m:arr){ System.out.println(m); } }}
数组常用操作
Java中提供了很多对数组操作的方法可以方便得实现对数组的各种操作。
1.数组长度: 数组名.length
2.数组排序: java.util.Arrays.sort(数组名) 升序
3.数组扩容:java.util.Arrays.(数组名称,新数组长度)(这个很像C语言中的realloc函数)。
4.在数组中查找指定元素:Arrays.binarySearch(数组,指定元素)。(看名字像是二分查找实现的)。
5.数组拷贝:System.arraycopy(源数组名称,源数组开始点,目标数组 名称,目标数组开始点,拷贝长度)。
注释:部分来源网络,总结学习过程中的知识点