一:方法

<1> 定义:其实就是完成特定功能的代码块

<2>格式:修饰符   返回值类型   方法名(参数类型   参数1……){

                               方法体;

                                return   返回值;

                    }

              格式解释:

                            A:修饰符    暂时记住public  static

                            B:返回值类型       用于限定返回值的数据类型

                            C:方法名        为了方便我们调用方法

                            D:参数类型     用于限定调用方法时传入的数据的数据类型

                            E:参数名      用于接收调用方法时传入数据的变量

                            F:方法体       完成功能代码

                            G:return    结束方法     返回值带给调用者

两个明确:

                        A:返回值类型     明确功能结果的数据类型

                        B:明确几个参数,以及参数的数据类型

<3>  方法调用(有明确返回值的调用)

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

     A:单独调用    sum(10,20)   无意义

    B:  输出调用     System.out.println(sum(10,20));

            有意义   但不够好

     C: 赋值调用   int  r   =  sum(10,20);    推荐使用

<4> 调用方法图解

   方法与函数

<5>  void修饰方法的调用

      若一个方法没有明确的返回值类型,也不能把返回值类型空出来,就写void来表示返回值类型

      调用:void修饰的方法只能单独调用

<6>方法重载

    在同一个类中,出现了方法名相同的情况,这种情况叫方法重载

    特点:

            A:方法名相同

            B:参数列表相同

                     (1)参数个数不同

                       (2)参数对应的数据类型不同,于返回值无关,返回值类型无关

    注意:在调用方法的时候,JVM会通过方法参数列表的不同来识别同名方法

<7>方法参数传递问题

     (1)基本数据类型方法参数传递

             

public class ArgsDemo {

    public static void main(String[] args) {

        // 定义变量

        int a = 10;

        int b = 20;

        System.out.println("a:" + a + ",b:" + b);// a:10,b:20

        change(a, b);

        System.out.println("a:" + a + ",b:" + b);// a:10,b:20

    }

    public static void change(int a, int b) { // a=10,b=20

        System.out.println("a:" + a + ",b:" + b);// a:10,b:20

        a = b; // a=20;

        b = a + b;// b=40;

        System.out.println("a:" + a + ",b:" + b);// a:20,b:40

    }

}

有上面代码的运行结果可以得出结论:方法的参数若是基本数据类型,形式参数(形参)的改变不影响实际参数

    实际参数:实际参与运算的变量

    形式参数(形参):用于接收实际参数的变量

可是为什么能得出这样的结论:

方法与函数

(2)引用数据类型方法参数传递

      

public class ArgsDemo2 {

    public static void main(String[] args) {

        // 定义数组

        int[] arr = { 1, 2, 3, 4, 5 };

        // 遍历数组

        for (int x = 0; x < arr.length; x++) {

            System.out.println(arr[x]);

        }

        System.out.println("----------------");

        change(arr);

        for (int x = 0; x < arr.length; x++) {

            System.out.println(arr[x]);

        }

    }

    public static void change(int[] arr) {

        for (int x = 0; x < arr.length; x++) {

            // 如果元素是偶数,值就变为以前的2

            if (arr[x] % 2 == 0) {

                arr[x] *= 2;

            }

        }

    }

}

结论:若参数是引用数据类型,形式参数的改变直接影响实际参数

 为什么呢?

方法与函数

相关文章: