Java中的方法

发布时间:2024年01月15日

方法概述

为什么要使用方法?

  • 使程序结构更清晰

  • 提高程序的开发效率

  • 提高代码的复用性

  • 有利于程序的维护

方法的概念

方法(method):用来解决某件事情或实现某个功能的办法。方法就是可以完成某个功能的代码块

  • 注意:

    • 方法必须先定义,后调用,否则程序将报错

    • 方法定义后并不是直接可以运行的,需要手动调用才会执行

    • 可以在方法中调用其他的方法

方法在内存结构中的调用过程

  • 栈内存用的是栈这种数据结构

  • 总结:每个方法在被调用时,都会进入到栈内存中,并且拥有自己独立的内存空间;方法执行完后,就会从栈内存中弹出。

如何定义方法

定义方法的通用格式

  • 格式:

    修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,...) {
       方法体; 
        ...
       return 返回值;
    }
  • 具体说明:

    • 修饰符:权限访问控制修饰符、static修饰符、final修饰符等

    • 返回值类型:定义方法返回值的数据类型

    • 方法名:用户自定义的标识符

    • 参数类型:就是数据类型,用于限定 调用方法时 传入参数的数据类型(形参和实参的数据类型要一致)

    • 参数名:是一个变量,用于接收调用方法时传入的数据

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

    • return关键字:用于将返回值给调用方并结束方法(返回的值的类型必须和定义方法时的返回值类型相同)

    • 返回值:return语句返回的值,会返回给调用者

  • 注意事项:

    • 方法的返回值通常会使用变量接收,否则该返回值将无意义

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

    • 如果方法没有返回值,则声明为void类型,此时可以省略return语句;也可以单独的书写return,但后面不加数据。

方法的注意事项

方法不能嵌套定义

方法的重载

方法重载

  • 方法的重载:

    • 在同一作用域中(在同一个类中),方法名相同,但是参数的类型或参数个数不同的多个方法相互构成重载。方法的重载和返回值类型无关,只与参数有关

    • 在调用重载的方法时,会根据参数确定调用的是哪个方法

正确示例:

public class MethodDemo {
	public static void fn(int a) {
    	//方法体
    }
    public static int fn(double a) {
    	//方法体
    }
}

public class MethodDemo {
	public static float fn(int a) {
    	//方法体
    }
    public static int fn(int a , int b) {
    	//方法体
    }
}

错误范例:

public class MethodDemo {
	public static void fn(int a) {
    	//方法体
    }
    public static int fn(int a) { 	/*错误原因:重载与返回值无关*/
    	//方法体
    }
}

public class MethodDemo01 {
    public static void fn(int a) {
        //方法体
    }
} 
public class MethodDemo02 {
    public static int fn(double a) { /*错误原因:这是两个类的两个fn方法*/
        //方法体
    }
}

调用方法时的参数传递

传递基本类型(传值调用)

  • 结论:

    • 传入方法中的是具体的值

    • 传递基本数据类型的参数,形参的改变,不影响实参的值,因为在方法中定义的变量是局部变量

  • 结论依据:

    • 每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失,里面的东西也会跟着消失

传递引用数据类型(传址调用)

  • 结论:

    • 传递引用数据类型的参数:传递的是地址值,形参的改变,会影响实参的值 。

  • 结论依据:

    • 引用数据类型的传参,因为传入的是地址值,形参和实参两个引用就会指向同一个内存空间,所以即使方法弹栈了,堆内存中的数据也已经改变了

文章来源:https://blog.csdn.net/m0_61925586/article/details/135590996
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。