-
数组的基本概念
数组指的就是一组相关变量的集合。java中,数组属于引用型数据
声明并开辟数组
数据类型 数组名称[]=new 数据类型[长度]; 数据类型[]数组名称=new 数据类型[长度];
分步完成
声明数组: 数据类型 数组名称[]=null; 开辟数组: 数组名称=new 数据类型[长度];
定义数组:
package array; /** * 定义数组 */ public class Demo01 { public static void main(String[] args) { int data[]=new int[3]; data[0]=1; data[1]=2; data[2]=3; for(int x=0;x<data.length;x++){ System.out.println(data[x]+"、"); } } }
数组堆内存中保存的是一组信息,对象中堆内存保存的是属性
在数组的使用过程中首先是开辟新的数组,然后为数组内的每一个元素赋值,这种形式的操作属于数组动态初始化,它的操作特点是:先开辟数组空间,再为数组中的内容赋值,而在数组定义中还提供了静态初始化的操作,即数组定义的同时就设置好了相应的数据内容。
静态初始化格式如下:
数据类型 数组名称[]={值,值...};
数组类型 数组名称[]=new 数据类型[]{值,值,...}
-
二维数组
如果要在二维数组里面确定一个数据,需要行和列一起定位
动态初始化:
数据类型 数组名称[][]=new 数据类型{行的个数}{列的个数};
静态初始化
数据类型 数据名称[][]=new 数据类型[][]{{值,值,值},{值,值,l值}};
所谓的二维数组实际上就是多个一维数组变成一个大的数组,并且为每一个一维数组设置一个行号
二维数组的使用:
package array; /** * 二维数组 */ public class Demo05 { public static void main(String[] args) { //定义二维数组 int[][] data=new int[][]{{1,2,3},{4,5,6},{7,8,9}}; //遍历二维数组 //外层循环控制数列的行 for (int i = 0; i < data.length; i++) { //内层循环控制数列的列 for (int j = 0; j < data[i].length; j++) { System.out.print(data[i][j]+"/t"); } System.out.println();//换行 } } }
-
数组与方法参数的传递
既然数组内容可以进行引用传递,那么就可以把数组给方法中的参数,而如果一个方法要想接收参数,则对应的参数类型必须是数组
数组传递:
package array; /** * 数组和方法参数的传递 */ public class Demo06 { public static void main(String[] args) { //定义数组 int[] data=new int[]{1,2,3}; //调用方法 change(data);//引用传递,等价于:int temp[]=data; //遍历数组 for (int i = 0; i < data.length; i++) { System.out.print(data[i]+" "); } } /** * 此方法的主要功能是进行数组的改变操作,在本方法中会将数组中的每个元素内容乘2 */ public static void change(int[] temp){ for (int i = 0; i < temp.length; i++) { temp[i]*=2; } } }
-
数组的操作方法
数组复制
数组复制可以将一个数组的部分内容复制到另一个数组之中:
System.arraycopy(原数组名称,源数组复制开始索引,目标数组名称,目标数组复制开始索引,长度);
案例:
package array; /** * 数组的拷贝 * 也称数组的复制 */ public class Demo16 { public static void main(String[] args) { //定义两个数组 int[] dataA=new int[]{1,2,3,4,5,6,7,8}; int[] dataB=new int[]{11,22,33,44,55,66,77,88}; //数组复制 System.arraycopy(dataA,5,dataB,3,3); //输出数组 System.out.print("A数组为:"); print(dataA); System.out.print("B数组为:"); print(dataB); } //专门设置一个输出的方法 public static void print(int[] temp){ for (int i = 0; i < temp.length; i++) { System.out.print(temp[i]+","); } System.out.println();//换行 } }
数组排序
数组排序可以按照从小到大的顺序对基本数据类型的数组(int、double)进行排序
语法如下:
iava.util.Arrays.sort(数组名称);
案例:
package array; /** * 数组的排序 */ public class Demo17 { public static void main(String[] args) { //定义数组 int[] data=new int[]{3,5,6,7,4,9,0}; //数组排序 java.util.Arrays.sort(data); //输出 print(data); } //专门定义一个输出的方法 public static void print(int[]temp){ for (int i = 0; i < temp.length; i++) { System.out.print(temp[i]+","); } System.out.println();//换行 } }
对象数组
数组是引用类型,而类也同样是引用类型,所以如果是对象数组的话表示引用类型里面嵌套其他的引用类型
在之前使用的数组都属于基本数据类型的数组,但是所有的引用数据类型也同样可以定义数组,这样的数组称为对象数组
对象数组的动态初始化:
类名称 对象数组名称=new 类名称[长度];
对象数组的静态初始化:
类名称 对象数组名称=new 类名称[]{实例化对象,实例化对象,...};