java 方法 学习笔记

本文详细介绍了Java中的方法定义、调用格式及其基本规则,包括有返回值和无返回值的方法、参数传递机制、方法重载以及return关键字的使用。通过实例展示了求和、判断奇偶数、数组求最值等应用场景,深入讲解了方法的内存调用流程和参数传输方式,包括值传递和引用传递的区别。此外,还探讨了方法重载的概念和识别技巧。
摘要由CSDN通过智能技术生成

目录

一、方法的定义

1、方法完整的定义与调用格式写法

2、方法其他的定义与调用格式写法

3、方法使用的常见基本规则问题问题

 4、方法使用案例(求和、判断奇偶数、数组求最值)

二、方法的内存原理

调用流程:

三、 方法参数传输机制

1.方法的参数传递

2、方法参数传递的案例 (打印数组、查询数组元素并返回、比较两个数组是否相等)

 四、方法重载 与return关键字


方法的概念:方法是一种语法结构,将一段代码封装成一个功能方便重复使用。

//main方法
public static void main(String[] args) {

    //自定义方法
    public static int add(int a,int b) {
        int a = b +c
        return c;

    } 
}

*方法的好处:提高代码重复使用性,提高代码逻辑性

一、方法的定义

1、方法完整的定义与调用格式写法

//完整格式
修饰符 返回值类型 方法名(形参列表){
    方法体代码即需要执行功能的代码
    return 返回值;
}

//调用方法
方法名(实参列表);

*方法修饰符暂时使用public static 

*方法声明了具体返回类型,内部必须使用return来返回对应类型数据。

*形参列表可以有多个或者没有,如果有多个 那么多个形参都必须用英文逗号","隔开 并且不能给形参初始化值。

2、方法其他的定义与调用格式写法

        2.1、无参数无返回值类型

//例如  其中viod表示无返回值的类型
 public static void print() {
   System.out.println("hello")

 } 

//调用 括号里无需传入参数
print()

* 如果 方法不需要返回结果,返回值类型必须申明成void(无返回值),此时就无法使用return返回参数。

*方法如果没有参数,或者返回值类型申明为void 可被称为无参数,依次类推。

*方法不需要参数,则形参可以不写。

3、方法使用的常见基本规则问题问题

3.1、方法编写顺序可以任意

3.2、方法与方法之间是平等关系 不是嵌套关系

3.3、方法返回值类型为void(无返回值),方法内则不能使用return返回,若返回值类型为其他具体类型,方法内则必须使用return返回类型数据。

3.4方法不调用就不会执行 调用时要严格对应方法的形实参数。

3.5 有返回值调用的情况下可以选择接收变量的结果 或者输出调用 或直接调用;无返回值只能调用一次。

//代码
public static int add(int a,int b) {
       int a = b +c
       return c;

} 
//
//自定义调用
int i = add(a:100,b:200);
System.out.println(add(i);

//输出调用
System.out.println(add(a:100,b:200));

//直接调用
add(a:100,b:200)

 4、方法使用案例(求和、判断奇偶数、数组求最值)

4.1、定义一个方法,方法中计算1-n的和并返回。

思路:a:因为n不固定,所以方法需要声明形参接收以及还要声明返回值类型。

           b:方法内部使用for循环计算出1-n的和并返回

//使用main方法输出
public static void main(String[] args) {
    System.out.println(add(5)); //参数给到5 运行结果为前5的数之和
}

public static int add(int n){
    //定义存储;累加数值的变量
    int sum = 0;
    //使用循环实现累加
    for (int i = 0; i <= n; i++) {
        sum += i;
    }
    return sum;//返回sum的值
}

4.2、给一个数,输出该数是奇数还是整数

思路:a:传入数据给方法,方法需要声明形参接受。

           b:方法内部使用if语句判断并输出。

//使用main方法输出
public static void main(String[] args) {
    c(10);//调用输出判断10是偶数的结果
}
//if函数判断奇偶
public static void c(int n){
    if(n %2 ==0){
        System.out.println(n+"是偶数");
    }
    else {
        System.out.println(n+"是奇数");
    }
}

4.3找出数组的最值,使用方法,支持返回任意整型数组的最大值数据。

思路:a:要返回最大值,需要声明返回值类型。

           b:接收数据,需要声明形参列表 找出数组最值并返回。

    //使用main方法输出
    public static void main(String[] args) {
        int[] a = {11,20,19,15,21};
        int max = getMax(a);
        //输出
        System.out.println("最大值数是"+max);
      //System.out.println("最小值数是"+max); 
    }

    //if函数判断奇偶
    public static int getMax(int[] arr) {
        //找出最大值并返回
        int max = arr[0];
        //遍历比较
        for (int i = 1; i < arr.length; i++) {
            if (i < max) { //如果输出最大值
          //if (i < max) { 如果输出最小值
                max = arr[i];
            }

        }
        return max;
    }

二、方法的内存原理

调用流程:

1、方法没有被调用的时候,在方法区中的字节码文件中存放

2、方法被调用的时候,需要进入到栈内存中运行

三、 方法参数传输机制

1.方法的参数传递

1.1基本类型的方法参数传递(值传递)

*直接传输数据值

    //使用main方法输出
    public static void main(String[] args) {
        int a = 10;
        c(a); //直接调用下面的c方法
        System.out.println(a); //输出10
    }
    
    public static void c(int a){
        System.out.println(a);//输出10
        a = 20;
        System.out.println(a);//输出20
    }

//最后的执行结果:
//10
//20
//10

1.2.引用类型的方法参数传递(值传递)

*传输地址值

    //使用main方法输出
    public static void main(String[] args) {
        int[] arr = {10,20,15};
        c(arr); //直接引用
        System.out.println(arr[0]); //因为引用类型传输的是数组的地址 所以被下面执行方法给改变了 值为520
    }

    public static void c(int[] arr){
        System.out.println(arr[0]); //输出10
        arr[0] = 520;
        System.out.println(arr[0]); //输出20
    }

//最终执行结果
//10
//520
//520

2、方法参数传递的案例 (打印数组、查询数组元素并返回、比较两个数组是否相等)

2.1 打印数组内容:

输出任意整型数组内容如:[11,22,33,44,55]

思路:a:定义一个方法接收数组 并输出

           b: 定义一个静态初始化数组,调用并传入数组

 //使用main方法输出
    public static void main(String[] args) {
        //定义第一个数组
        int[] a1 = {10,20,15};
        //c方法引用a1数组
        c(a1);
        System.out.println("------------------------");
        //定义第二个数组
        int[] a2 = {11,22,33};
        //c方法引用a2数组
        c(a2);
    }

    public static void c(int[] arr){
        System.out.print("[");
        //循环遍历数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length - 1 ? arr[i]:arr[i] +", ");
        }
        System.out.println("]");
    }

