【Java编程进阶】方法初识

【Java编程进阶】方法初识_第1张图片

推荐学习专栏:Java 编程进阶之路【从入门到精通】


文章目录

  • 1. Java 方法初识
  • 2. 方法的创建与使用
  • 3. 方法的分类
    • 3.1 无参无返回值
    • 3.2 无参带返回值
    • 3.3 有参无返回值
    • 3.4 有参带返回值
  • 4. 递归方法
  • 5. 总结

1. Java 方法初识

方法是组合在一起来执行操作语句的集合,将具有独立功能的代码块组织成为一个整体,使其具有特殊功能,并且能实现达到代码复用的效果。

例如我们要在程序中多次判断一个数字是奇数还是偶数,这时,我们就可以将判断一个数的奇偶性的代码段封装成一个方法,后面再使用时只需要调用这个方法,大大提高了编程的效率和代码的复用性。

2. 方法的创建与使用

创建语法:

访问修饰符 返回值类型 方法名(参数列表){ 
        方法体 ;
}

示例:封装一个方法判断奇偶性

public class Test {
    public static void main(String[] args) {
        judgment(10);//结果:偶数
        int a = 11;
        judgment(a);//结果:奇数
    }

    //1.定义奇偶判断方法
    public static void judgment(int number) {
    //2.方法中使用if语句判断是奇数还是偶数

        if (number % 2 == 0) {
            System.out.println("偶数");
        } else {
            System.out.println("奇数");
        }
    }
}

3. 方法的分类

按照 Java 中方法是否带有返回值,是否带有参数,可以将方法分为四大类:

  1. 无参无返回值型
  2. 无参带返回值型
  3. 有参无返回值型
  4. 有参带返回值型

方法在使用前要先创建,创建完成之后可以在程序中调用,而不是直接运行。下面我们根据方法的不同分类分别来学习方法的使用。

3.1 无参无返回值

无参数无返回值的方法很好理解,例如封装一个方法打印 HelloWorld :

public class Test {
    public static void main(String[] args) {
        print();
    }
    public static void print( ) {
        System.out.println("HelloWorld");
    }
}

3.2 无参带返回值

我们经常会根据一个方法产出的结果,来去组织另一段代码逻辑,为了拿到这个方法产生的结果,就需要定义带有返回值的方法。

示例:封装一个方法打印 HelloWorld ,并且返回 boolean 值 true 。

public class Test {
    public static void main(String[] args) {
        boolean i= print();
        System.out.println(i);
    }
    public static boolean print( ) {
        System.out.println("HelloWorld");
        return true;
    }
}

3.3 有参无返回值

使用有参数的方法可以用同一个方法处理不同的数据。在使用有参数的方法时,必须说明参数的数据类型,否则程序报错,并且多个参数之间使用逗号分隔。

在定义有参数的方法时,要在方法中提前定义好变量,此时我们就可以在方法中使用这些变量,而在调用方法时,就是要给这些变量赋值。在定义方法时的参数叫做形参,而调用方法时的参数叫做实参。

示例:封装一个方法,计算两数之和并打印。

public class Test {
    public static void main(String[] args) {
        add(2,3);
    }
    public static void add(int a,int b) {
        int c=a+b;
        System.out.println("a+b="+(a+b));
    }
}

3.4 有参带返回值

用同一个方法处理不同的数据,且返回值用来处理另一段代码的逻辑。此时可以用有参数带返回值的方法来处理。

示例:封装一个方法,计算两数之和并返回,在主方法中打印结果。

public class Test {
    public static void main(String[] args) {
        int c = add(1, 2);
        System.out.println(c);
    }

    public static int add(int a, int b) {
        return a + b;
    }
}

4. 递归方法

递归 是一个十分重要的算法思想,使用递归可以解决实际生活中的很多问题,简单来说,递归就是一个方法直接或者间接的调用自己,从而将问题转化为本质相同但规模较小的子问题来解决。

在学习递归时,我们通常结合斐波那契数列问题一起理解其思想。

斐波那契数列,又称黄金分割数列,这个数列从第 3 项开始,每一项都等于前两项之和。在数学上,斐波那契数列以如下递推的方法定义:

在这里插入图片描述
使用递归方法实现:

public class Test {
    public static void main(String[] args) {
        System.out.println(fibonacci(50));
    }

    public static int fibonacci(int n) {

        if (n == 1 || n == 2) {             //特殊情况,分开讨论
            return 1;
        }
        if (n > 2) {
            return fibonacci(n - 1) + fibonacci(n - 2);     //递归调用
        }
        return -1;              //如果输入错误的n,一律返回-1
    }
}

我们使用一般的方法和递归算法进行对比:

public class Test {
    public static void main(String[] args) {
        System.out.println(fibonacci2(50));
    }

    public static long fibonacci2(int n) {
        if (n < 1) {
            return -1;
        }
        if (n == 1 || n == 2) {
            return 1;
        }

        long a = 1l, b = 1l, c = 0l;        //定义三个long类型整数
        for (int i = 0; i < n - 2; i++) {
            c = a + b;            //第3个数的值等于前两个数的和
            a = b;            //第2个数的值赋值给第1个数
            b = c;            //第3个数的值赋值给第2个数
        }
        return c;
    }
}

方法二我们用了 for 循环解决了斐波那契数列问题,此时,使用方法二的效率更高一点,运行时发现,当 n 的数值偏大时,使用递归算法程序明显花费更长的时间。

相信这里我们已经对递归算法有了理解,在后序的算法学习中,通过解决实际的问题,我们会对递归算法有更加深入的理解。现在学习递归的思想也可以加深对 Java 方法的理解。

5. 总结

本文浅谈了Java 方法,通过 Java 方法的分类学习了不同类型的方法的创建和使用。在学习 Javase 程序基础时,我们只需要了解方法的思想,后面在学习 Java 面向对象编程时,会进行深入的学习。


在这里插入图片描述

欢迎订阅学习Java编程进阶之路专栏,专栏文章持续更新!

你可能感兴趣的:(Java,编程进阶之路【从入门到精通】,java,jvm,开发语言)