数组是指一组数据的集合,数组中的每个数据称为元素。在Java中,数组也是java对象。数组中的元素可以是任意类型(包括基本类型和引用类型),但同一个数组里只能存放类型相同的元素。
(1)声明一个数组类型的引用变量,简称为数组变量;
(2)用new语句构造数组的实例。new语句为数组分配内存,并且为数组中的每个元素赋予默认值。
(3)初始化,即为数组中的每个元素设置合适的初始值。
1、创建数组对象
int [] scores=new int[100];
new语句执行步骤:
1.1 在堆区为数组分配内存空间。上面创建了int类型的包含100个元素的数组,每个元素都是int类型,占4个字节,因此整个数组对象在内存中占400个字节。
1.2 为数组中的每个元素赋予默认值。以上int数组每个元素都是int类型,因此默认值是0,boolean类型数组默认值false,引用类型默认值null;
1.3 返回数组对象的引用。
2.多维数组
比如说宾馆的房间,可以用二位数组表示房间客人信息:
String[][] rooms={ {"TOM","list",null}, {"sa",null}, {null,"asf"} }; public void method2(){ //System.out.println(rooms[0][1]); for(int i=0;i<rooms.length;i++){ for(int j=0;j<rooms[i].length;j++){ System.out.println(rooms[i][j]); } } } public static void main(String[] args) { Rooms2 r=new Rooms2(); r.method2(); }
创建多维数组时,必须按照从低维到高纬的顺序创建每一维数组,例如以下是非法的:
int [][][] b=new int[2][][3]; //编译出错
2.1数组冒泡排序
package package14_6; public class ArraySorter { /** * 冒泡排序 */ public static void bubbleSort(int[] array) { for(int i=0;i<array.length-1;i++){ for(int j=0;j<array.length-i-1;j++){ if(array[j]>array[j+1]){ int temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } print(i+1,array); } } public static void print(int time,int[] array){ System.out.println("第"+time+"趟排序"); for(int i=0;i<array.length;i++){ System.out.print(array[i]+" "); } System.out.println(); } public static void main(String[] args) { int[] array={4,5,32,1,63}; bubbleSort(array); } }
2.2数组二叉查找
package package14_6; public class ArrayFinder { public static void print(int[] array,int middle){ for(int i=0;i<array.length;i++){ System.out.print(array[i]); if(i==middle){ System.out.print("*"); } System.out.print(" "); } System.out.println(); } /** * 二叉查找法 */ public static int indexof(int[] array,int value){ int low=0; int high=array.length-1; int middle; while(low<high){ middle=(low+high)/2;//计算中间元素的索引 print(array,middle);//打印数组用于跟踪查找过程 if(array[middle]==value)return middle; if(value<array[middle]){ high=middle; }else{ low=middle; } } return -1; } public static void main(String[] args) { int [] array={2,23,231,312,4323,12311}; int value=4323; indexof(array, value); } }