使程序结构更清晰
提高程序的开发效率
提高代码的复用性
有利于程序的维护
方法(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方法*/
//方法体
}
}
结论:
传入方法中的是具体的值
传递基本数据类型的参数,形参的改变,不影响实参的值,因为在方法中定义的变量是局部变量
结论依据:
每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失,里面的东西也会跟着消失
结论:
传递引用数据类型的参数:传递的是地址值,形参的改变,会影响实参的值 。
结论依据:
引用数据类型的传参,因为传入的是地址值,形参和实参两个引用就会指向同一个内存空间,所以即使方法弹栈了,堆内存中的数据也已经改变了