01idea安装

02idea项目结构

03idea中的第一个代码

04idea常用快捷键

05idea操作模块

06idea打开关闭项目-类包名修改


(以上为工具使用,略过)

07数组介绍

08数组的定义格式

  1. package com.itheima.array;
  2. public class Demo1Array {
  3. /*
  4. 数组的定义格式:
  5. 1: 数据类型[] 数组名;
  6. 2: 数据类型 数组名[];
  7. */
  8. public static void main(String[] args) {
  9. // 数据类型[] 数组名;
  10. // 定义了一个int类型的数组, 数组名叫arr
  11. /*
  12. 这里虽然是定义了一个数组, 但也仅仅只是一个数组类型的[变量], 变量没有进行初始化, 就直接使用了, 这就是错误原因.
  13. */
  14. //int[] arr = 创建数组容器;
  15. //System.out.println(arr);
  16. // 定义了一个char类型的数组, 数组名叫cArr
  17. char[] cArr;
  18. //System.out.println(cArr);
  19. int a = 10;
  20. System.out.println(a);
  21. }
  22. }

09数组的动态初始化

  1. package com.itheima.array;
  2. public class Demo2Array {
  3. /*
  4. 数组的动态初始化:
  5. 在初始化的时候, 需要手动指定数组的长度, 系统会为数组容器分配初始值.
  6. 动态初始化格式:
  7. 数据类型[] 数组名 = new 数据类型[数组的长度];
  8. 注意:
  9. 打印数组变量的时候, 会打印出数组的内存地址
  10. [I@10f87f48 :
  11. @ : 分隔符
  12. [ : 当前的空间是一个数组类型
  13. I : 当前数组容器中所存储的数据类型
  14. 10f87f48 : 十六进制内存地址
  15. 0 1 2 3 4 5 6 7 8 9 a b c d e f
  16. */
  17. public static void main(String[] args) {
  18. // 数据类型[] 数组名 = new 数据类型[数组的长度];
  19. // 通过new关键字创建了一个int类型的数组容器, 该容器可以存储5个int类型的整数, 该容器被arr数组变量所记录
  20. int[] arr = new int[5];
  21. // [I@10f87f48
  22. System.out.println(arr);
  23. byte[] bArr = new byte[3];
  24. // [B@b4c966a
  25. System.out.println(bArr);
  26. }
  27. }

10数组元素访问

  1. package com.itheima.array;
  2. public class Demo3ArrayIndex {
  3. /*
  4. 数组动态初始化:
  5. 初始化的时候, 手动指定数组长度, 系统会为数组容器分配初始值.
  6. 数组的元素访问格式:
  7. 数组名[索引]
  8. 索引: 数组中数据的编号方式, 编号从0开始
  9. 作用: 访问数组容器中的空间位置
  10. 注意:
  11. 数组在创建完毕后, 即使没有赋值, 也可以取出, 但取出的元素都是默认初始化值.
  12. */
  13. public static void main(String[] args) {
  14. int[] arr = new int[3]; // 0 1 2
  15. System.out.println(arr); // 数组的内存地址 [I@10f87f48
  16. // 数组名[索引] 访问数组容器中的空间位置
  17. System.out.println(arr[0]); // 0 系统自动分配的默认初始化值
  18. System.out.println(arr[1]);
  19. System.out.println(arr[2]);
  20. System.out.println("--------------");
  21. // 数组名[索引]
  22. arr[0] = 11;
  23. arr[1] = 22;
  24. arr[2] = 33;
  25. System.out.println(arr[0]);
  26. System.out.println(arr[1]);
  27. System.out.println(arr[2]);
  28. }
  29. }
  1. package com.itheima.array;
  2. public class Demo4Array {
  3. public static void main(String[] args) {
  4. int[] arr1 = new int[2];
  5. System.out.println(arr1);
  6. arr1[0] = 11;
  7. arr1[1] = 22;
  8. System.out.println(arr1[0]);
  9. System.out.println(arr1[1]);
  10. System.out.println("-------------");
  11. int[] arr2 = new int[3];
  12. System.out.println(arr2);
  13. arr2[0] = 33;
  14. arr2[1] = 44;
  15. arr2[2] = 55;
  16. System.out.println(arr2[0]);
  17. System.out.println(arr2[1]);
  18. System.out.println(arr2[2]);
  19. }
  20. }

11Java内存分配一个数组内存图

12两个数组内存图

