A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 xiekai_sjz 于 2018-8-26 09:45 编辑

方法方法的使用
复习简单方法的使用
方法定义格式:
    public static void 方法名称() {
        方法体
    }

方法调用格式:
        方法名称();


方法注意事项:
    1. 方法定义的先后顺序无所谓。
    2. 方法定义必须是挨着的,不能在一个方法的内部定义另外一个方法。
    3. 方法定义之后,自己不会执行的;如果希望执行,一定要进行方法的调用。


// 生成指定次数的for循环, 从0开始, 小于整数, 每次递增
5.fori
for (int i = 0; i < 5; i++) {

}

// 生成指定次数的for循环, 从整数开始, 大于0, 每次递减
5.forr
for (int i = 5; i > 0; i--) {

}
方法的定义格式
定义方法的完整格式:
                             数据类型 变量名  int a, int b, double c
    修饰符 返回值类型 方法名称(参数类型 参数名称, 参数类型 参数名称, ...) {  // 参数列表
        方法体
        return 返回值;
    }

    // 说明
    修饰符:    目前写 public static
    返回值类型: 方法执行结果的数据类型
    方法名称:  方法的名字, 便于调用方法
    参数类型:  传递进方法的数据的类型
    参数名称:  传递进方法的数据的变量名称
    方法体:    方法功能的实现代码
    return:    结束当前方法, 并将返回值还给方法调用处
    返回值:    方法执行结果. 返回值的数据类型必须和返回值类型一致
[Java] 纯文本查看 复制代码
// 求两个整数的和, 返回结果
public static int sum(int a, int b) {
        int result = a + b;
        return result;
}

public static double sum(double a, double b) {
        double result = a + b;
        return result;
}

方法的三种调用格式
方法的3种调用方式:
    1. 单独调用:
            方法名称(参数);
            sum(1, 2);

    2. 打印调用:
            System.out.println(方法名称(参数));
            System.out.println(sum(1, 2));

    3. 赋值调用:
            数据类型 变量名称 = 方法名称(参数);
            int sum = sum(1, 2);


void方法只能单独调用,不能进行打印调用或者赋值调用。
方法的调用流程图解
总结:
方法调用流程:
对比有参数和无参数
定义参数原则:
        如果方法执行依赖于外部数据, 就要定义参数
        如果方法自身能完成功能, 则不需要参数
对比有返回值和无返回值
定义返回值原则:
        如果方法执行结果, 需要被外界使用, 则需要返回值
        如果方法执行结果, 不需要告诉外界, 则不需要返回值

注意事项:
        有返回值的方法,可单独调用, 打印调用, 赋值调用
        无返回值的方法, 只能单独调用
方法练习1: 定义方法比较两个数字是否相同
需求: 定义一个方法,用来判断两个数字是否相同, 在main()方法中测试
代码:
[Java] 纯文本查看 复制代码
/*
需求: 定义一个方法,用来判断两个数字是否相同, 在main()方法中测试
 */
public class Test {
    // psvm
    public static void main(String[] args) {
        // 打印调用
        System.out.println(isSame(10, 20)); // false
        System.out.println(isSame(20, 20)); // true
    }

    /*
    判断两个数字是否相同
    返回值类型: boolean
    方法名: isSame
    参数列表: int a, int b
     */
    public static boolean isSame(int a, int b) {
        // 复杂方式
        /*boolean same;
        if (a == b) {
            same = true;
        } else {
            same = false;
        }
        return same;*/

        // 三元运算符方式
        /*boolean same = a == b? true : false;
        boolean same = a == b;
        return same;*/

        // 直接返回方式
//        return a == b;

        //if中直接返回结果方式
        if (a == b) {
            return true;
        } else {
            return false;
        }

    }
}

方法练习2: 定义方法求出1到100的累加和
需求: 定义一个方法,方法内部求出1-100之间所有数字的总和并返回. 在main()方法中调用并打印结果
代码:
[Java] 纯文本查看 复制代码
/*
需求: 定义一个方法,方法内部求出1-100之间所有数字的总和并返回. 在main()方法中调用并打印结果
 */
public class Test {
    public static void main(String[] args) {
        System.out.println("结果是:" + getSum());
    }

    /*
    求出1-100之间所有数字的总和并返回
    返回值类型: int
    方法名称: getSum
    参数列表: 无
     */
    public static int getSum() {
        // 定义求和变量
        int sum = 0;
        // for循环产生1-100的数字
        for (int i = 1; i <= 100; i++) {
            // 累加到sum
            sum += i;
        }
        // 返回结果
        return sum;
    }
}

