Java方法的使用


目录

总结

1、方法的概念

2、如何定义

3、怎么调用

4、形参和实参的关系

没有返回值的方法

5、方法重载

6、方法签名

7、递归


总结

方法是一个代码片段,方法名是用小驼峰命名,在同一个类中调用静态方法是直接 方法名 调用,不同类中调用静态方法是 类名.方法名 调用,调用非静态方法时对象调用。 形参是实参的临时考本,两个是两块实体。方法重载与返回值类型无关,只与参数列表个数、类型、次序相关递归是一个方法执行自身的过程。


1、方法的概念

方法是一个代码片段, 类似C语言中的 "函数"。

main方法:

java 复制代码
public class Demo1 {
    public static void main(String[] args) {
        //方法体
    }
}

存在的意义:

1.模块化组织代码

代码规模变的复杂时,方法可以将功能相关的代码封装成独立的模块,让程序结构更清晰,便于管理和维护。

2.代码的复用

比如说算术运算 add(int a, int b)会执行多次不同位置的求和运算,不用每次都写 int c = a + b 或者 System.out.println( a + b); 直接调用 add(int a, int b)实现代码的复用

3.代码更好理解更简单,有利于系统的维护(找bug比较好找)


2、如何定义

方法的语法格式:

修饰符 返回值类型 方法名称(参数类型 形参...) {

方法体代码;

return 返回值\]; }

举例:

①年份是否为闰年

java 复制代码
public class Demo1 {
    //是否是闰年
    public static boolean is_LeapYear(int year) {
        //闰年 能被4整除且不能被100整除 或者 能被400整除
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            return true;
        }else {
            return false;
        }
    }
    public static void main(String[] args) {
        System.out.println(is_LeapYear(2005));
    }
}

②两个整数相加

java 复制代码
public class Demo2 {
    //两个数相加
    public static int add(int a, int b) {
        return a + b;
    }
    public static void main(String[] args) {
        System.out.println(add(6,7));
    }
}

注意事项:

1、修饰符是 public static固定搭配

2、返回值类型:方法有返回值,返回值类型必须和返回的实体类型一致,没有返回值就是void

3、方法名字:小驼峰命名(首字母小写,其他字母大写)

4、Java中,方法必须写在类中

5、Java中,方法不能嵌套定义

6、方法不能声明其他方法,可以调用其他方法


3、怎么调用

方法和C语言函数一样,定义之后需调用它

在Java中调用静态方法,有两种调用方式:

①使用对象调用(不推荐)

java 复制代码
public class Demo2 {
    //两个数相加
    public static int add(int a, int b) {
        return a + b;
    }
    public static void main(String[] args) {
        //对象调用静态方法
        Demo2 demo2 = new Demo2();
        int x = demo2.add(6,7);
        System.out.println(x);//13
    }
}

②在不同的类 中调用 直接用 类名.方法名 调用

java 复制代码
class Test{
    //两个数相加
    public static int add(int a, int b) {
        return a + b;
    }
}
public class Demo2 {

    public static void main(String[] args) {
        //对象调用静态方法
        Demo2 demo2 = new Demo2();
        int x = Test.add(8,9);
        System.out.println(x);//17
    }
}

(在同一个类 静态方法 中 调用静态方法:直接用方法名调用

Java中调用非静态方法

非静态方法(没有static修饰)必须通过对象调用,不能直接用类名调用

java 复制代码
public class Demo2 {
    //两个数相加
    public int add(int a, int b) {
        return a + b;
    }
    public static void main(String[] args) {
        //对象调用非静态方法
        Demo2 demo2 = new Demo2();
        int x = demo2.add(6,7);
        System.out.println(x);//13
    }
}

4、形参和实参的关系

形参是方法定义时,需要借助的一个变量,用来保存方法在调用时传过来的值

形参是实参的一块临时拷贝 ,也就是传值调用 ,所以形参和实参本质是两块实体


没有返回值的方法

java 复制代码
public class Demo3 {
    public static void test(int a, int b) {
        if (a > b) {
            return;//直接结束这个方法
        }else {
            System.out.println(a + ">" + b);
        }
     }

    public static void main(String[] args) {
        test(10,20);//10>20
    }
}

5、方法重载

方法重载 就是方法名一样,只管参数列表不相同(个数或者类型不同或者参数次序不同), 与返回值类型无关。

为什么有方法重载?

比如说我要写一个两个整数求和方法 sum(int a, int b)

后面需要三个变量求和 即可以写成这样 sum (int a, int b, double c)

因为我们都是在求和,不能每次参数列表个数或者类型不同的时候,新创建一个方法都需要重新命名吧,所以即都是求和,我们只需要对方法进行重载Overload就不会如此麻烦

就像是 "一词多义" 一样的,求和可以是求整数、求小数的和,所以就是方法重载

java 复制代码
public class Demo2 {
    //两个整数求和
    public static void sum(int a, int b) {
        System.out.println(a + b);
    }
    //三个整数求和
    public static int sum (int a, int b, int c) {
        return a + b + c;
    }
    //整数和浮点数求和
    public static void sum (int a, double b) {
        System.out.println(a + b);
    }
    public static void main(String[] args) {
        sum(7,9);//16
        sum(6,6.66);//12.66
        System.out.println(sum(1, 2, 3));//6
    }
}

6、方法签名

方法签名就是,经过编译器编译修改之后方法的最终名字。

具体方式:方法全路径+参数列表+返回值类型,构成方法的完整名字。


7、递归

递归就是一个方法在执行过程中调用自身。

递归相当于数学上的 "数学归纳法",有个起始条件,然后有个递推公式。

递归的必要条件:

1.将原问题划分成其子问题,子问题必须与原问题解法相同

2.递归出口

可以参考这篇文章

C语言-------(递归函数)斐波那契数数列(青蛙跳台阶)_递归斐波那契数列c语言-CSDN博客

举例:求n的阶乘

java 复制代码
public class Recursion {
    //求n的阶乘
    public static long factor(int n) { //long类型避免值溢出
        //1的阶乘是1
        if (n == 1) {
            return 1;
        }
        return n * factor(n - 1);//factor调用自身
    }

    public static void main(String[] args) {
        System.out.println(factor(20));//2432902008176640000
    }
}

举例:递归求1~10的和

java 复制代码
public class Recursion {
    //递归求和求1-10的和
    public static int add(int a) {
        //只有1的时候
        if (a == 1) {
            return 1;
        }
        return a + add(a - 1);//调用add自身
    }
    public static void main(String[] args) {
        System.out.println(add(10));//55
    }
}
相关推荐
蚊子码农2 小时前
算法题解记录-2452距离字典两次编辑以内的单词
开发语言·算法·c#
wangbing11252 小时前
Java构造函数不能加void
java·开发语言
Never_Satisfied2 小时前
在JavaScript / HTML中,数组查找第一个符合要求元素
开发语言·javascript·html
重生之后端学习2 小时前
207. 课程表
java·数据结构·算法·职场和发展·深度优先
嵌入式×边缘AI:打怪升级日志2 小时前
9.2.1 分析 Write File Record 功能(保姆级讲解)
java·开发语言·网络
橙露2 小时前
Python 异步爬虫进阶:协程 + 代理池高效爬取实战
开发语言·爬虫·python
阿在在2 小时前
Spring 系列(三):Spring PostProcessor 顶级扩展接口全解析
java·后端·spring
kylezhao20192 小时前
C#异步和并发在IO密集场景的典型应用 async/await
开发语言·数据库·c#
m0_531237172 小时前
C语言-函数练习2
c语言·开发语言