方法是把一些相关的语句组织在一起,用于解决某一特定问题的语句块。方法必须放在类定义,也就是说,方法必须是某一个类的方法。另外,在应用程序中,某些任务常常要在一个程序中运行好多次,举个最简单的例子,对多个数组进行排序。此时我们就可以把这些相同的代码段写成一个单独的单元,需要的时候我们就来调用它
什么是方法? 现实生活中,在遇到问题时,我们会想一些方法来解决比如:教务管理系统中,包含学生的平均成绩
在JAVA中方法,其实也是一样的定义:方法就是完成特定功能的代码块
- 方法就是把一堆需要反复执行的业务逻辑代码封装起来,如果程序需要使用这段代码的时候,我们直接调用方法即可,就不需要返回的去写重复的代码了
好处:提高代码的重用性,维护性,可读性好,执行效率 - 可以把方法比喻一个榨汁机
- 材料:水果
- 参出物:果汁
- 映射到java程序中:
- 材料(参数):进入方法的数据
- 产出物(返回值):方法根据参数处理后的结果
怎么定义一个方法? - 访问修饰符 [static] 方法的返回值类型 方法名(形参列表){
逻辑代码块;
return 返回值;
}
1.访问修饰符(权限修饰符): - public:公共的,在当前项目下的任何地方都可以访问
- private:私有的,能在当前类下面访问
- protected:受保护的,在同一个包或者其他派生类中可以访问
- default:缺省,只能在当前包下面进行访问
2.方法的返回值类型:方法执行完成以后最终产生的结果是什么类型的
3.方法名 - 自己定义的名字,首字母小写,驼峰式命名法getStudentById
4.形参列表 :由多个形参组成的列表 (int a,int b) - 形参:用于接收调用者实际传过来的数据
5.return: - (1)把方法最终处理的结果返回给调用者
*(2)结束当前方法 - 注意:返回的数据类型必须要和返回值类型一致
无返回值的方法: - 方法执行一些操作,没有把执行结果返回给调用者,只是执行了方法的方法体
- 访问修饰符 [static] void 方法名(形参列表){
方法体;
//return;可以可不写 ,一般不写
}
参数传递:调用者在调用方法的时候,向方法内传入数据的一系列动作
形参:在【定义】方法时候,写在小括号里面的参数,作用接受调用者传递的数据 - public static int sum(int a,int b){//形参
实参:在【调用】方法的时候,真正传递到方法的数据 - int result=sum(10,20);//实参
规则:java中的参数传递机制 - 1)形参是基本数据类型:将实参的值传递给形参的基本数据类型的变量
- 2)形参是引用数据类型:将实参的引用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量
参数传递,有两种类型 - 基本数据类型(以及String):形参的操作不会影响实际的参数
- 引用数据类型:(除了String以后):形参的操作会影响实际参数
方法的返回值和返回类型:
返回值与return语句 - 有参函数的返回值,是通过函数中的return语句来获得的。
- return语句的一般格式:return返回值表达式;
- return语句的功能:返回调用函数,并将“返回值表达式”的值带给调用函数。
- 注意:调用函数中无return语句,可以用“void”定义成“无(空)类型”。
函数类型 - 在定义函数时,对函数类型的说明,应与return语句中、返回值表达式的类型一致。
作用域
作用域也就是作用范围,它有局部作用域和类作用域之分。
局部作用域:在java中,局部变量被定义在某个区块中。也就是说,某区块中定义的变量,只能供这个区块使用,区块以外使用则报错。在方法主体中声明的变量只具有那个方法的作用域;一旦方法结束,它们也会消失,而且只能由那个方法内部执行的代码来访问。这些变量称为局部变量(localvariable),因为它们局限于声明它们的那个方法,不能在其他任何方法的作用域中使用。换言之,你不能使用局部变量在不同的方法之间共享信息。
类作用域:在类定义体中(但不在某个方法中)声明的任何变量都具有那个类的作用域。在java语言中,使用成员变量一词来描述由一个类定义的变量。和局部变量不同,可以使用成员变量在不同的方法之间共享信息。
方法重载 - 如果两个方法名同名,而且在同一个作用域中声明,就可以说它们重载。方法重载是声明两个以上的同名方法,以实现对不同数据类型的相同处理。
方法重载有两点要求:重载的方法名称必须相同。
重载的方法,其形参个数或类型必须不同,否则将出现“已经定义了一个具有相同类型参数的方法成员”的编译错误。 - 方法的重载方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可
方法的重载的规则: - 重载方法的名字必须相同,参数列表必须不同(参数个数或者类型)
- 重载方法与返回值无关,返回值类型可以相同,也可以不同
- 仅仅返回类型不同不足以成为方法的重载
方法重载特点:与返回值类型无关,只看方法名和参数列表
在调用时,虚拟机通过参数列表的不同来区分同名方法