10.方法

七.方法

通俗的来说Java就是以方法为单位的程序模块组成的类,java程序模块使得程序更为简洁和便于维护

1.方法的定义与调用

(1)代码(定义)

package 第三章;

public class 方法的定义和使用 {

    public static void main(String[] args) {

        dline();//调用时才会运行

        //方法与调用它的程序处于同一类则类名可以省略

        System.out.println("Hi , I am Alice .");

        dline();

        System.out.println("I have a good friend: Jack .");

        dline();

    }

    public static void dline() {//方法的语法定义<修饰符(包括访问控制修饰符public和类型修饰符static)> type<方法名>

        for(int i=0;i<30;i++)

           System.out.print("-");

        System.out.print("\n");

    }

}

对比(执行完方法体后继续执行,该程序没有小括号内容,但是小括号不能省略,小括号里面的内容涉及参数传递问题)

对比(加上类名.进行引用,由于在同一类中所以可以省略)

对比(不在同一类中一定要引用类名)

(2)知识点

【1】方法的语法定义形式如下:

<方法修饰符>type<方法名>(type<参数1>,type<参数2>,…){

程序语块

}

【2】方法修饰符包括两部分内容:

(1)访问控制修饰符(public,protected和private)

(2)类型修饰符(static,final,abstract,native和synchronized)

(3)其中static声明的方法为静态方法,可直接通过类名来调用。若该方法与调用它的程序处于同一类中,则类名也可以省略

【3】上述的type为该方法返回值的类型,若该方法无返回值,则方法的类型为void

【4】如果外界有数据要传递到该方法中,小括号中的参数变量用于接收数据,大括号之间的内容就是实现该方法功能的程序体,又叫方法主体

【5】方法调用的语句格式为

[类名].<方法名>(type<参数1>,type<参数2>……)

方法经定义后,是不会自动执行的(main()方法除外),它需要专门的语句去调用它,只有被调用时方法才会运行。

若调用语句与方法处于同一类中,则类名可以省略

【6】方法调用的执行过程

方法调用的执行过程是:Java应用程序从man()方法开始按程序流程依次执行,一旦执行到方法调用语句,便转向该方法的所有过程,直到该方法被执行完毕,程序流程回到 main0方法中的方法调用语句的下一句语句处继续执行剩下的语句。

2.参数的传递

(1)代码(求圆面积与体积)

package 第三章;

public class 参数船底求圆面积与体积 {

static double v_Circle;//声明在这里的变量

static double s_Circle;

public static void main(String args[]) {

    double radius=4;

    area(radius);//实际参数,调用方法

    volume(radius);

    System.out.println("V="+v_Circle);

    System.out.println("S="+s_Circle);

        }

//方法定义

public static void area (double r1) {//形式参数

           s_Circle=3.14*r1*r1;

}

//方法定义

public static void volume(double r2) {

           v_Circle=3*3.14*r2*r2*r2/4;

}

}

(2)知识点

当调用的方法需要传递参数时,参数通过置于方法名后的小括号内来进行传递,括号内的参数可以是数值、字符串甚至是对象。

1.常量或者变量作为参数的传递

2.数组作为参数的传递

在下面例题中,分别定义了从main()方法中获得参数(半径)值后计算面积和体积的两个方法:area()与 volumeO。在调用方法area0时,通过参数(radius)传递的方式让area中的变量r得到数据并和类型修饰 立即运算面积。volume()的调用方式与area0)是完全相同的。最后回到main()方法中输出计算

态方法,可 结果。

路。这里其他 1.变量或常数作为参数的传递

3.作用域

(1)知识点

