目录
变量:存储数据的空间(装数据的容器),变量中只能存储一个数据
数组:存储数据的空间(装数据的容器),数组中可以存储多个相同类型的数据
1)标识符:数组的名称,取名原则与变量一样
2)数组元素:数组中存储的每一个数据称之为数组元素
3)元素下标:因为数组在内存中是连续的空间,所以会给数组里的元素按照顺序进行编号,编号
从0开始,我们把这个编号叫下标(索引)
4)元素类型:描述的是数组中的元素类型
声明数组: 数据类型[] 数组名; 或者 数据类型 数组名[];
- int[] nums;
- String[] strs;
分配空间:告诉你我这个数组里能装多少个元素(数据)
数组名 = new 数据类型[元素个数];
- nums = new int[5];
- strs = new String[3];
赋值:将数据存储到数组中
数组名[下标] = 数据;
- nums[0] = 99;
- nums[1] = 83;
- nums[2] = 78;
- nums[3] = 88;
- nums[4] = 66;
声明数组、分配空间合并写
数据类型[] 数组名 = new 数据类型[数组长度]; 或 数据类型 数组名[] = new 数据类型[数组长度]
声明一个长度为3的double类型的数组
double[] nums = new double[3];
赋值:通过数组名[下标]给元素赋值,如果没有给元素赋值,系统会给元素赋予一个默认值
声明数组、分配空间、赋值合并写
数据类型[] 数组名 = new 数据类型[]{数据1,数据2,...,数据n}; 或 数据类型 数组名[] = new 数据类型[]
{数据1,数据2,...,数据n};
注意:{}前面那个[]里不能写长度,写了就报错
声明一个长度为3的数组,并向数组里赋值 "hello" "java" "word"
String[] strs = new String[] { "hello", "java", "word" };
声明数组:分配空间、赋值合并写的简写方式
数据类型[] 数组名 = {数据1,数据2,...,数据n}; 或 数据类型 数组名[] = {数据1,数据2,...,数据n};
声明一个char类型的数组,并向数组里赋值 'a' 'b' 'c' 'd'
- char[] chs = { 'a','b','c','d'};
- System.out.println(chs[0]);
遍历数组:将数组中元素按照下标顺序依次输出
- Scanner sc = new Scanner(System.in);
- 上述赋值操作,可以使用循环来实现
- for(int i =0;i<4;i++){
- System.out.println("请输入数组里的第"+(i+1)+"个元素值:");
- nums[i]=sc.nextInt();
- }
- int[] nums = new int[4];
- for(int i = 0;i<4;i++){
- System.out.println("数组第"+(i+1)+"个元素是:"+nums[i]);
- }
- 遍历以下数组
- int[] nums = {11,23,45,6,78,96,88,73,62,12,10,36,55,99,45,66,19,64,13};
-
- //获取数组中元素的个数: 数组名.length;
- int length =nums.length;
- System.out.println("数组中元素个数:"+length);
-
- //遍历数组
- for(int i =0;i
- System.out.println(nums[i]);
- }
案例三:
根据班级人数来创建数组 将每个学生的成绩存入到数组中 求班级学生成绩总和 求班级
学生平均成绩
- Scanner sc = new Scanner(System.in);
-
- // 1)根据班级人数来创建数组:班级人数有多少个,数组的长度为就为多少
- System.out.println("请输入班级人数:");
- int num = sc.nextInt();
-
- // 根据班级人数来创建一个存放学生成绩的数组
- double[] scores = new double[num];
-
- // 声明一个变量sum用来累加所有学生的成绩
- double sum = 0;
-
- // 2)将每个学生的成绩存入到数组中
- for (int i = 0; i < scores.length; i++) {
- System.out.println("请输入第" + (i + 1) + "个学生的成绩:");
- scores[i] = sc.nextDouble();
- // 3)求班级学生成绩总和
- sum += scores[i];
- }
-
- // 4)求班级学生平均成绩
- double avg = sum / num;
-
- System.out.println("该班学生成绩总和:" + sum);
- System.out.println("该班学生平均成绩:" + avg);
增强for循环:
语法结构:
for(数据类型 变量名:数组名或集合名){
对变量进行操作的代码
}
执行规律:
将数组或者集合中的元素依次取出来存入到变量中,然后操作这个变量就等同于操作数组或者集合
中的数据
注意:
增强for循环的执行效率比普通for循环高
案例:
增强for 和普通for的比较
- int[] nums = { 11, 22, 33, 44, 55 };
-
- // 遍历数组
- System.out.println("-----普通for循环遍历数组-----");
- for (int i = 0; i < nums.length; i++) {
- System.out.println(nums[i]);
- }
-
- System.out.println("-----增强for循环遍历数组-----");
- for(int a : nums){
- System.out.println(a);
- }
-
- System.out.println("------------------------");
- for (int i : nums) {
- i+=100;
- System.out.println(i);
- }
案例:
有一个数列:8,4,2,1,23,344,12 循环输出数列的值, 循环输出数列的值,猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
- int[] num = {8,4,2,1,23,344,12};
-
- //循环输出数列的值
- for (int i : num) {
- System.out.println(i);
- }
-
- //求数列中所有数值的
- //声明一个变量sum用来累加数组中所有元素之和
- int sum = 0;
- for (int i : num) {
- sum+=i;
- }
- System.out.println("数组中所有元素之和为:"+sum);
-
- //猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
- Scanner sc = new Scanner(System.in);
- System.out.println("请任意输入一个整数:");
- int guess = sc.nextInt();
-
- for (int i : num) {
- if(i==guess){
- System.out.println("数组中包含你猜测的数据");
- break;
- }
案例:
猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数,如果包含此数,输出此数在数
组中的位置(下标),如果不包含此数,则输出数组中不包含此数 。有一个数列:8,4,2,1,23,344,12
- int[] num = { 8, 4, 2, 1, 23, 344, 12 };
-
- Scanner sc = new Scanner(System.in);
- System.out.println("请任意输入一个整数:");
- int guess = sc.nextInt();
-
- //声明一个变量,用来统计比较的次数
- int count = 0;
- for (int i = 0; i < num.length; i++) {
- //判断你猜测的数据在不在数组
- if(guess!=num[i]){
- count++;
- if(count==num.length){
- System.out.println("你猜测的数据不在此数组中");
- }
- }else{
- System.out.println("你猜测的数据在此数组中,下标为:"+i);
- //只要猜测的数据在数组中,后续就不需要再进行比较,退出整个循环
- }
- }