//最后执行结果:
//[10, 20, 15]
//------------------------
//[11, 22, 33]

2.2 查询数组元素并返回: 

存在则返回该数在数组中的索引值 不存在则返回-1

思路:a:定义方法接收数组 查询元素的值(在方法中完成查询功能)

           b:定义数组 调用方法 指定搜索元素值 并返回结果

    //使用main方法输出
    public static void main(String[] args) {
        //定义数组调用方法
        int[] arr = {11,22,33,44,55,66};
        int index = c(arr,55); //输入查询参数55 判断55是否在数组中并返回索引值
        System.out.println("查询数的索引是"+index);
    }
    //定义一个方法 参数用于接收数组,查询的数据返回值为整型
    public static int c(int[] arr,int data){
        //循环遍历 找出这个数的索引
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == data){
                return i;
            }
        }
        return -1; //查不到该元素
    }
//运行结果:
//查询数的索引是4

2.3 比较两个数组是否相等 :

数组类型、元素个数、元素值、元素顺序 判断是否一样 一样返回true 不一样返回false

思路:a:定义方法接收两个整型数组

           b:方法内部完成判断逻辑 返回布尔值

    //使用main方法输出
    public static void main(String[] args) {
        //定义数组 调用方法
        int[] arr1 = {1,2,3,4,5};
        int[] arr2 = {1,2,3,4,5}; //两个数组相同则返回true
        System.out.println(c(arr1, arr2));
    }

        //定义一个方法 参数用于接收两个数组,查询的数据返回值为布尔
    public static boolean c (int[] arr1, int[] arr2){
        //判断数组是不是相同
        if (arr1.length == arr2.length){
            for (int i = 0; i < arr1.length; i++) {
                if (arr1[i] != arr2[i]) {
                    return false;
                }
            }
            return true;
        }else {
            return false;
        }

    }

//最终运行结果:
//true

 四、方法重载 与return关键字

1.方法重载定义

在同一个类中,出现了多个方法名称相同,但是形参列表不同就称为重载方法。

 //例如:
 
   public static void run() {
        System.out.println("跑起来了");
    }
    public static void run(String a) {
        System.out.println(a+"跑起来了");
    }
    //调用方法
    public static void main(String[] args) {
    run();
    run("小狗");
    }
//执行结果:
//跑起来了
//小狗跑起来了

2.方法重载的作用

*可读性好,名称与类型同一类功能 这是一种专业的代码设计

3.方法重载的识别技巧

只要是同类中 方法名称相同 形参列表不同 那么则就是重载方法。

形参不同是指个数 类型 顺序不同

4.return的使用

立即跳出并结束当前方法的执行,retur关键字可以放在任何方法中去使用

补充:break 跳出并结束当前循环

           continue 结束当前所在循环的当次继续 进入下一次执行

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

open_test01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值