第八章笔记
数组
学习本章用到的单词:
array:数组
length:长度
sort:排序.种类
maximum:最大值
minimum:最小值
reference:参考,谈到,引用
info:信息,咨询
primitive:原始的,原语,早期的.
数组的基本元素
>标识符.首先,和变量一样,在计算机中,数组也要有一个名称,称为标识符,用于区分不同的数组.
>数组元素.当给出了数组名称,即数组标识符后,要向数组中存放数据,这些数据就称为数组元素.
>数组下标.在数组中,为了正确地得到数组的元素,需要对它们进行编号,这样计算机才能根据编号去存取,这个编号就称为数组下标.
>元素类型.存储在数组中的数组元素应该是同一数据类型,如可以把学员的成绩存储在数组中,而每一个学员的成绩可以用整形变量存储,因此称它的元素类型为整形.
int类型
80 | 3 |
90 | 2 |
100 | 1 |
70 | 0 |
scores
元素类型为int类型, scres(数组名称即标识符),3210(为下标)
对于上图作说明:
>数组只有一个名称,即标识符,如scores.
>数组元素在数组里顺序排列编号,该编号即为数组下标,它标明了元素在数组中的位置.
第一个元素的编号规定为0,因此数组的下标依次为0,1,2,3,4等.
>数组中的每个元素都可以通过下标来访问.由于元素是按顺序存储的,每个元素固定的对应一个下标,因此可以通过下标快速地访问到每个元素.例如scores[0]指数组中的第一个元素70,scres[1]指数组中的第二个元素100.
>数组大小(长度) 是数组可容纳元素的最大数量.定义一个数组的同时也定义了它的大小.如果数组已满但是还继续向数组中存储数据的话,程序就会出错,这称为数组越界.例如上图中数组最大值为3,如果数组的下标超过此大小,程序就会因错误而终止.
使用数组的步骤
1.声明数组
语法:
数据类型[]数组名;
或者
数据 数组名[];
以上两种方式都可以声明一个数组,数组名可以是任意合法的变量名.
声明数组就是告诉计算机该数组中数据的类型是 神马.例如:
int[] scres;//存储一个得分,数据类型为int
double height[];//存储一个高度.数据类型为double
String name[];//存储一个名字.数据类型为String
2,分配空间
简单来说就是用new关键字来给数组分配空间
语法:
数组名 = new 数据类型[数组长度];
eg:
scores = new int[10];//长度为10 的int类型数组
height = new double[10];//长度为10的double类型数组
name = new String[10];//长度为10的String类型数组
将以上两个步骤合并,就是在声明数组的同时给它分配空间:
数据类型[] 数组名 = new 数据类型[数组长度];
eg:
int scores[] = new int[10];//存储10个数据得分
注意!一旦声明了数组的大小就不能修改.即数组的长度是固定的,
3.赋值
分配空间之后就可以向数组里存放数据了,数组中每一个元素都是通过下标来访问的
语法:
数组名[下标值];
eg:向scores数组中存放数据
scores[0] = 10;
scores[1] = 20;
scores[2] = 30;
......
注意!在编写程序时数组和循环往往结合在一起使用,可以大大简化代码,提高程序效率,通常使用for循环遍历数组或给数组元素赋值.
在java中海提供了另外一种创建数组的方式,它将生命数组,分配空间和赋值合并完成.
语法:
数据类型[] 数组名={值1,值2,值3,.........值n};
eg:
int [] scores = {30.20.10,60.78};//创建一个长度为5的数组scores
也可以写为:
int[] scores = new int[]{30,20,10,60,78};
经验:值得注意的是直接创建并赋值的方式一般在数组元素中比较少的情况下使用,它必须一并完成.
注意!如果定义的数组是基本类型的数组,即int,double,char,boolean类型,在java中定义数组之后如果没有指定初始值,则依据数据类型的不同,会给数据赋一个默认值
int 初始值0
double 初始值0.0
char 初始值'\u0000'
boolean初始值false
常见错误
1.数组下标从0开始而不是从1开始
2.数组访问越界.如果访问数组元素时指定的下标小于0,或者大于等于数组的长度,double将出现数组下标越界异常.
数组应用
数组排序
语法:Arrays.sort(数组名);
Arrays是Java中提供的 一个类,而sort()是该类的一个方法.将数组名放在sort()方法的括号中,就可以完成对该数组的排序(升序).
求数组最大值
import java.util.Scanner;
public class BAXE {
public static void main(String[] args) { Scanner input = new Scanner(System.in); int [] scores = new int[5]; int max = 0; System.out.println("请输入五位学员的成绩:"); for(int i = 0;i<scores.length;i++){ scores[i] = input.nextInt(); } max = scores[0]; for(int i = 1;i<scores.length;i++){ if(scores[i]>max){ max = scores[i]; } } System.out.println("考试成绩最高分为:"+max); }
}
以上为求数组最大值的方法.
向数组中插入元素
import java.util.Scanner;
public class GG {
/** * @param args */ public static void main(String[] args) { int[]list = new int[6];//长度为6的数组 list[0] = 99; list[1] = 85; list[2] = 82; list[3] = 63; list[4] = 60; int index = list.length;//保存新增成绩插入位置 System.out.println("请输入新增成绩:"); Scanner input = new Scanner(System.in); int num = input.nextInt(); //找到新元素的插入位置 for(int i =0;i<list.length;i++){ if(num>list[i]){ index = i; break; } } //元素后移 for(int j = list.length-1;j>index;j--){ list[j]= list[j-1];//index下标开始的元素后移一个位置
} list[index]= num;//插入数据 System.out.println("插入成绩的下标是"+index); System.out.println("插入后的成绩信息是:"); for(int k =0;k<list.length;k++){//循环输出目前数组中的数据 System.out.println(list[k]+"\t"); }
}
}
以上是向数组中插入一个元素,但仍然会从大到小排列这些数据而不会混乱,
本章总结
>数组是可以在内存中连续存储多个元素的结构,数组中的所有元素必须属于相同的数据类型.
>数组中的元素通过数组的下标进行访问,数组的下标从0开始.
>数组可用一个循环为元素赋值,或者用一个循环输出数组中的元素信息.
>通过数组.length可获得数组长度.
>利用Arrays类提供sort()方法可以方便的对数组中的元素进行排序.