方法

方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用。


public class MethodDemo {

    public static void main(String[] args) {

        int rs = sum(10, 20);

        System.out.println("和是:" + rs);



        int rs2 = sum(30, 20);

        System.out.println("和是:" + rs2);

    }



    public static int sum(int a, int b) {

        int c = a + b;

        return c;

    }

}

定义方法的注意事项

  1. 方法的修饰符:暂时都使用public static 修饰。

  2. 方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据。

  3. 形参列表可以有多个,甚至可以没有;如果有多个形参,多个形参必须用“,”隔开,且不能给初始化值。

使用方法的好处

  1. 提高了代码的复用性,提高了开发效率。

  2. 让程序的逻辑更清晰。

方法的其他形式

设计一个合理的方法的原则如下:

  • 如果方法不需要返回数据,返回值类型必须申明成void(无返回值申明), 此时方法内部不可以使用return返回数据。

  • 方法如果不需要接收外部传递进来的数据,则不需要定义形参,且调用方法时也不可以传数据给方法。

  • 没有参数,且没有返回值类型(void)的方法,称为值无参数、无返回值方法。此时调用方法时不能传递数据给方法。

方法使用常见问题

  1. 方法在内种没有先后顺序,但是不能把一个方法定义在另一个方法中。

  2. 方法的返回值类型写void(无返回申明)时,方法内不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。

  3. return语句的下面,不能编写代码,属于无效的代码,执行不到这儿。

  4. 方法不调用就不会执行,调用方法时,传给方法的数据,必须严格匹配方法的参数情况。

  5. 调用有返回值的方法,有3种方式:

    1. 可以定义变量接收结果

    2. 或者直接输出调用

    3. 甚至直接调用

  6. 调用无返回值的方法,只有1种方式: 只能直接调用。

方法在计算机中的执行原理

我们知道Java程序的运行,都是在内存中执行的,而内存区域又分为栈、堆和方法区。那Java的方法是在哪个内存区域中执行呢?

答案是栈内存。 每次调用方法,方法都会进栈执行;执行完后,又会弹栈出去。

假设在main方法中依次调用A方法、B方法、C方法,在内存中的执行流程如下:

  • 每次调用方法,方法都会从栈顶压栈执行没执行

  • 每个方法执行完后,会从栈顶弹栈出去

方法参数的传递机制

Java的参数传递机制都是:值传递

所谓值传递:指的是在传递实参给方法的形参的时候,传递的是实参变量中存储的值的副本。

参数传递的基本类型数据

Java的参数传递机制都是:值传递,传递的是实参存储的值的副本。

基本类型和引用类型的参数在传递的时候有什么不同?

  • 都是值传递

  • 基本类型的参数传递存储的数据值

  • 引用类型的参数传递存储的地址值

方法重载

所谓方法重载指的是:一个类中,出现多个相同的方法名,但是它们的形参列表是不同的,那么这些方法就称为方法重载了。


public class MethodOverLoadDemo {

    public static void main(String[] args) {

        test();

        test(100);

    }



    public static void test() {

        System.out.println("===test1===");

    }



    public static void test(int a) {

        System.out.println("===test2===" + a);

    }



    void test(double a) {



    }



    void test(double a, int b) {

    }



    void test(int b, double a) {

    }



    int test(int a, int b) {

        return a + b;

    }

}

return单独使用

在方法中单独使用return语句,可以用来提前结束方法的执行。


public class Test {

    public static void main(String[] args) {

        System.out.println("开始");

        chu(10, 0);

        System.out.println("结束");

    }



    public static void chu(int a, int b) {

        if (b == 0) {

            System.err.println("参数异常");

            return; // 直接跳出并结束当前chu方法的执行

        }

        int c = a / b;

        System.out.println("除法结果是:" + c);

    }

}