13多个数组指向相同内存图

  1. package com.itheima.array;
  2. public class Demo5Array {
  3. /*
  4. 两个数组指向相同
  5. */
  6. public static void main(String[] args) {
  7. int[] arr1 = new int[2];
  8. arr1[0] = 11;
  9. arr1[1] = 22;
  10. /*
  11. 数组类型的变量应该记录什么?
  12. 地址值
  13. */
  14. int[] arr2 = arr1;
  15. arr2[0] = 33;
  16. System.out.println(arr1[0]);
  17. System.out.println(arr1[1]);
  18. System.out.println("---------");
  19. System.out.println(arr2[0]);
  20. System.out.println(arr2[1]);
  21. }
  22. }

14数组的静态初始化

  1. package com.itheima.array2;
  2. public class Demo1Array {
  3. /*
  4. 数组静态初始化 : 初始化时指定每个数组元素的初始值,由系统决定数组长度
  5. 完整格式:
  6. 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...};
  7. 简化格式:
  8. 数据类型[] 数组名 = {数据1,数据2,数据3...};
  9. */
  10. public static void main(String[] args) {
  11. // 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...};
  12. int[] arr = new int[]{11,22,33};
  13. System.out.println(arr[0]);
  14. System.out.println(arr[1]);
  15. System.out.println(arr[2]);
  16. // 数据类型[] 数组名 = {数据1,数据2,数据3...};
  17. int[] arr2 = {44,55,66};
  18. System.out.println(arr2);
  19. System.out.println(arr2[0]);
  20. System.out.println(arr2[1]);
  21. System.out.println(arr2[2]);
  22. }
  23. }

15数组操作的两个常见问题

  1. package com.itheima.exception;
  2. public class ArrayException {
  3. public static void main(String[] args) {
  4. int[] arr = new int[3]; // 0 1 2
  5. System.out.println(arr[2]);
  6. // 空指针异常
  7. arr = null; // 空值
  8. System.out.println(arr[0]);
  9. }
  10. }

16数组遍历

  1. package com.itheima.test;
  2. public class Test1Array {
  3. /*
  4. 数组的遍历: 通过循环获取数组中的所有元素(数据)
  5. 动态获取数组元素个数 : 数组名.length
  6. */
  7. public static void main(String[] args) {
  8. int[] arr = {11, 22, 33, 44, 55};
  9. // 数组名.length
  10. System.out.println("arr数组中元素的个数为:" + arr.length);
  11. //for(int i = 0; i < 5; i++){ 手动写死了, 不严谨, 不推荐
  12. for(int i = 0; i < arr.length; i++){
  13. // i : 0 1 2 3 4
  14. System.out.println(arr[i]);
  15. }
  16. }
  17. }

17数组获取最大值

  1. package com.itheima.test;
  2. import java.util.Scanner;
  3. public class Test2Array {
  4. /*
  5. 需求: 从数组中查找最大值
  6. int[] arr = {12,45,98,73,60};
  7. 实现步骤:
  8. 1. 假设数组中的第一个元素为最大值
  9. 2. 遍历数组, 获取每一个元素, 准备进行比较
  10. 3. 如果比较的过程中, 出现了比max更大的, 让max记录更大的值
  11. 4. 循环结束后, 打印最大值.
  12. */
  13. public static void main(String[] args) {
  14. int[] arr = {12,45,98,73,60};
  15. // 1. 假设数组中的第一个元素为最大值
  16. int max = arr[0];
  17. // 2. 遍历数组, 获取每一个元素, 准备进行比较
  18. for(int i = 1; i < arr.length; i++){
  19. // 3. 如果比较的过程中, 出现了比max更大的, 让max记录更大的值
  20. if(arr[i] > max){
  21. max = arr[i];
  22. }
  23. }
  24. // 4. 循环结束后, 打印最大值.
  25. System.out.println("max:" + max);
  26. }
  27. }

