今天遇到一道题求许多个数的平均值,按照之前的方法先定义许多个数,然后再求平均值,这样感觉很麻烦。这里就引入一种集合来解决这个麻烦——数组。
数组:用于储存多个相同类型数据的集合。
上图中介绍了数组的要素,注意下标是从零开始的,下面来看一下怎么使用数组。
同基本数据类型一样,需要先定义数组,然后再初始化数组,最后使用数组。
/*
* 数组
*/
public class IntArray {
public static void main(String[] args) {
// TODO Auto-generated method stub
//数组定义 数组类型[]数组名;
int[] array; //int array[]; 这种定义方式不常用
//动态初始化数组
int[] intArray=new int[3]; //[]里面表示要存放数据的个数
//赋值
intArray[0]=1;
intArray[1]=2;
intArray[2]=3;
//静态初始化数组
int[] intArray1={1,2,3,4}; //创建数组的同时为每个元素赋值
int len=intArray1.length; //求数组长度
System.out.println(len);
int[] arr = new int[]{1,2,3};
}
}
我们创建了数组,并且把数据存入到了数组中,接下来我们看一下怎么获取数组中的数据以及数组的应用。
/*
* 遍历数组以及数组的应用
* 因为数组中每个元素对应一个索引值且它们是有序的
* 所以我们可以通过for循环来遍历数组
*/
public class GetArray {
public static void main(String[] args) {
// TODO Auto-generated method stub
//遍历数组
int[] intArray={1,2,3,4};
int len=intArray.length;
System.out.println("遍历数组");
for(int i=0;i<len;i++){
System.out.print(intArray[i]+" ");
}
System.out.println();
//逆序打印数组 从最后一个元素开始遍历
System.out.println("逆序打印数组");
for(int i=len-1;i>=0;i--){
System.out.print(intArray[i]+" ");
}
//逆置数组 逆置和逆序打印不一样。
//逆置是使用一个方法将第一个元素和最后一个元素交换,以此交换。
System.out.println();
System.out.println("逆置数组");
for(int start=0,end=len-1;start<=end;start++,end--){
int temp=intArray[start];
intArray[start]=intArray[end];
intArray[end]=temp;
}
for(int i=0;i<len;i++){
System.out.print(intArray[i]+" ");
}
//求几个同学的平均值
System.out.println();
double[]score={90,96,95,86,82,88,96};
int length=score.length;
double sum=0;
for(int i=0;i<length;i++){
sum=sum+score[i];
}
System.out.println("学生平均成绩为"+sum/length);
}
}
数组中常见错误(一维数组)
1.int[] arr= new int(3);
2.int[] arr = new int[];
3.int[] arr = new int[3]{1,2,3}
4.int[] arr; arr={1,2,3} //不能这样使用 应该 arr = new int[3];
数组的长度不能改变:为什么?
因为数组再内存空间中的结构是一块连续的内存空间
二维数组的声明---包含:规则二维数组,不规则二维数组 (不管是哪种,初始化时第一个值必须确定)
联想学习:
1.javascript中的数组:js中的数组长度不固定,数据类型没有要求,长度是最后一个有值的
2.List集合 实现类 arraylist,linkedlist arraylist底层是数组实现,默认长度是10,第一次扩容是1.5倍,第二次是15的50%;linkedlist底层是链表实现