栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

(Java初学篇)数组、方法入门和方法重载、Debug调试

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(Java初学篇)数组、方法入门和方法重载、Debug调试

目录

数组:

数组定义格式

数组动态初始化

数组元素访问

内存分配

数组静态初始化

数组操作常见的2个问题

数组遍历

获取数组最大值

方法入门和方法重载:

方法定义和调用(无参数无返回值)

带参数方法定义和调用(有参数无返回值)

带返回值方法定义和调用

方法的注意事项

方法的通用格式

方法重载

Debug 调试

Debug


数组:

数组定义格式
  • 格式:
    • 格式一: 数据类型[] 数组名; (推荐)
      • eg: 定义一个int类型的数组: int[] arr1;
      • eg: 定义一个double类型的数组:double[] arr2;
      • ...
    • 格式二: 数据类型 数组名[];
      • eg: 定义一个int类型的数组: int arr1[];
      • eg: 定义一个double类型的数组:double arr2[];
      • ...

数组动态初始化
  • 格式: 数据类型[] 数组名 = new 数据类型[长度];

  • 解释格式:

    • 左边:
      • 数据类型: 用来指定数组中元素的类型
      • []: 表示是一个数组
      • 数组名: 自己取的名字,符合标识符命名规则和规范
    • 右边:
      • new: 是一个关键字,表示创建一个新数组
      • 数据类型: 用来指定数组中元素的类型(和等于号左边的数据类型一致)
      • 长度: 写整数,表示数组中元素的个数
  • 静态初始化:

    • 格式: 数据类型[] 数组名 = {值1,值2,值3,...};

数组元素访问
  • 索引: 数组中的每一个元素都有一个编号,该编号是从0开始,每增加一个元素编号就+1,其中这个编号专业术语就叫做索引

  • 取数组中的元素: 数组名[索引]

  • 修改数组中的元素: 数组名[索引] = 值;


内存分配

内存概述

  • ​内存是计算机中的重要原件,临时存储区域,作用是运行程序。
  • ​我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。
  • ​必须放进内存中才能运行,运行完毕后会清空内存。
  • ​Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

java中的内存分配

  • 目前我们只需要记住两个内存,分别是:栈内存和堆内存
区域名称作用
寄存器给CPU使用,和我们开发无关。
本地方法栈JVM在使用操作系统功能的时候使用,和我们开发无关。
堆内存存储对象或者数组,new来创建的,都存储在堆内存。
方法区存储可以运行的class文件。
栈内存方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

数组静态初始化
  • 动态初始化:

    • 概述: 初始化数组的时候指定数组的长度,但不指定数组中的元素,数组元素由系统给默认值
    • 格式: 数据类型[] 数组名 = new 数据类型[长度]; (常见)
  • 静态初始化:

    • 概述: 初始化数组的时候指定数组中的元素,但不指定数组的长度,数组长度由系统默认指定

    • 格式:

      • 标准格式: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
      • 省略格式: ``数据类型[] 数组名 = {元素1,元素2,...}; (常见)

数组操作常见的2个问题

索引越界异常

  • 结论: 数组的长度是固定的,索引范围是:[0,数组长度-1]

  • 假设数组长度的为 3,索引范围是0~2,但是我们却访问了一个大于 2 的索引。

    程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

  • 解决方案

    将错误的索引修改为正确的索引范围即可!

空指针异常

  • arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,否则运行的时候就会抛出 NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

  • 解决方案

    给数组一个真正的堆内存空间引用(地址)即可!


数组遍历
  • 获取数组长度: 数组名.length

  • 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。

