4.一维数组
一数维组
package com.atguigu.java;
/*
* 1.数组相关概念
* >数组名
* >数组元素
* >角标、下标、索引
* >数组的长度,元素的个数
*
* 2.数组的特点:
* 数组是有序的
* 数组属于引用数据类型的变量,数组的元素可以是基本数据类型,也可以是引用数据类型
* 创建数组对象会在内存中开辟一整块连续空间
* 数组长度一旦确定,就不能修改
*
* 3.数组的分类:
* 按照维度:一维数组、二维数组、……
* 按照数组元素:基本数据类型、引用数据类型
*
* 4.一维数组的使用
* 1)一维数组的声明和初始化
* 2)如何调用数组的指定位置的元素
* 3)如何获取数组长度
* 4)如何遍历数组
* 5)数组元素的默认初始化
* 6)数组的内存解析
*
*
*/
/*
* 1.数组相关概念
* >数组名
* >数组元素
* >角标、下标、索引
* >数组的长度,元素的个数
*
* 2.数组的特点:
* 数组是有序的
* 数组属于引用数据类型的变量,数组的元素可以是基本数据类型,也可以是引用数据类型
* 创建数组对象会在内存中开辟一整块连续空间
* 数组长度一旦确定,就不能修改
*
* 3.数组的分类:
* 按照维度:一维数组、二维数组、……
* 按照数组元素:基本数据类型、引用数据类型
*
* 4.一维数组的使用
* 1)一维数组的声明和初始化
* 2)如何调用数组的指定位置的元素
* 3)如何获取数组长度
* 4)如何遍历数组
* 5)数组元素的默认初始化
* 6)数组的内存解析
*
*
*/
1 public class ArrayTest { 2 public static void main(String[] args) { 3 4 //1。一维数组的声明和初始化 5 int num ;//声明 6 num = 10;//初始化 7 int num1 = 101;//声明和初始化合一 8 9 int[] ids;//声明 10 //静态初始化:数组的初始化和数组元素的赋值操作同时进行 11 ids = new int[]{10,11,13,14}; 12 13 //动态初始化:数组的初始化和数组元素的赋值操作分开进行 14 String[] name = new String[5]; 15 17 //2.如何调用数组的指定位置的元素:通过角标的方式调用 18 //数组的角标(索引)从0开始,到数组的长度-1结束。 19 name[0] = "王明"; 20 name[1] = "lisi"; 21 name[2] = "wangwu"; 22 name[3] = "aa"; 23 name[4] = "bb"; 24 25 //3.如何获取数组长度 26 System.out.println(name.length); 27 System.out.println(ids.length); 28 29 //4.如何遍历数组 30 for(int i = 0;i<name.length;i++) { 31 System.out.println(name[i]); 32 } 33 34 //5.数组元素的默认初始化 35 // 数组元素是整型:0 36 // 数组元素是浮点型:0.0 37 // 数组元素是char型:0或"\u0000",而非‘0’ 38 // 数据类型是boolean型:false 39 40 // 数据类型是引用数据类型:null 41 int[] arr = new int[4]; 42 for(int i = 0; i < arr.length; i++) { 43 System.out.println(arr[i]); 44 } 45 46 } 47 48 }
一维数组的内存解析(粗略)
![](https://img2018.cnblogs.com/i-beta/1949043/202002/1949043-20200226013612779-1011823291.png)
![](https://img2018.cnblogs.com/i-beta/1949043/202002/1949043-20200226013548359-546288823.png)
练习
1 package com.atguigu.exec; 2 import java.util.Scanner;//导包快捷键 ctrl+shift+o 3 /* 4 * 从键盘读入学生成绩,找出最高分,并输出学生成绩等级。 5 * >成绩>=最高分-10 等级为A 6 * >成绩>=最高分-20 等级为B 7 * >成绩>=最高分-30 等级为C 8 * >其余 等级为D 9 */ 10 public class ArrayDemo { 11 12 public static void main(String[] args) { 13 14 //1.使用Scanner,读取学生个数 15 System.out.println("请输入学生人数:"); //任何位置使光标换行:shift+回车 16 Scanner scan = new Scanner(System.in); //使光标在上面一行换行:ctrl+shift+回车 17 int number = scan.nextInt(); //可以scan.nextInt();+ctrl+1 18 19 //2.创建数组,存储学生成绩,动态初始化 20 int[] num = new int[number]; 21 22 //3.给数组中的元素赋值 23 System.out.println("请输入"+number+"个成绩"); 24 for(int i = 0;i < number;i++) { 25 num[i] = scan.nextInt(); 26 } 27 28 //4.获取数组中的元素的最大值 29 int max = num[0]; 30 for(int i = 1; i < number; i++) { 31 if(num[i]>max) { 32 max = num[i]; 33 } 34 } 35 System.out.println("最高分是:" + max); 36 //3.4 优化 37 /* 38 int max = num[0]; 39 System.out.println("请输入"+number+"个成绩"); 40 for(int i = 0;i < number;i++) { 41 num[i] = scan.nextInt(); 42 if(num[i]>max) { 43 max = num[i]; 44 } 45 } 46 */ 47 //5.根据每个学生成绩与最高分的差值,得到每个学生等级 48 for(int i = 0;i < number; i++) { 49 if((max-num[i]) <= 10) { 50 System.out.println("student "+i+" score is "+num[i]+" grade is "+"A"); 51 }else if((max-num[i]) <= 20) { 52 System.out.println("student "+i+" score is "+num[i]+" grade is "+"B"); 53 }else if((max-num[i]) <= 30) { 54 System.out.println("student "+i+" score is "+num[i]+" grade is "+"C"); 55 }else { 56 System.out.println("student "+i+" score is "+num[i]+" grade is "+"D"); 57 } 58 } 59 //视频老师 60 char level; 61 for(int i = 0;i < number; i++) { 62 if((max-num[i]) <= 10) { 63 level = 'A'; 64 }else if((max-num[i]) <= 20) { 65 level = 'B'; 66 }else if((max-num[i]) <= 30) { 67 level = 'C'; 68 }else { 69 level = 'D'; 70 } 71 System.out.println("student "+i+" score is "+ 72 num[i]+" grade is "+level); 73 } 74 } 75 } 76
虽不能至,心向往之