方法Method

方法

  • 方法是什么
  • 使用方法的好处
  • 方法的定义格式
  • 方法的其他写法
  • 方法常见问题
  • 方法的内存原理
  • 方法的参数传递机制
    • 基本类型的参数传递
    • 引用类型的参数传递
  • 方法重载
    • 方法重载的形式、作用
    • 方法重载的识别技巧
  • 补充知识:单独使用return关键字

方法是什么

  • 方法是一种语法结构,它可以把一段代码封装成一个功能,以方便重复调用。
    方法Method_第1张图片


使用方法的好处

  • 提高了代码的重复性
  • 让程序的逻辑更清晰

例如:


/**
求和方法
 */
public class MethodDemo1 {
    public static void main(String[] args) {

        int c1 = sum(10, 30);
        System.out.println("和是" + c1);

        int c2 = sum(50, 20);
        System.out.println("和是" + c2);

    }

	//求和方法sum
    public static int sum(int a, int b){
        int c = a + b;
        return c;
    }
}


方法的定义格式

方法Method_第2张图片

  • 方法的修饰符:暂时都是用public static 修饰。
  • 方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据。
  • 形参列表可以有多个,甚至可以没有;如果有多个形参,多个形参必须用 ","隔开,且不能给初始化值。


方法的其他写法

  • 方法定义时:返回值类型、形参列表可以按照需求进行填写。
    方法Method_第3张图片
    示例:

public class MethodDemo2 {
    public static void main(String[] args) {
        
        print();
        
    }
    
    //输出三次Hello World
    public static void print(){
        for (int i = 0; i < 3; i++){
            System.out.println("Hello World");
        }
    }

}

/*
运行结果为:
Hello World
Hello World
Hello World
*/

注意事项:

  • 如果方法不需要返回结果,返回值类型必须申明成void(无返回值),此时方法内部可以不使用return返回数据。
  • 方法如果没有参数,或者返回值类型申明为void可以称为无参数、无返回值的方法,依次类推。


方法常见问题

  1. 方法的编写顺序无所谓。
  2. 方法和方法之间是平级关系,不能嵌套。
  3. 方法的返回值类型为void(无返回值),方法内则不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。
  4. return语句下面,不能编写代码,因为永远执行不到,属于无效代码。
  5. 方法不调用就不执行,调用时必须严格匹配方法的参数情况。
  6. 有返回值的方法调用时可以选择定义变量接收结果,或者之间输出调用,甚至直接调用;无返回值方法的调用只能直接调用一下。

// 有返回值的方法调用时可以选择定义变量接收结果,或者之间输出调用,甚至直接调用;无返回值方法的调用只能直接调用一下。
public class MethodDemo3 {
    public static void main(String[] args) {
        
        // 定义变量接收
        int rs = sum(100, 200);
        
        // 输出调用
        System.out.println(sum(100, 200));
        
        // 直接调用(只是运行方法,但是没有要结果)
        sum(100, 200);
    }
    
    public static int sum(int a, int b){
        int c = a + b;
        return c;
    }
}


方法的内存原理



方法的调用流程:

  • 方法没有被调用的时候,在方法区中的字节码文件中存放。
  • 方法被调用的时候,需要进入到栈内存中运行。


方法调用流程:

1.调用方法方法Method_第4张图片

2.方法结束,退出栈内存
方法Method_第5张图片
3.输出值
方法Method_第6张图片
4.main方法运行完成,退出栈内存
方法Method_第7张图片

方法的参数传递机制

基本类型的参数传递



Java的参数传递机制:值传递

  • 在传输实参给方法的形参的时候,并不是传输实参变量本身,而是传输实参变量中存储的值,这就是值传递
    方法Method_第8张图片

注意:

  • 实参:如在方法内部定义的变量。
  • 形参:如在定义方法时,"( )"中所声明的参数。

方法Method_第9张图片

引用类型的参数传递



方法Method_第10张图片


change方法中引用的是数组的地址
方法Method_第11张图片


基本类型和引用类型的参数在传递的时候有什么不同?

  • 都是值传递。
  • 基本类型的参数传输存储的数据值。
  • 引用类型的参数传输存储的地址值。

方法重载

方法重载的形式、作用



方法重载

  • 同一个类中,出现多个方法名称相同,但是形参列表是不同的,那么这些方法就是重载方法

案例:

  • 需求如下:
    • 可以默认买一块糖果。
    • 可以买一块指定口味的糖果。
    • 可以买多块指定口味的糖果。

调用方法的时候,会通过参数的不同来区分调用的是哪个方法


public class OverLoad {
    public static void main(String[] args) {
        candy();
        candy("草莓");
        candy("青苹果", 3);
    }

    public static void candy(){
        System.out.println("默认买一块荔枝味的糖果~");
    }

    public static void candy(String taste){
        System.out.println("默认买一块" + taste + "味的糖果~");
    }

    public static void candy(String taste, int number){
        System.out.println("默认买" + number + "块" + taste + "味的糖果~");
    }
}

方法重载的作用:

  • 可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计。


方法重载的识别技巧

  • 只要是同一个类中,方法名称相同、形参列表不同,那么他们就是重载的方法,其他都不管!
    (如:修饰符,返回值类型都无所谓)
  • 形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。


补充知识:单独使用return关键字

  • return; 一> 可以立即跳出并结束当前方法的执行;return关键字单独使用可以放在任何方法中。
    方法Method_第12张图片
  • break;一> 跳出并结束当前所在循环的执行。
  • continue;一> 结束当前所在循环的当次继续,进入下一次执行。

你可能感兴趣的:(JAVA,java)