v_Circle和s_Circle,用于存放计算好的面积与体积值,这类成员变量称为类变量,它们获得数据的位置是在方法area()与方法volume()中,并且要将数据带回到main()方法中完成输出的任务,因此它们的作用范围为整个类,所以类变量的声明位置应该在所有方法(包括 main(方法)的外面

与类变量不同的是:在例3.6.2 有个变量和r,这两个变量的声明位置是在方法 area()与方法volume()中的参数部分,因此它们的作用范围只在其对应方法的内部,一旦程序流程执行完了其所在的方法体,该变量将被系统自动释放,因此在其所在方法以外的位置是获取不到该变量数值的,这种类型的变量被称为局部变量。

4.return语句

(1)代码(阶乘)

package 第三章;

public class 阶乘 {

    public static void main(String[] args) {

         int mm=Mul(6);

         System.out.println("6!="+mm);

}

public static int Mul(int n) {//方法体

int m=1;

for(int i=1;i<=n;i++)

     m=m*i;

return m;//返回m值

    }

}

(2)代码(圆面积和体积)

package 第三章;

public class 有返回值圆面积 {

    public static void main(String args[]) {

        double v_Circle;//声明变量

        double s_Circle;

        double radius=4;

     s_Circle=area(radius);//使用

     v_Circle=volume(radius);

     System.out.println("V="+ v_Circle);

     System.out.println("S="+ s_Circle);

    }

    public static double area(double r1) {//方法体1,面积

        double s=3.14*r1*r1;

        return s;

    }

    public static double volume(double r2) {//方法体2,体积

        double v=3*3.14*r2*r2*r2/4;

        return v;

    }

对比(改变变量声明的位置)

(3)知识点

Return语句一般处于方法主体之中,用于返回方法所运算的值给调用者,即主程序,并终止方法的执行,回到调用方法的程序。当系统在执行方法主体中的语句时,一旦遇到return 语句的定义便立即结束该方法的运行(即不再执行 return语句后面的语句),并且将该方法的运行结果(返回值)返回到代码中调用它时的位置。

5.方法的嵌套调用

(1)代码(计算C63)

package 第三章;

public class 组合 {

    static int Mul(int n) {//方法Mul

         int m=1;

         for(int i=1;i<=n;i++)

            m=m*i;

         return m;

     }

     static int cc(int m,int n) {//方法cc

         return Mul(m)/(Mul(n)*Mul(m-n));//调用方法

     }

     public static void main(String args[]) {//主函数main

         System.out.println("C(6,3)="+cc(6,3));

    }

}

(2)代码(嵌套实现圆面积)

package 第三章;

public class 嵌套实现圆面积 {

    public static void main(String[] args) {//主函数main

        double radius=4;

        area(radius);

        volume(radius);

    }

    public static void area(double r1) {//方法area

        double s=3.14*r1*r1;

        display("area",s);//调用方法display

    }

    public static void volume(double r2) {//方法volume

        double v=3*3.14*r2*r2*r2/4;

        display("volume",v);//方法display

    }

    public static void display(String st,double x) {//方法display

        System.out.println(st+"="+x);//输出格式

    }

}

6.递归

(1)代码(求10的递归)

package 第三章;

public class 递归 {

    static long Fact(int n) {//方法的定义

         if(n==1)

            return 1;//返回值为1,即Fact(1)=1

         else

            return n*Fact(n-1);

     }

     public static void main(String args[]) {//主函数,先执行主函数,在回去执行方法

         int n=10;

         System.out.println(n+"!="+Fact(n));

}

}

(2)代码

(3)知识点

递归结构主要包括:

1)可以把一个问题转化为一个新问题,而新问题的解决方法仍与原问题解法相同,只是处理的对象有所不同,但它们应是有规律可循的。如对阶乘问题,当n>1时,n!问题可转化成(n-1)!的问题,而(n-1)!的问题又可转化为(n-2)!的问题,它们之间的转化规律为j!=j(j-1)!(1递推。

2)必须要有一个明确的结束条件,如当n=1时n!=1,在此称为递归终止条件,不然的话,递归将无休止地进行下去。当n=1时得到递归终止条件:1!=1,则按照递推公式我们就可以求运行结果 得2!,如此回推,直到求得n!的值,这个过程称为回归

因此递归实际上就是递推与回归的结合

你可能感兴趣的:(Java初阶学习笔记,java,jvm,开发语言)