• 5.方法


    方法概述

    1.什么是方法

    方法(method) 是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集.

    注意:

    • 方法先创建在使用,成为定义
    • 方法创建后,需要调用才能使用

    2.方法的定义和调用

    定义方法的格式;

    public static void 方法名() {
    // 方法体
    }

    示例

    public class DefineDemo {
        public static void main(String[] args) {
        }
    
        public static void isEvenNumber() {
            // 定义便令
            int number = 10;
            // 判断是否为偶数
            if (number % 2 == 0) {
                System.out.println(true);
            } else {
                System.out.println(false);
            }
        }
    }
    

    方法的调用格式:

    格式:方法名;

    示例:isEvenNumber();

    方法定义调用示例

    package function;
    
    public class FunctionDemo {
        public static void main(String[] args) {
            // 调用方法
            isEvenNumber();
        }
    
        public static void isEvenNumber() {
            // 定义变量
            int number = 10;
            // 判断是否为偶数
            if (number % 2 == 0) {
                System.out.println(true);
            } else {
                System.out.println(false);
            }
        }
    }
    
    

    调用过程

    image-20200703214401960

    案例:获取两个数字中的较大者

    package function;
    
    public class getMax {
    
        public static void main(String[] args) {
            getmax();
        }
    
        // 定义一个方法,输出两个数字较大的数
        public static void getmax() {
            // 定义两个变量a,b
            int a = 10;
            int b = 20;
            // 使用分支判断比较两个数字的大小
            if (a > b) {
                System.out.println(a);
            } else {
                System.out.println(b);
            }
        }
    }
    
    

    3.带参数方法的定义和调用

    带参数的定义

    格式

    public static void 方法名(参数){...}
    

    单个参数示例

    public static void 方法名 (数据类型 变量名) {...}
    public static void isEvenNumber (int number) {...}
    

    多个参数示例

    public static void 方法名 (数据类型 变量名1, 数据类型 变量名2, ...) {...}
    public static void getMax (int number1, int number2) {...}
    

    注意:

    • 定义时,数据类型和变量名度不能缺少
    • 多个参函数之间用逗号隔开

    带参数方法的调用

    格式

    方法名(参数);
    

    格式(单个参数)

    方法名(变量名/常量值);
    isEvenNumber(5);
    

    格式(多个参数)

    方法名(变量名1/常量值1, 变量名2/常量名2);
    getMax(5, 6);
    

    注意:

    • 方法调用,参数的数量和类型必须与方法定义中设置相匹配,否则报错

    示例

    package function;
    
    /*
        带参数方法的定义和调用
        定义格式:
            public static void 方法名(参数) {...}
        调用格式:
            方法名(参数)
     */
    
    public class MethodDemo {
        public static void main(String[] args) {
            // 常量值的调用
            isEvenNumber(10);
            // 变量的调用
            int number = 10;
            isEvenNumber(number);
        }
    
        // 需求: 定义一个方法,接受一个参数,判断是否是偶数
        public static void isEvenNumber(int number) {
            if (number%2 == 0) {
                System.out.println(true);
            } else {
                System.out.println(false);
            }
        }
    }
    
    

    形参和实参

    形参: 方法中定义的参数, 等同于变量定义格式, 例如: int number

    实参: 方法中调用的参数, 等同于使用变量和常量, 例如10

    带参数方法示例

    package function;
    
    /*
        带参数方法的定义和调用
        定义格式:
            public static void 方法名(参数) {...}
        调用格式:
            方法名(参数)
     */
    
    public class getMax1 {
        public static void main(String[] args) {
            // 常量值的调用
            getMax(10, 20);
            // getMax(10.0, 20.0);  // 类型不符会报错
            // 变量的调用
            int a = 10;
            int b = 20;
            getMax(a, b);
        }
    
        // 需求: 定义一个方法,打印两个数字中的较大者
        public static void getMax(int a, int b) {
            // 比较两个数字大小
            if (a > b) {
                System.out.println(a);
            } else {
                System.out.println(b);
            }
        }
    }
    

    4.带返回值方法的定义

    带返回值方法的定义

    格式

    public static 数据类型 方法名(数据类型 参数) {
    	return 数据;
    }
    

    范例1

    public static boolean 方法名(数据类型 参数) {
    	return true;
    }
    

    范例2

    public static int getMax(int a, int b) {
    	return 100;
    }
    

    带返回值方法的调用

    格式1

    方法名(参数);
    isEvenNumber(5);
    

    格式2(推荐)

    数据类型 变量名 = 方法名(参数);
    boolean flag = isEvenNumber(5);
    

    示例

    package function;
    /*
        带返回值方法定义和调用
     */
    
    public class MethodReturnDemo {
        public static void main(String[] args) {
            // 1.方法名(参数)
            isEvenNumber(10);
    
            // 2.数据类型 变量名 = 方法名(参数)
            boolean flag = isEvenNumber(10);
            System.out.println(flag);
        }
        // 需求: 定义一个方法,接受参数,判断是否为偶数,返回真假
        public static boolean isEvenNumber(int number) {
            if (number%2 == 0) {
                return true;
            } else {
                return false;
            }
        }
    }
    
    

    5.方法注意事项

    注意事项

    1. 方法不能嵌套定义
    2. void表示无返回值,可以省略return, 也可以单独写return, 后面不加数据
    package function;
    /*
        注意事项:
            1. 方法不能嵌套定义
            2. void表示无返回值,可以省略return, 也可以单独写return, 后面不加数据
     */
    public class MethodNotice {
        public static void main(String[] args) {
    
        }
    
        public static void methodOne() {
    
        }
    
        public static void methodTwo() {
            // return 100;  // void没有返回值,会报错
            return;
        }
    }
    
    

    方法通用格式

    格式:

    public static 返回数据类型 方法名(参数) {
    	方法体;
    	return 数据;
    }
    
    • public static: 修饰符

    • 返回值类型: 方法操作后返回的数据类型

    • 方法名: 调用方法是使用的标识

    • 参数: 有数据类型和变量名组成,多个参数之间用逗号隔开

    • 方法体: 完整功能的代码块

    • return: 操作完毕,有数据返回,return返回值

    定义方法,明确两点:

    • 明确返回值类型:明确方法是否有返回值, 没有,写void;有,写返回数据类型
    • 明确参数数据类型: 明确参数的类型和数量

    调用方法时,明确两点:

    • void类型方法, 直接调用
    • 非void类型方法, 推荐使用变量接受调用

    6.方法重载

    方法重载, 指同一个类中定义了多个方法之间的关系, 满足下列条件的多个方法构成方法重载.

    • 多个方法在同一个类中
    • 多个方法具有相同的方法名
    • 多个方法的参数不同,类型不同或数量不同

    特点:

    • 重载仅对应方法的定义, 与方法的调用无关
    • 重载仅针对同一类中方法的名称与参数进行识别,与返回值无关,换句话说,不能通过返回值来判断两个方法是否相互构成重载.

    image-20200925164142678

    package function;
    
    /*
        方法重载:
            与返回值无关
            在调用时,java虚拟机通过参数不同来区分方法
     */
    
    public class MethodReload {
        public static void main(String[] args) {
    
            // 调用方法
            int result = sum(10, 20);
            System.out.println(result);
    
            double result2 = sum(10.0, 20.0);
            System.out.println(result2);
    
            int result3 = sum(10, 20, 30);
            System.out.println(result3);
        }
    
        // 需求1: 两个int类型数据和的方法
        public static int sum(int a, int b) {
            return a + b;
        }
    
        // 需求2: 两个double类型数据和的方法
        public static double sum(double a, double b) {
            return a + b;
        }
    
        // 需求3: 三个int类型数据和的方法
        public static int sum(int a, int b, int c) {
            return a + b + c;
        }
    }
    
    

    练习

    需求: 按方法重载思路,设计比较两个数是否相等,兼容全整数类型(byte,short,int,long)

    package function;
    
    /*
        需求: 按方法重载思路,设计比较两个数是否相等,兼容全整数类型(byte,short,int,long)
        思路:
            1.定义compare方法,比较int类型
            2.参数变更为long类型,比较
            3.参数变更为shot类型,比较
     */
    
    public class MethodReloadPractice {
        public static void main(String[] args) {
            // 调用方法
            System.out.println(compare(10, 20));
            System.out.println(compare((byte) 10, (byte) 20.0));
            System.out.println(compare((short) 10, (short) 20));
            System.out.println(compare(10L, 20L));
        }
    
        // 需求1: 两个int
        public static boolean compare(int a, int b) {
            System.out.println("int");
            return a == b;
        }
    
        // 需求2: 两个byte
        public static boolean compare(byte a, byte b) {
            System.out.println("byte");
            return a == b;
        }
    
        // 需求3: 两个short
        public static boolean compare(short a, short b) {
            System.out.println("short");
            return a == b;
        }
    
        // 需求4: 两个long
        public static boolean compare(long a, long b) {
            System.out.println("long");
            return a == b;
        }
    }
    
    

    7.方法的参数传递

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

    对于基本类型的参数,形式参数的传递, 不影响实际参数的值

    package function;
    
    public class MethodParamTransform {
        public static void main(String[] args) {
            int number = 100;
            System.out.println("调用change方法前:" + number);
            change(number);
            System.out.println("调用change方法后:" + number);
        }
    
        public static void change(int number) {
            number = 200;
        }
    }
    
    // 调用change方法前:100
    // 调用change方法后:100
    

    image-20200927141509862

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

    对于引用类型的参数,形式参数的传递, 影响实际参数的值

    package function;
    
    public class MethodParamTransform {
        public static void main(String[] args) {
            int [] arr = {10, 20, 30};
            System.out.println("调用change方法前:" + arr[1]);
            change(arr);
            System.out.println("调用change方法后:" + arr[1]);
        }
    
        public static void change(int[] arr) {
            arr[1] = 200;
        }
    }
    
    // 调用change方法前:20
    // 调用change方法后:200
    

    image-20200927141407966

    8.参数传递案例

    • system.out.println("内容"); 输出内容并且换行
    • system.out.print("内容"); 输出内容不换行

    需求: 遍历一个数组,要求遍历的结果是在一行上的.例如[11, 22, 33, 44, 55]

    package function;
    
    public class MethodParamTransform2 {
        public static void main(String[] args) {
            int[] arr = {11, 22, 33, 44 ,55};
            printArr(arr);
        }
    
        // 定义一个方法,用于遍历数组
        /*
        两个明确:
        - 明确返回值类型:void
        - 明确参数: int[] arr
         */
        public static void printArr(int[] arr) {
            System.out.print("[");
            for(int x=0; x<arr.length; x++) {
                if (x == arr.length - 1) {
                    System.out.print(arr[x]);
                } else {
                    System.out.print(arr[x] + ", ");
                }
            }
            System.out.println("]");
        }
    
    }
    
    

    debugg概述

    debug: 是供程序员使用的程序调试工具, 他可以用于查看程序的执行流程, 也可以用于追踪程序执行过程来调试程序.

    操作流程

    Debug调试,称为断点调试, 断点是一个标记

    • 如何加断点

    选择要设置断点的代码行,在行号的区域后单击鼠标左键.

    image-20200927143415108

    • 如何运行加断点的程序

    代码区右键debug执行

    image-20200927143449418

    • 看哪里

    看Debugger窗口

    image-20200927143543039

    看console窗口

    image-20200927143624995

    • 点哪里

    点Step(F7),或者按F7可以下一步

    image-20200927143742398

    • 如何删除断点

    选择删除的断点,可以删除

    debug示例

    package debug;
    
    public class DebugTest {
        public static void main(String[] args) {
            // 定义求和变量
            int sum = 0;  // debug断点
            // 循环求偶数和
            for(int i=1;i<=10; i++) {
                if(i%2 == 0){
                    sum += i;
                }
            }
    
            // 输出结果
            System.out.println("1-10之间的偶数之和是: " + sum);
    
        }
    }
    
    

    数组反转实例

    需求: 已知一个数组, arr = {19, 28, 37, 46, 50}; 用程序实现把数组元素进行交换.

    package exercise;
    
    public class ArrayReverse {
        public static void main(String[] args) {
            // 定义一个数组
            int[] arr = {18, 28, 37, 46, 50};
    
            // 遍历数组,初始化定义两个索引变量, 开始索引小于结束索引,进行数值交换
            for(int start=0,end=arr.length-1; start<=end; start++,end--) {
                // 交换变量
                int temp = arr[start];
                arr[start] = arr[end];
                arr[end] = temp;
            }
    
            // 打印数组
            printArray(arr);
        }
    
        public static void printArray(int[] arr) {
            System.out.print("[");
            for (int x=0; x<arr.length; x++) {
                if(x == arr.length-1) {
                    System.out.print(arr[x]);
                } else {
                    System.out.print(arr[x] + ", ");
                }
            }
            System.out.println("]");
        }
    }
    
    
  • 相关阅读:
    使用Modelsim对Nios II系统进行系统级仿真
    电视相关知识学习
    SAD和SATD的区别[摘]
    vim自动补全括号的最好方法
    vim sinppets插件介绍
    在centos下安装开发环境
    初始化以及动态设置Edit控件的背景及字体颜色
    CTreeCtrl SetItemData 释放问题
    C#4.0 新特性 匿名方法,lambds
    对象序列化Serialization与Deserialize方法进行反序列化
  • 原文地址:https://www.cnblogs.com/ryxiong-blog/p/13890172.html
Copyright © 2020-2023  润新知