Java-Day06 数组

一、数组的概述
* 1.数组的理解:数组(Array),是多个相同数据按照一定顺序排列的集合,并使用一个名字命名。
* 并通过编号的方式对这些数据进行统一管理。
*
* 2.数组相关的概念:
* 》数组名
* 》元素
* 》角标、下标、索引
* 》数组的长度:元素的个数
*
* 3.数组的特点:
* 1)数组的特点:数组是有序列的。
* 2)数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型。
* 3)创建数组对象会在内存中开辟一整块连续的空间。
* 4)数组的长度一旦确定,就不能修改。
*
* 4.数组的分类:
* ①按照维数:一维数组、二维数组......
* ②按照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
*
* 5.一维数组的使用
* ①一维数组的声明和初始化
* ②如何调用数组是定位置的元素
* ③如何获取数组的长度
* ④如何遍历数组
* ⑤数组元素的默认初始化值

 1 public class ArrayTest {
 2 
 3     public static void main(String[] args) {
 4 
 5         //1.一维数组的声明和初始化
 6         int num;//声明
 7         num = 10;//初始化
 8         int id = 1001;//声明+初始化
 9         
10         int[] ids;//声明
11         //1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
12         ids = new int[] {1001,1002,1003,1004};
13         //1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
14         String[] names = new String[5];
15         
16         //错误的写法:
17         //int[] arr1 = new int[];
18         //int[5] arr2 = new int[];
19         //int[] arr3 = new int[3] {1,2,3};
20         
21         //总结:数组一旦初始化完全,其长度就确定了。
22         
23         //2.如何调用数组是定位置的元素:通过角标的方式调用。
24         //数组的角标(或索引)从0开始的,到数组的长度-1结束。
25         names[0] = "MinyX";
26         names[1] = "NauyY";
27         names[2] = "Linux";
28         names[3] = "Window";
29         names[4] = "Macpro"; //charAt(0)能够获取到M
30     //    names[5] = "Macpro1"; 异常:超出角标。
31         
32         //3.如何获取数组的长度
33         //属性:length
34         System.out.println(names.length);//长度5
35         System.out.println(ids.length);
36         
37         //4.如何遍历数组
38 //        System.out.println(names[0]);
39 //        System.out.println(names[1]);
40 //        System.out.println(names[2]);
41 //        System.out.println(names[3]);
42 //        System.out.println(names[4]);
43         for(int i = 0;i < names.length;i++) {
44             System.out.println(names[i]);
45         }
46         
47     }
48 }
 1 /* 
 2  * ⑤数组元素的默认初始值
 3  *         > 数组元素是整型: 0
 4  *         > 数组元素是浮点型: 0.0
 5  *         > 数组元素是char型: 0[ASCII码为0的]
 6  *         > 数组元素是boolean型:false
 7  * 
 8  *         > 数组元素是引用数据类型;null 
 9  * 
10  * ⑥ 数组的内存解析
11  */
12 public class ArrayTest1 {
13     public static void main(String[] args) {
14         //5.数组元素的默认初始化值
15         int[] arr = new int[4]; 
16         for(int i = 0;i < arr.length;i++) {
17             System.out.println(arr[i]);
18         }  
19         System.out.println("****************");
20         
21         short[] arr1 = new short[4];
22         for(int i = 0;i < arr1.length;i++) {
23             System.out.println(arr1[i]);
24         }  
25         System.out.println("****************");
26         float[] arr2 = new float[4];
27         for(int i = 0;i < arr2.length;i++) {
28             System.out.println(arr2[i]);
29         }  
30         System.out.println("****************");
31         char[] arr3 = new char[4];
32         for(int i = 0;i < arr3.length;i++) {
33             System.out.println("-" + arr3[i] + "-");
34         }  
35         
36         if(arr3[0] == 0){
37             System.out.println ("你好!");
38         }
39         System.out.println("****************");
40         boolean[] arr4 = new boolean[5];
41         System.out.println(arr4[0]);
42     
43         System.out.println("****************");
44         String[] arr5 = new String[5];
45         System.out.println(arr5[0]);
46         if(arr5[0] == null) {
47             System.out.println("北京天气不错!");
48         }
49     }
50 }
 1 /*
 2  *     二维数组
 3  * 
 4  * 1.理解
 5  * 可以看成是一维数组array1又作为另一个一维数组array2的元素而存在
 6  * 其实,从数组底层的运行机制来看,其实没有多维数组
 7  * 
 8  * 2.二维数组的使用
 9  *         ①二维数组的声明和初始化
10  *         ②如何通过数组的指定位置的元素
11  *         ③如何获取数组的长度
12  *         ④如何遍历数组
13  *         ⑤数组的元素的默认初始化值
14  *         ⑥数组的内存解析
15  * 
16  */
17 public class ArrayTest2 {
18     public static void main(String[] args) {
19         //1.二维数组的声明和初始化
20         int[] arr = new int[] {1,2,3};//一维数组
21         
22         //二维数组的静态初始化
23         int[][] arr1 =new int[][]{{1,2,3},{4,5},{6,7,8}};    
24         //二维数组的动态初始化    1
25         String[][] arr2 = new String[3][2]; //3代表有三个元素,每个元素又有2个元素
26         //二维数组的动态初始化2
27         String[][] arr3 = new String[3][];
28         //错误的情况
29         //String[][] arr4 = new String[][3];
30         //String[][] arr5 = new String[][];
31         //int[][] arr3 = new int[4][3]{{1,2,3},{4,5},{6,7,8}};
32         
33         //正确的情况
34         int arr4[][] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
35         int[] arr5[] = new int[][]{{1,2,3},{4,5},{6,7,8}};
36         int[][] arr6 = new int[][]{{1,2,3},{4,5},{6,7,8}};
37         int[] arr7 = {1,2,3,4,5};//类型推断
38     
39         //2.如何调用二维数组指定位置的元素
40         System.out.println(arr1[0][1]);//2
41         System.out.println(arr2[1][1]);//null
42         
43         arr3[1] = new String[4]; //给arr3数组索引为1的位置上创建一个长度为4的String数组
44         System.out.println(arr3[1][0]);
45         //3.获取数组的长度
46         System.out.println(arr4.length);//3
47         System.out.println(arr4[0].length);//3
48         System.out.println(arr4[1].length);//4
49         
50         //4.如何遍历数组
51         for(int i = 0;i < arr4.length;i++) {
52             for(int j = 0;j < arr4[i].length;j++) {
53                 System.out.print(arr4[i][j] + " ");
54             }
55             System.out.println();
56         }
57     }
58 }
 1 /*
 2  * 二维数组的使用:
 3  *    规定:二维数组分为外层数组的元素,内层数组的元素
 4  *         int[] arr = new int[4][3];
 5  *         外层元素:arr[0],arr[1]等
 6  *         内层元素:arr[0][0],arr[1][2]等
 7  *         ⑤数组的元素的默认初始化值
 8  *         针对于初始化方式一:比如:int[][] arr = new int[4][3];
 9  *             外层元素的初始化值为:地址值
10  *             内层元素的初始化值:与一维数组初始化情况相同
11  *         针对初始化方式二:比如:int[][] arr = new int[4][]; 
12  *             外层元素初始化值为:null
13  *             内层元素初始化值为:不能调用,否则报错
14  *         ⑥数组的内存解析
15  * 
16  * 
17  * 
18  */
19 public class ArrayTest3 {
20     public static void main(String[] args) {
21         
22         int[][] arr = new int[4][3];
23         System.out.println(arr[0]);//[I@15db9742  Int类型地址值(内存指针)
24         System.out.println(arr[0][0]);//0  float的为0.0  String的为null
25         System.out.println("***************************");
26         double[][] arr3 = new double[4][];
27         System.out.println(arr3[1]);//null   因为还没有分配内存指针
28     }
29 }
练习
 1 package com.minyx.exer;
 2 import java.util.Scanner;
 3 /*
 4  * 2.从键盘读入学生成绩,找出最高分,并输出学生等级成绩。
 5  *         成绩>=最高分-10 等级A
 6  *         成绩>=最高分-20 等级B
 7  *         成绩>=最高分-30 等级C
 8  *         其余 等级D
 9  * 
10  *         提示:先读入学生人数,根据人数创建int数组,存放学生成绩。
11  */
12 public class ArrayDemo1 {
13     public static void main(String[] args) {
14         //1.使用Scanner,读入五个学生个数
15         Scanner scanner = new  Scanner(System.in);
16         System.out.println("请输入学生人数:");
17         int number = scanner.nextInt();
18         //2.创建数组,存储学生成绩,动态初始化
19         int[] array = new int[number];
20         //3.给数组中的元素赋值    
21         for(int i = 0;i < array.length;i++) {
22             Scanner scanner1 = new  Scanner(System.in);
23             System.out.println("请输入学生成绩:");
24             int score = scanner1.nextInt();
25             array[i] = score;
26         }
27         //4.获取数组中元素的最大值:最高分
28         int maxscore = 0;
29         for(int i = 0;i < array.length;i++) {
30             if(maxscore <= array[i]) {
31                 maxscore = array[i];
32             }
33         }
34         //5.根据每个学生成绩与最高分的差值,获得每个学生的等级,并输出等级和成绩
35         String level = "";
36         for(int i = 0;i < array.length;i++) {
37             int xx = maxscore - array[i];
38             if(xx <= 10) {
39                 level = "A";
40             }else if(xx <= 20) {
41                 level = "B";
42             }else if(xx <= 30) {
43                 level = "C";
44             }else if(xx <= 40) {
45                 level = "D";
46             }else {
47                 level = "不及格";
48             }
49             System.out.println("第" + (i+1) +"位学生的成绩为:" + array[i] + "该生等级为:" + level);
50         }
51     
52     
53     }
54 }

 

posted @ 2022-10-14 17:13  MinyX  阅读(19)  评论(0编辑  收藏  举报