18数组元素求和

  1. package com.itheima.test;
  2. import java.util.Scanner;
  3. public class Test3Array {
  4. /*
  5. 需求:键盘录入5个整数,存储到数组中,并对数组求和
  6. 思路:
  7. 1.创建键盘录入对象,准备键盘录入
  8. 2.定义一个求和变量,准备记录累加后的结果
  9. 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值
  10. 4.将键盘录入的数值存储到数组中
  11. 5.遍历数组,取出每一个元素,并求和
  12. 6.输出总和
  13. */
  14. public static void main(String[] args) {
  15. // 1.创建键盘录入对象,准备键盘录入
  16. Scanner sc = new Scanner(System.in);
  17. // 2.定义一个求和变量,准备记录累加后的结果
  18. int sum = 0;
  19. // 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值
  20. int[] arr = new int[5];
  21. // 4.将键盘录入的数值存储到数组中
  22. for(int i = 0; i < arr.length; i++){
  23. System.out.println("请输入第" + (i+1) + "个整数:");
  24. //arr[i] = 10;
  25. arr[i] = sc.nextInt();
  26. }
  27. // 5.遍历数组,取出每一个元素,并求和
  28. for (int i = 0; i < arr.length; i++) {
  29. sum += arr[i];
  30. }
  31. // 6.输出总和
  32. System.out.println("sum:" + sum);
  33. }
  34. }

19数组基本查找

  1. package com.itheima.test;
  2. import java.util.Scanner;
  3. public class Test4Array {
  4. /*
  5. 需求:
  6. 已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引,并在控
  7. 制台输出找到的索引值。
  8. 思路:
  9. 1.定义一个数组,用静态初始化完成数组元素的初始化
  10. 2.键盘录入要查找的数据,用一个变量接收
  11. 3.定义一个索引变量,初始值为-1
  12. 4.遍历数组,获取到数组中的每一个元素
  13. 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环
  14. 6.输出索引变量
  15. */
  16. public static void main(String[] args) {
  17. // 1.定义一个数组,用静态初始化完成数组元素的初始化
  18. int[] arr = {19, 28, 37, 46, 50};
  19. // 2.键盘录入要查找的数据,用一个变量接收
  20. Scanner sc = new Scanner(System.in);
  21. System.out.println("请输入您要查找的元素:");
  22. int num = sc.nextInt();
  23. // 3.定义一个索引变量,初始值为-1
  24. // 假设要查找的数据, 在数组中就是不存在的
  25. int index = -1;
  26. // 4.遍历数组,获取到数组中的每一个元素
  27. for (int i = 0; i < arr.length; i++) {
  28. // 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环
  29. if(num == arr[i]){
  30. // 如果值相同,就把该值对应的索引赋值给索引变量,并结束循环
  31. index = i;
  32. break;
  33. }
  34. }
  35. // 6.输出索引变量
  36. System.out.println(index);
  37. }
  38. }

20评委打分

  1. package com.itheima.test;
  2. import java.util.Scanner;
  3. public class Test5Array {
  4. /*
  5. 需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
  6. 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。
  7. 思路:
  8. 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6
  9. 2.键盘录入评委分数
  10. 3.由于是6个评委打分,所以,接收评委分数的操作,用循环
  11. 4.求出数组最大值
  12. 5.求出数组最小值
  13. 6.求出数组总和
  14. 7.按照计算规则进行计算得到平均分
  15. 8.输出平均分
  16. */
  17. public static void main(String[] args) {
  18. // 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6
  19. int[] arr = new int[6];
  20. // 2.键盘录入评委分数
  21. Scanner sc = new Scanner(System.in);
  22. // 3.由于是6个评委打分,所以,接收评委分数的操作,用循环
  23. for (int i = 0; i < arr.length; i++) {
  24. System.out.println("请输入第" + (i+1) + "个评委的打分:");
  25. int score = sc.nextInt();
  26. if(score >= 0 && score <= 100){
  27. // 合法的分值
  28. arr[i] = score;
  29. }else{
  30. // 非法的分值
  31. System.out.println("您的打分输入有误, 请检查是否是0-100之间的");
  32. i--;
  33. }
  34. }
  35. // 4.求出数组最大值
  36. int max = arr[0];
  37. for (int i = 1; i < arr.length; i++) {
  38. if(max < arr[i]){
  39. max = arr[i];
  40. }
  41. }
  42. // 5.求出数组最小值
  43. int min = arr[0];
  44. for (int i = 1; i < arr.length; i++) {
  45. if(min > arr[i]){
  46. min = arr[i];
  47. }
  48. }
  49. // 6.求出数组总和
  50. int sum = 0;
  51. for (int i = 0; i < arr.length; i++) {
  52. sum += arr[i];
  53. }
  54. // 7.按照计算规则进行计算得到平均分
  55. int avg = (sum - max - min ) / 4;
  56. // 8.输出平均分
  57. System.out.println(avg);
  58. }
  59. }