zoukankan      html  css  js  c++  java
  • 方法的定义和使用

    方法的最大好处是可以进行重复调用,但是至于说那些操作要形成方法,这些都要根据你的实际项目经验而自我总结的。
    ##方法的基本定义
    限制条件:在主类中定义,并且由主方法直接调用的方法形式。
    方法就是一段可以被重复调用的方法块。在Java中要想进行方法的定义,则可以使用如下的语法完成。

    public static 返回类型 方法名称([参数类型 变量, ......]) {
        方法体代码;
        [return [返回值];]
    }

       

    在定义方法的时候对于方法的返回值有一下的两类:

        void:没有返回值;

        数据类型(基本类型,引用类型)。

    范例: 定义一个没有返回值,没有参数的方法

    public class Demo {
        public static void main(String[] args) {
            print();    //主方法里面直接调用方法
        }
        public static void print() {
            System.out.println("Hello    World!"); //定义方法
        }
    }

    范例: 定义一个有参数无返回值的方法

    public class Demo {
        public static void main(String[] args) {
            print("Hello");    //主方法里面直接调用方法
            print("    world");
            print("!");
        }
        public static void print(String msg) {    //定义方法
            System.out.print(msg);
        }
    }

       

    范例: 有参数有返回值的方法

    public class Demo {
        public static void main(String[] args) {
            int result = add(10, 20);
            System.out.println(result);
            //既然方法有返回值,那么这些返回值也可以直接输出
            System.out.println(add(100, 200));
        }
        public static int add(int x, int y) {    //定义方法
            return x + y;
        }
    }


    但是在定义方法的时候有一点特别要注意,如果某一个方法上使用了void定义,那么该方法可以直接用return来结束调用。一般而言,这种return的处理往往需要结合if判断来实现。

    public class Demo {
        public static void main(String[] args) {
            print(10);
            print(20);
        }
        public static void print(int x) {    //定义方法
            if(x == 20)        //表示的是方法结束的判断
                return;        //此语句之后的代码不再执行
            System.out.println("x = " + x);
        }
    }


    ##方法重载(重点)
    方法重载指的是:方法名称相同,参数的类型和个数不同。

    范例: 实现方法重载

    public class TestDemo {
        public static void main(String[] args) {
            //此时将根据参数的类型和个数的不同执行不同的方法体
            System.out.println(add(10, 20));
            System.out.println(add(30, 40, 50));
            System.out.println(add(1.1, 2.1));
        }
        public static int add(int x, int y) {
            return x + y;
        }
        //此时方法名称相同,参数的个数不同
        public static int add(int x, int y, int z) {
            return x + y + z;
        }
        public static double add(double x, double y) {
            return x + y;
        }
    }

       
    在进行方法重载的时候有一个重要的原则:要求方法的返回值类型一定要相同。

    范例: 观察如下程序

    public class TestDemo {
        public static void main(String[] args) {
            //此时将根据参数的类型和个数的不同执行不同的方法体
            System.out.println("hello");   //输出字符串
            System.out.println(1);            //输出整形
            System.out.println(1.1);        //输出浮点型
            System.out.println('A');        //输出字符
            System.out.println(true);        //输出布尔
        }
    }

     

    证明:System.out.println()是一个被重载的方法
    方法递归调用

    方法的递归调用指的是一个方法自己调用自己的形式。一般如果要进行方法的递归操作往往都具备有以下的特点:

        方法必须有一个递归的结束条件;

        方法在每次递归处理的时候一定要做出一些变更;

    范例: 实现1 ~ 100的累加操作

    public class TestDemo {
        public static void main(String[] args) {
            System.out.println(sum(100));
        }
        public static int sum(int num) {
            if(num == 1)
                return  1;
            return num + sum(--num);
        }
    }

     

        [main()调用] 第1次执行sum()方法 return 100 + sum(99);
        [sum()递归] 第2次执行sum()方法 return 99 + sum(98);
        [sum()递归] 第3次执行sum()方法 return 98 + sum(97);
        …
        [sum()递归] 倒数第2次执行sum()方法 return 2 + sum(1);
        [sum()递归] 倒数第1次执行sum()方法 return 1;

    范例: 实现60!,这个结果太大,应该使用double。

    public class TestDemo {
        public static void main(String[] args) {
            System.out.println(mul(60));
        }
        public static double mul(int num) {
            if(num == 1)
                return  1;
            return num * mul(--num);
        }
    }

    通过代码可以发现使用while循环的操作其实大部分都可以更换为递归,之所以使用递归主要是一个方法可以执行的操作很多,而且结构要好。

  • 相关阅读:
    自学android半年,已从.net转型成android程序员,分享下这个过程(转)
    深入浅出jsonp
    对程序员说点实在话(转)
    浅谈iOS学习之路(转)
    Quartz Cron表达式 在线生成器
    AutoMapper使用笔记
    毕业两年工作三年小结
    C#转C++的一点分享
    手机数据抓包以及wireshark技巧
    这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧。。。(转)
  • 原文地址:https://www.cnblogs.com/-lwl/p/10958991.html
Copyright © 2011-2022 走看看