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循环的操作其实大部分都可以更换为递归,之所以使用递归主要是一个方法可以执行的操作很多,而且结构要好。

  • 相关阅读:
    LeetCode 230. Kth Smallest Element in a BST
    LeetCode 114. Flatten Binary Tree to Linked List
    LeetCode 222. Count Complete Tree Nodes
    LeetCode 129. Sum Root to Leaf Numbers
    LeetCode 113. Path Sum II
    LeetCode 257. Binary Tree Paths
    Java Convert String & Int
    Java Annotations
    LeetCode 236. Lowest Common Ancestor of a Binary Tree
    LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/-lwl/p/10958991.html
Copyright © 2011-2022 走看看