public class ArrayTest01 {
 public static void main(String[] args) {
  int[] arr = { 1, 2, 3, 4, 5 };
  for(int i=0;i

获取数组最大值
  • 最大值获取:从数组的所有元素中找出最大值。

  • 实现思路:

    • 定义变量,保存数组0索引上的元素
    • 遍历数组,获取出数组中的每个元素
    • 将遍历到的元素和保存数组0索引上值的变量进行比较
    • 如果数组元素的值大于了变量的值,变量记录住新的值
    • 数组循环遍历结束,变量保存的就是数组中的最大值
public class ArrayTest02 {
    public static void main(String[] args) {
        //定义数组
        int[] arr = {12, 45, 98, 73, 60};

        //定义一个变量,用于保存最大值
        //取数组中第一个数据作为变量的初始值
        int max = arr[0];

        //与数组中剩余的数据逐个比对,每次比对将最大值保存到变量中
        for(int x=1; x max) {
                max = arr[x];
            }
        }

        //循环结束后打印变量的值
        System.out.println("max:" + max);// 最大值是98

    }
}

  • 批量修改变量名: 选中变量名 ---> shift+ fn + f6

  • 修改类名名: 选中.java文件---> shift+ fn + f6---->输入新的类名--->Refactor


方法入门和方法重载:

方法定义和调用(无参数无返回值)
  • 方法只有先定义才能使用
  • 方法不会自动执行,必须调用才会执行(方法不调用,不会执行)
  • 格式:

    public static void 方法名(){
        代码块;
    }
    
  • 调用: 方法名();

  • 注意:

    • 方法不调用不会执行
    • 方法必须先定义,再调用
    • 方法需要定义在类中,方法外(方法和方法之间是平级关系,不允许嵌套)

带参数方法定义和调用(有参数无返回值)
  • 形参: 方法定义中的参数,等同于变量,如果有多个参数就使用逗号隔开
  • 实参:方法调用中的参数(一般都是常量值,或者变量)
  • 格式:

    public static void 方法名(参数){
        代码块;
    }
    
    • 定义方法参数: 数据类型 变量名
  • 调用:

    方法名(参数);
    
  • 注意: 调用方法时,参数个数,参数类型,参数顺序要与定义方法的参数一致


带返回值方法定义和调用
  • 定义格式:

    public static 返回值类型 方法名(形参){
        代码块;
        return 返回值;
    }
    
    • 注意:返回值的类型要和返回值类型相匹配,否则会报错
  • 调用格式:

    • 直接调用: 方法名(实参);
    • 赋值调用: 数据类型 变量名 = 方法名(实参);
    • 输出调用: System.out.println(方法名(实参));

方法的注意事项
  • 方法要先定义才能调用

  • 方法不调用不会执行

  • 方法不能嵌套方法(方法和方法之间是平级关系)

  • 无返回值方法,方法体中一般不加return语句,如果要加return语句,只能这么写: return;,表示结束方法的执行,并且该return后面不可以添加代码


方法的通用格式
  • 通用格式:

    public static 返回值类型 方法名(数据类型 变量名,数据类型 变量名,...){
     方法体;
        [return 返回值;]
    }
    
    • 返回值类型: 其实就是返回值的数据类型,如果没有返回值,返回值类型就写void
    • 形参: 定义变量,多个形参以逗号隔开,如果没有形参,小括号就空着
    • 方法体: 该方法的功能代码
    • 返回值: 方法执行完毕后需要返回的数据
    • return: 把返回值返回到调用方法的位置; 然后结束方法的执行
    • 方法分类:
      • 无参数无返回值
      • 无参数有返回值
      • 有参数无返回值
      • 有参数有返回值
  • 调用方法:

    • 无返回值的方法
      • 直接调用: 方法名(实参);
    • 有返回值的方法
      • 直接调用: 方法名(实参);
      • 赋值调用: 数据类型 变量名 = 方法名(实参);
      • 输出调用: System.out.println(方法名(实参));
  • 定义方法的套路:

    • 明确返回值类型
    • 明确形参
    • 明确方法名
    • 明确方法体
  • 调用方法的套路:

    • 明确调用的位置
    • 明确方法是否有返回值
    • 明确调用方法的方式

方法重载
  • 概述: 在同一个类中,出现了多个同名的方法,并且参数列表不同,与返回值类型,修饰符无关

  • 参数列表不同: 参数类型不同,参数个数不同,以及同类型参数顺序不同,与参数名没有关系

  • 在调用的时候,Java虚拟机会通过参数的不同来区分同名的方法

public class MethodDemo {
    public static void main(String[] args) {
        //调用方法
        int result = sum(10,20);
        System.out.println(result);

        double result2 = sum(10.0,20.0);
        System.out.println(result2);

        int result3 = sum(10,20,30);
        System.out.println(result3);
    }

    //需求1:求两个int类型数据和的方法
    public static int sum(int a, int b) {
        return a + b;
    }


    //需求2:求两个double类型数据和的方法
    public static double sum(double a, double b) {
        return a + b;
    }

    //需求3:求三个int类型数据和的方法
    public static int sum(int a, int b, int c) {
        return a + b + c;
    }
    
    public static void sum(int a, String b) {
        
    }
    
    public static void sum(String a, int b) {
        
    }

}

Debug 调试

Debug
  • 概述:Debug是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。

  • 如何加断点

    • 选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可
  • 如何运行加了断点的程序

    • 在代码区域右键Debug执行
  • 看哪里

    • 看Debugger窗口
    • 看Console窗口

  • 点哪里

    • 点Step Into (F7)这个箭头,也可以直接按F7
  • 如何删除断点

    • 选择要删除的断点,单击鼠标左键即可
    • 如果是多个断点,可以每一个再点击一次。也可以一次性全部删除

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1004333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号