• 【Java基础】数组


    个人简介

    > 📦个人主页:轻狂客_零度的主页
    > 🏆学习方向:JAVA后端开发 
    > 📣种一棵树最好的时间是十年前,其次是现在!
    > ⏰往期文章:【Java基础】程序流程控制
    > 🧡喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。

    活动地址:CSDN21天学习挑战赛

    目录

    1. 数组

     1.1 静态初始化数组

     1.2 动态初始化数组

     1.4 数组的特性

     1.5 数组的工具类Arrays

    2. 数组的遍历

    3. 数组使用的常见问题

    4. Debug工具的使用

     4.1 Debug概念

     4.2 Debug的操作流程

     4.3 Debug的按键及功能


    1. 数组

     1.1 静态初始化数组

       定义数组的时候直接给数组赋值

       1. 静态初始化数组的格式

       数据类型[ ]  数组名 = { 元素1,元素2,元素3... };

       int[ ] a = {1,2,3,4,5};

       数据类型[ ]  数组名 = new 数据类型[ ] { 元素1,元素2,元素3... };
       int[ ] a = new int[ ]{1,2,3,4,5};

      2. 数组是属于什么类型,数组变量名中存储的是什么?

      引用数据类型,存储的数组在内存中的地址信息

     1.2 动态初始化数组

      定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据

      1. 数组的动态初始化格式

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

      int[ ] a = new int[5];

       2. 两种数组定义时的特点和场景有什么区别

       当前已经知道存入的元素值,用静态初始化

       当前还不清楚要存入哪些数据,用动态初始化

       3. 动态初始化数组元素的默认值是什么样的

       byte、short、int 、char、long类型数组元素的默认值都是0

       float、double类型数组元素的默认值都是0.0

       boolean类型数组元素的默认值是false、String类型数组元素的默认值是null

    1. 3 数组的创建过程

    1. 在内存中开辟连续的空间,用来存放数据

    2. 给数组完成初始化过程,给每个元素赋予默认值

    3. 数组完成初始化会分配一个唯一的地址值

    4. 把唯一的地址值交给引用类型的变量a去保存

    5. 如果想要操作数组中的元素,可以根据变量保存的地址找到数组,然后根据下标来操作数组的具体元素
    数组名保存的是数组的地址值,不是数组中每一个具体的元素,数组名是一个引用类型的变量

     1.4 数组的特性

    1. 数组的长度通过**数组名.length;**来获取
    2. 数组一旦创建,长度无法改变
    3. 数组的下标从0开始,最大下标为数组长度-1
    4. 如果访问到了不存在的下标,会数组下标越界异常

     1.5 数组的工具类Arrays

      1. toString(数组名),除了char类型以外,其他类型的数组想要查看数组的具体元素,都得使用这        个方法,如果不用,打印是数组的地址值
      2. sort(数组名),给数组进行排序
      3. copyOf(要复制的数组,新数组的长度)
          如果新的长度大于原数组的长度–数组的扩容
          如果新的长度小于原数组的长度–数组的缩容
          如果新的长度等于原数组的长度–普通的复制
          注意:不管是什么长度,都不是修改原数组,而是创建新数组

    2. 数组的遍历

       1. 如果只是想查看数组中有哪些元素,直接使用System.out.println(Arrays.toString(数组名));就可以
       2. 如果想要拿到数组中的一个个的具体元素,或者是对数组中的元素做进一步的操作,就需要对数组进行遍历
       3. 遍历:把数组中的所有元素,从头到尾逐个“过一遍”
       4. 通过循环遍历数组,所以循环中的循环变量代表的是数组的下标
     

    1. package com.example.basic;
    2. /*本类用于复习数组的操作*/
    3. public class TestArray {
    4. public static void main(String[] args) {
    5. //需求1:求出数组中所有元素之和
    6. //f1();
    7. //需求2:求出数组中所有元素的最大值
    8. f2();
    9. }
    10. private static void f2() {
    11. //需求2:求出数组中所有元素的最大值
    12. //1.定义一个数组
    13. int[] a = {10,20,98,40,55};
    14. //2.定义一个变量,用来存储结果,也就是数组中所有元素的最大值
    15. int max = a[0];//这个位置不能写0,应该是数组中的第一个元素
    16. //3.遍历数组,依次拿出数组中的每一个元素与之前设定的元素做比较
    17. for (int i = 0; i < a.length; i++) {
    18. //4.判断当前遍历到的元素,与max谁大
    19. if(a[i]>max){//如果当前遍历到的元素比max大
    20. max = a[i];//就把遍历到的这个元素的值赋值给max
    21. }
    22. }
    23. //5.循环结束,输出数组中最大的值
    24. System.out.println("数组中的最大值为:"+max);
    25. }
    26. private static void f1() {
    27. //需求1:求出数组中所有元素之和
    28. //1.定义一个数组
    29. int[] a = {12,12,22,22,22};
    30. //2.定义一个变量,用来保存最终求和的结果
    31. int sum = 0;
    32. //3.通过数组的遍历,遍历数组中的每一个元素,然后累加
    33. for (int i = 0; i < a.length; i++) {
    34. sum = sum + a[i];
    35. }
    36. System.out.println("数组累加所有元素之和为:"+sum);
    37. }
    38. }

    3. 数组使用的常见问题

    1. 如果访问的元素位置超过最大索引,执行时会出现ArrayIndexOutOfBoundsException(数组索引越界异常)
    int [ ] arr = new int [ ] {11,22,33};
    System.out.println(arr[2]);
    2. 如果数组变量中没有存储数组的地址,而是null, 在访问数组信息时会出现NullPointerException(空指针异常)
     arr = null;
     System.out.println(arr); //null
     //  System.out.println(arr.length);  //出现异常

    4. Debug工具的使用

     4.1 Debug概念

      Debug是一种程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。

     4.2 Debug的操作流程

      Debug调试,又被称为断点调试,断点是一个标记,告诉我们从哪里开始查看。操作流程具体分为以下几个步骤:

    1. 如何加断点

     

    2. 如何运行加了断点的程序

      

    3. 看哪里

     

      

    4. 点哪里

     

    5. 如何删除断点

        与增加断点相同。

     4.3 Debug的按键及功能

     Show Execution Point(显示执行点):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行

     Step Over(步过) :一行一行地往下走,如果这一行上有方法不会进入方法

     Step Into(步入):如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法

     Force Step Into (强制步入):能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法

     Step Out (步出):从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。

    (将执行点移回方法调用,从堆栈中删除当前方法帧)

    Drop Frame(退回断点):从当前位置退回到之前断点处。有时候当我们步入方法体之后,还想回退到方法体外,点这个按钮后,断点重新回到方法体之外。在继续还是可以再次进到方法内。

     Run to Cursor (运行到光标处):你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。

     Evaluate Expression计算表达式:使用这个操作在调试过程中计算某个表达式的值,而不用再去打印信息。

     重启

      Stop:关闭程序。

     修改运行配置

     Resume Program:恢复程序,比如,你在第20行和25行有两个断点,当前运行至第20行,使用这个操作运行到下一个断点(即第25行),如果下面没有断点了,再使用这个操作,则运行完整个流程。

     Pause Program:暂停程序,启用Debug。

     

     View Breakpoints:查看所有断点。

     

     Mute Breakpoints:隐藏断点,选择这个后,所有断点变为灰色,断点失效。再次点击,断点变为红色,有效。

  • 相关阅读:
    MybatisPlus乐观锁悲观锁和分页查询逻辑删除
    count(*)查询性能很差?用这5招轻松优化
    如何实现浏览器标签页之间的通信
    CUDA说明和安装[window]
    【Web前端大作业实例网页代码】html+css新闻资讯网页带dw模板和登陆注册(9页)
    JAVA毕业设计web大学生宿舍管理系统计算机源码+lw文档+系统+调试部署+数据库
    Typecho 添加 Emoji 表情报错「解决方案」
    掌握Pillow:Python图像处理的艺术
    Unity UGUI的Toggle(复选框)组件的介绍及使用
    Linux华硕笔记本安装ROG Asusctl
  • 原文地址:https://blog.csdn.net/LKS_010620/article/details/126324646