暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

java-day05-随堂笔记

原创 手机用户9600 2023-06-30
209

课堂知识点

一、数组

1.1什么是数组,数组的功能是什么

  • 数组的概念和特点

    ​ 数组其实就是一个容器。是一个可以存储多个相同类型数据的容器

    ​ 数组是一个引用数据类型 可以是基本数据类型

    ​ 数组的长度在程序运行期间,不可以改变

    ​ 【元素】 == 【数据值】

1.2数组的定义格式

  • 动态初始化

    数据类型[] 数组名 = new 数据类型[长度];

    示例:

    //创建一个长度为8的整数类型数组 int[] arrA = new int[8]; //创建一个长度13的小数类型数组 double[] arrB = new double[13]; //创建一个长度为4的字符类型数组 char[] arrC = new char[4];
  • 静态初始化

    • 完整格式
    数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,...};

    示例:

    //创建一个整数类型数组,保存10 20 30 40 50 int[] arrA = new int[]{10,20,30,40,50}; //创建一个小数类型数组,保存3.5,4.5,6.7,8.8 double[] arrB = new double[]{3.5,4.5,6.7,8.8}; //创建一个布尔类型数组,保存true true false true boolean[] arrC = new boolean[]{true,true,false,true};
    • 省略格式
    数据类型[] 数组名 = {元素1,元素2,元素3,...};

    示例:

    public class Demo03Array { public static void main(String[] args) { // 省略格式的静态初始化 int[] arrayA = { 10, 20, 30 }; // 静态初始化的标准格式,可以拆分成为两个步骤 int[] arrayB; arrayB = new int[] { 11, 21, 31 }; // 动态初始化也可以拆分成为两个步骤 int[] arrayC; arrayC = new int[5]; // 静态初始化的省略格式,不能拆分成为两个步骤。 // int[] arrayD; // arrayD = { 10, 20, 30 }; } }

1.3数组中的元素要如何获取

  • 访问元素格式

    数组名[索引];
  • 索引

    指的是给数组中每个元素加一个编号。编号从0开始。

  • 示例代码

    public class Test01 { public static void main(String[] args) { //需求:定义一个小数类型数组,里面存储元素为:2.3,3.5,5.6,6.7 double[] arrB = {2.3,3.5,5.6,6.7}; //如何获取数组长度 数组名.length System.out.println(arrB.length); System.out.println("========"); //数组的遍历 for(int i = 0; i < arrB.length; i++) { System.out.println(arrB[i]); } } }
  • 数组默认初始化值

    • 整数类型:0
    • 浮点类型:0.0
    • 字符类型:\u0000(空白字符)
    • 布尔类型:false
    • 引用数据类型:null

1.4 给数组中的元素赋值

  • 赋值格式

    数组名[索引] = 具体值;
  • 示例代码

public class Demo05ArrayUse { public static void main(String[] args) { // 动态初始化一个数组 int[] array = new int[3]; System.out.println(array); // 内存地址值 System.out.println(array[0]); // 0 System.out.println(array[1]); // 0 System.out.println(array[2]); // 0 System.out.println("================="); // 将数据123赋值交给数组array当中的1号元素 array[1] = 123; System.out.println(array); // 内存地址值 System.out.println(array[0]); // 0 System.out.println(array[1]); // 123 System.out.println(array[2]); // 0 } }

二、数组内存图解

2.1java中的内存划分

01

2.2一个数组的内存图

02

2.3两个数组的内存图

03

2.4两个引用指向同一个数组的内存图

04

三、数组操作常见问题

3.1数组索引越界异常

​ ArrayIndexOutOfBoundsException

  • 出现原因

    ​ 使用了不存在的索引

  • 解决方案

    ​ 修改为正确索引即可

3.2空指针异常

​ NullPointerException

  • 出现原因

    ​ 对象没有任何引用,没有new

  • 解决方案

    ​ 重新给他一个对象的引用,给他一个new

四、数组的案例

  • 课堂出的题目
public class Test02 { public static void main(String[] args) { //需求:定义一个整数类型的数组,里面保存元素:1 2 3 4 5 6 7 8 9 10 int[] arr = {1,2,3,4,5,6,7,8,9,10}; // 获取数组中所有元素的和 int sum = 0; for(int i = 0; i < arr.length; i++) { //System.out.println(arr[i]); sum += arr[i]; } System.out.println("总和:" + sum); // 获取数组中所有元素的平均值 System.out.println("平均值:" + ((double)sum / arr.length)); // 获取数组中元素是偶数的和 int result = 0; for(int i = 0; i < arr.length; i++) { if(arr[i] % 2 == 0) { result += arr[i]; } } System.out.println("偶数的和:" + result); } }
  • 获取数组中的最值

    • 最大值

      public class Demo05ArrayMax { public static void main(String[] args) { int[] array = { 5, 15, 30, 20, 10000, 30, 35 }; int max = array[0]; // 比武擂台 for (int i = 1; i < array.length; i++) { // 如果当前元素,比max更大,则换人 if (array[i] > max) { max = array[i]; } } // 谁最后最厉害,就能在max当中留下谁的战斗力 System.out.println("最大值:" + max); } }
    • 最小值

      public class Demo06ArrayMin { public static void main(String[] args) { int[] array = { 5, 15, 30, 20, 10000, -20, 30, 35 }; int min = array[0]; // 比武擂台 for (int i = 1; i < array.length; i++) { // 如果当前元素,比min更小,则换人 if (array[i] < min) { min = array[i]; } } System.out.println("最小值:" + min); } }
  • 数组元素反转

    public class Demo07ArrayReverse { public static void main(String[] args) { int[] array = { 10, 20, 30, 40, 50 }; // 遍历打印数组本来的样子 for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } System.out.println("============"); /* 初始化语句:int min = 0, max = array.length - 1 条件判断:min < max 步进表达式:min++, max-- 循环体:用第三个变量倒手 */ for (int min = 0, max = array.length - 1; min < max; min++, max--) { int temp = array[min]; array[min] = array[max]; array[max] = temp; } // 再次打印遍历输出数组后来的样子 for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } }

五、数组作为方法参数传递

5.1数组作为方法参数传递

  • 引用数据类型作为方法参数传递,传递的是对象的内存地址值
  • 基本数据类型作为方法参数传递,传递的就是具体的数据值

5.2数组作为方法返回值使用

  • 引用数据类型作为方法返回值使用时,返回的是对象的内存地址值
  • 基本数据类型作为方法返回值使用时,返回的是具体的数据值

练习题

  1. 练习数组的两种定义格式
  2. 练习如何获取数组中的元素
  3. 练习如何为数组元素赋值
  4. 练习数组的案例
  5. 练习将数组作为方法参数传递和返回值使用

面试题

  • 数组的定义格式有几种?
  • 如何获取数组中的元素?
  • 如何为数组元素赋值?
  • 数组默认初始化值都是什么?
  • java中的内存是如何划分的?
  • 使用数组时,有哪些常见的小问题需要注意?
  • 数组作为方法参数传递时,传递的是什么?
  • 数组作为方法返回值使用时,返回的是什么?
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论