数组是相同类型的数据按顺序组成的一种引用数据类型
一维数组
声明
语法格式:
数据类型[] 数组名;
数据类型 数组名[];
数组名的命名要满足标识符和变量的命名规则
创建
语法格式一:先声明后创建
数据类型[] 数组名;
数组名=new 数据类型[数组长度];
语法格式二:声明的同时创建数组
数据类型[] 数组名=new 数据类型[数组长度];
注意:数组长度必须指定
数组在内存中的存储
数组会被分配连续的内存空间,数组名是一个对象,指向数组的首个元素,整型数组元素默认值为0,数组本身是一个对象
所有对象数组(如String类型)在创建时默认值都为null
float数组默认值都为0.0
初始化
声明数组的同时给数组赋值
数组的长度就是初始化时所给数组元素的个数
int[] arr={1,2,3,4,5};
元素的引用
语法格式:数组名[下标];(整体看作是一个变量)
注意:下标从0开始
长度
属性length表示数组的长度,如a.length
数组的应用
1.“floatArray数组的最后一个元素为:”+floatArray[floatArray.length-1]
int[] intArray;
intArray=new int[5];
//循环为整型数组赋值
for(int i=0;i<5;i++){
intArray[i]=i+1;
}
//循环输出整型数组中的元素
for(int i=0;i<5;i++){
System.out.print(intArray[i]+" ");
}
3.数组下标的越界
报异常(Exception),编译时正常,运行时异常
ArrayIndexOutOfBoundsException
//求整型数组的累加和
//定义整型数组
int[] a=new int[5];
Scanner sc=new Scanner(System.in);
//从键盘接收数据,为数组元素赋值
for(int i=0;i<a.length;i++){
System.out.println("请输入第"+(i+1)+"个元素:");
a[i]=sc.nextInt();
}
System.out.println("数组元素的内容为:");
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
//求数组元素的累加和
int sum=0;
for(int i=0;i<a.length;i++){
sum=sum+a[i];
}
System.out.println("数组元素的累加和为:"+sum);
5.
//求数组元素的最大值
//先假设首个元素为最大值
int[] a={34,23,78,56,31};
int max=a[0];
for(int i=1;i<a.length;i++){
if(max<a[i]){
max=a[i];
}
}
System.out.println(max);
增强型for循环(又叫foreach循环)
主要用于数组或集合的遍历
foreach循环应用:
int[] arr={1,2,3,4,5};
for(int n:arr)
System.out.println(n);
终止条件:将数组遍历一遍
如何对变量a,b的值进行交换?
int a=3,b=5;
int temp;
temp=a;a=b;b=temp;
冒泡排序
对一组整数按照从小到大的顺序进行排序
//冒泡排序
int[] a={34,53,12,32,56,17};
System.out.println("排序前的数组元素为:");
for(int n:a){
System.out.print(n+" ");
}
System.out.println();
int temp;
for(int i=0;i<a.length-1;i++){
//内重循环控制每趟排序
for(int j=0;j<a.length-i-1;j++){
//凑第一次循环的比较次数,然后依此递减
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
System.out.println("从小到大排序后的数组元素为:");
for(int n:a){
System.out.print(n+" ");
}
二维数组
声明和创建
//二维数组的声明
//三种形式
//声明int类型的二维数组
int[][] intArray;
//声明float类型的二维数组
float floatArray[][];
//声明double类型的二维数组
double[] doubleArray[];
//创建一个三行三列的int类型的数组
intArray=new int[3][3];
//声明数组的同时进行创建
char[][] ch=new char[3][5];
//创建float类型的数组时,只指定行数
floatArray=new float[3][];
System.out.println(floatArray[0][0]);会产生空指针异常
floatArray[0]=new float[3];//第一行有三列
floatArray[1]=new float[4];//第二行有四列
System.out.println(floatArray[0][3]);//数组下标越界
二维数组认为每一行都是一个一维数组
初始化
//二维数组的初始化
int[][] num={{1,2,3},{4,5,6},{7,8,9}};
System.out.println("num数组的行数为"+num.length);
System.out.println("num数组的列数为"+num[0].length);
2.
//循环输出二维数组的内容
for(int i=0;i<num.length;i++){
for(int j=0;j<num[i].length;j++){
System.out.print(num[i][j]+" ");
}
System.out.println();
}