方法练习3: 打印指定次数的HelloWorld
需求: 定义一个方法,方法内部打印指定次数的HelloWorld. 次数通过方法的参数传递. 在main()方法中调用并打印结果
代码:
[Java] 纯文本查看 复制代码
/*
需求: 定义一个方法,方法内部打印指定次数的HelloWorld. 次数通过方法的参数传递. 在main()方法中调用并打印结果
 */
public class Test {
    public static void main(String[] args) {
        printHelloWorld(10);
    }

    /*
    打印指定次数的HelloWorld
     */
    public static void printHelloWorld(int num) {
        for (int i = 0; i < num; i++) {
            System.out.println("Hello world!!" + i);
        }
    }
}

方法定义的注意事项
注意事项:
    1. 方法应该定义在类当中,但是不能在方法当中再定义方法。不能嵌套
    2. 方法定义的前后顺序无所谓
    3. 方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用
    4. 如果方法有返回值,那么必须写上"return 返回值;",不能没有
    5. return后面的返回值数据,必须和方法的返回值类型,对应起来
    6. 对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己
    7. 对于void方法当中最后一行的return可以省略不写
    8. 一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写
方法的重载方法重载的基本使用
方法重载:
        Overload
        多个方法, 名称相同, 参数列表不同

重载的好处: 定义多个方法实现类似的多个功能, 只需要记住一个方法名称
方法重载的注意事项
重载注意事项:
        方法重载的参数列表不同包括:
                1. 参数个数不同
                2. 参数类型不同
                3. 参数的多类型顺序不同
        重载与以下无关
                1. 与参数的名称无关
                2. 与方法的返回值类型无关
               
多个方法, 名称相同, 参数列表不同(参数个数不同 || 参数类型不同 || 参数的类型顺序不同), 和参数名无关, 和返回值类型无关
[Java] 纯文本查看 复制代码
// 查看以下方法是否为重载关系
public class Test {
    public static int sum(int a, int b) {
        return a + b;
    }

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

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

重载练习1: 四种不同参数类型的方法
注意重载的方法如何通过参数确定调用哪个方法

需求: 定义方法比较两个数据是否相等
        参数类型分别为:
                两个byte类型
                两个short类型
                两个int类型
                两个long类型
        并在main()方法中测试
代码:
[Java] 纯文本查看 复制代码
/*
需求: 定义方法比较两个数据是否相等
        参数类型分别为:
                两个byte类型
                两个short类型
                两个int类型
                两个long类型
        并在main()方法中测试
 */
public class Test {
    public static void main(String[] args) {
        System.out.println(isSame((byte)10, (byte)20));
        System.out.println(isSame((short)10, (short)20));
        System.out.println(isSame(10, 20));
        System.out.println(isSame(10L, 20L));
    }

    // 比较两个byte类型是否相等
    public static boolean isSame(byte a, byte b) {
        System.out.println("byte参数的方法执行");
        return a == b;
    }

    // 比较两个short类型是否相等
    public static boolean isSame(short a, short b) {
        System.out.println("short参数的方法执行");
        return a == b;
    }

    // 比较两个int类型是否相等
    public static boolean isSame(int a, int b) {
        System.out.println("int参数的方法执行");
        return a == b;
    }

    // 比较两个long类型是否相等
    public static boolean isSame(long a, long b) {
        System.out.println("long参数的方法执行");
        return a == b;
    }
}

重载练习2: 判断方法的正确重载
[Java] 纯文本查看 复制代码
public class Demo03OverloadJudge {

    public static void open(){}
    
    public static void open(int a){}          // 正确重载
    static void open(int a,int b){}           // 代码错误:和第8行冲突
    public static void open(double a,int b){} // 正确重载
    public static void open(int a,double b){} // 代码错误:和第6行冲突
    public void open(int i,double d){}        // 代码错误:和第5行冲突
    public static void OPEN(){}               // 代码正确不会报错,但不是重载
    public static void open(int i,int j){}    // 代码错误:和第3行冲突
}

重载练习3: 实现重载的println方法
需求: 自己定义方法, 能够打印各种类型的数据:
        byte, short, int, long, float, double, char, boolean
        String

















4 个回复

倒序浏览
消灭零回复
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
原本觉得都会,做题也会,不过听完之后倒是觉得模糊了.然后我就又捋了捋,吓得我都不敢往后看了,不过再一看时间,好紧啊,后面的更抽象,不预习不行,今晚只能两点睡了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马