当程序中出现高频率使用的代码时,我们一遍又一遍去敲它很繁琐。这个时候Java给了我们一种方式来提高我们编写程序的效率——方法。
1.方法
方法就是一个带名字的能够解决特定问题的代码块 ,可以方便我们多次使用。所谓方法,就是,就是解决一类问题的代码的有序组合,是一个功能模块(实现功能的代码块)。编程语言中的方法是组合在一起来 执行操作语句的集合。例如 System.out.println() 方法,该系统实际上是为了在控制台上输出的消 息执行多条语句。
为什么我们要用到这个方法呢?
1. main方法过于臃肿
2. 重复执行的代码块命名,方便重复使用
3. 方便自上而下分解问题
4. 方便维护代码
下面来讲下怎么定义方法和定义方法是需要注意哪些点!
(1)位置:需要在类名内,所有方法外,因为方法不能被嵌套只能调用(不调用不会执行)。
(2)格式:
修饰符 返回值类型 方法名(参数列表){ 实现功能的代码段; return 返回值; }
修饰符:访问权限修饰符,先默认定义为public static
返回值类型 : 思考方法体代码执行完毕之后,是否需要得到一个结果|数据值,如果需要就定义为有返回值类型的方法,不需要就定义为没有返回值类型的方法
方法名:随意起最好见名知意,并注意命名规则,根据方法名去调用方法
参数列表 : 可以定义参数,可以不定义参数,可以定义多个参数(根据所需功能)
1.形式参数(形参) : 定义方法时()中的参数
2.实际参数(实参) : 调用方法时()中的参数
- 形参与实参之间需要一一对应
- 个数一致 类型一致
- 不同类型的形参顺序一致
注:形参的数据类型>=实参的数据类型
分析: 在方法的定义或者实现过程中,是否存在未知的,不确定的,可能会改变的数据,如果存在定义在方法的参数列表上
参数列表: 数据类型 参数名1,数据类型 参数名2.... --> 相当于变量的声明 数据类型可以为任意数据类型
return : 1.当方法中不需要返回值时可以作为提前结束方法
2.当方法中需要有返回值时,return后面跟返回值。
(注:)在一个有返回值类型的方法必须存在return关键字
//实例代码——方法的定义(此例为定义的方法有返回值没有参数)
public class Class001_Method {
//类中方法外的位置(没有返回值时用void)
public static void main(String[] args) {
//赋值调用(第一种调用方法)
double d = getPI();
System.out.println(d);
//输出调用(第二种调用方法)
System.out.println(getPI());
System.out.println(getSum(3,5));
}
//需求 : 定义一个功能: 返回PI的值
//返回值: 需求 double
//参数: 不需要
//方法名: getPI()
public static double getPI(){
System.out.println("有返回值的,没有参数的方法");
return 3.1415926;
}
}
(3)方法的调用
方法的调用有三种类型:
1.普通调用:方法名();
用于方法中没有返回值,可以使用普通调用。
2.赋值调用:数据类型 变量名 = 方法名(参数列表);
用于方法中有返回值,定义一个与返回值数据类型相同或者大于返回值类型的变量去接收返回值。
3.输出调用:System.out.println(方法名(参数列表));
用于方法中有返回值,直接用输出语句去输出返回值。
2.方法的重载
Java中允许方法定义时存在一种现象,在一个类中当方法完成的功能类似时,可以使用相同的名称,并且保证方法的参有所不同,可以参数的个数、类型、顺序任何一个不同即可。保证方法签名唯一。
(方法签名:方法的签名,确保在一个类中的 唯一性 。方法的签名只看 方法名和形参( 类型 个数 和顺序) ,与修饰符 返回类型 和形参名无关。)
1.方法重载的前提:
当一个类中实现某个功能的时候,这个功能却有不同的实现方式|需要接受不同的参数,可以让这些相同功能实现的方法,构成方法的重载,就允许方法名相同
2.要求: 同一个类中的多个方法,方法名相同,参数列表不同
同一个类中的多个方法 方法名相同 参数列表不同|方法签名不同
注意区分方法的不同是参数列表不同:
- 参数个数不同
- 参数的类型不同
- 类型的参数顺序不同
//实例代码-定义一个方法求和(重载)
public class Class001_Overload {
public static void main(String[] args) {
//调用
getSum(1,1.1);
}
//对数求和
public static void getSum(int x,int y){
System.out.println("两个int类型参数的和"+(x+y));
}
//参数的个数不同
public static void getSum(int x,int y,int z){
System.out.println("三个int类型参数的和"+(x+y+z));
}
//参数的类型不同
public static void getSum(int x,double y){
System.out.println("一个int,一个double类型参数的和"+(x+y));
}
//类型的参数顺序不同
public static void getSum(double y,int x){
System.out.println("一个double,一个int类型参数的和"+(x+y));
}
}