方法

在我们的日常生活中,会遇到各种各样的问题,而我们需要寻求这些问题的解决办法,也就是解决方法,所以方法在日常生活中也是无处不在的。在java中,我们去解决某个问题并找到这个问题的解决办法就是方法。方法中封装的是解决问题的具体代码实现的功能,而我们只需要调用这个方法名就可以去解决这个问题。像之前学过的随机数的调用,就是调用的nextInt()方法来实现随机数的产生。

定义方法的格式:

修饰符 返回值类型 方法名(参数列表…){

         功能实现的具体代码

         return;

}

方法格式分析:

修饰符:用于修饰该方法的各种状态,修饰符比较多,现在先是固定的,会面会逐渐进行接触的,public staticpublic权限修饰符,权限最大化,static,静态的,也是数据共享的意思。

返回值类型:方法实现功能返回结果的数据类型,返回结果什么类型就写什么类型。

方法名:方法名的定义遵循标识符的规则,第一个单词都小写,后面每个单词的首字母都大写。

参数列表:是否有未知数据的参与,没有就不定义

return:有两个作用,其一是返回这个功能的结果,其二是用于结束方法。

下面通过一个代码来演示方法定义的具体情况:

/*
需求:计算长方形的面积(在方法中实现这个功能)
思路:1、定义一个方法getArea()在方法中实现
           2、修饰符:public static
           3、返回值类型:计算长方形的面积返回后是一个整数类型的值,int
           4、方法名:遵循标识符的定义规则getArea()
           5、参数列表:在功能实现过程中,有未知的数据参与运算,长和宽,int length,int weight
           6、return的是面积。
           7、调用该方法的功能,在main方法中进行调用
*/
public class MethodDemo{
         public static void main(String[] args){
                   //调用getArea()方法,传入长和宽的值
                   int area = getArea(4,8);
                   //打印该面积的值
                   System.out.println("该长方形的面积是:"+area);
         }
         //定义方法,实现功能的封装
         public static int getArea(int length,int weight){
                   //计算面积的功能实现
                   //int area = length * weight;
                   return length * weight;
         }
}

方法定义练习

练习一:打印三行三列的“*”矩形

/*
需求:打印三行三列的”*“矩形
思路:1、定义功能方法
           2、修饰符:public static
           3、返回值类型:在控制台打印图形即可 ,没有返回值类型void
           4、方法名:符合标识符的定义规则即可,printRect()
           5、参数列表:已经规定是三行三列,不需要定义参数列表
*/
public class MethodDemo_1{
         public static void main(String[] args){
                   //调用功能方法
                   printRect();
         }
         //定义功能方法
         public static void printRect(){
                   //使用for循环遍历打印矩形
                   for(int i=0;i<3;i++){
                            for(int j=0;j<3;j++){
                                     System.out.print("*");
                            }
                            System.out.println();
                   }
         }
}

练习二:键盘输入一个数并打印这个数

/*
需求:键盘输入一个数并打印这个数
思路:1、定义功能方法
           2、修饰符:public static
           3、返回值类型:需要返回输入的这个数,int
           4、方法名:遵循标识符的定义规则即可,getNumber()
           5、参数列表:没有未知数据的参与,只需要自己在键盘输入这个数即可
*/
import java.util.Scanner;
public class MethodDemo_2{
         public static void main(String[] args){
                   //调用功能方法
                   //int num = getNumber();
                   System.out.println(getNumber());
         }
         //定义方法功能
         public static int getNumber(){
                   //定义Scanner类,完成键盘的输入
                   Scanner sc = new Scanner(System.in);
                   //int number = sc.nextInt();
                   //返回输入的数据给调用者
                   return sc.nextInt();
         }
}

练习三:打印指定M行,每行N*号的矩形

/*
需求:打印指定M行,每行N个*号的矩形
思路:1、定义功能方法
           2、修饰符:public static
           3、返回值类型:打印图形,无返回值void
           4、方法名:符合标识符的定义规则即可,printRect()
           5、参数列表:需要自己去指定图形的行数和列数,int m,int n
           6、调用功能方法
*/
public class MethodDemo_3{
         public static void main(String[] args){
                   //调用功能方法
                   printRect(6,7);
         }
         //定义功能方法
         public static void printRect(int m,int n){
                   //通过for循环遍历打印图形
                   for(int i=0;i<m;i++){
                            for(int j=0;j<n;j++){
                                     System.out.print("*");
                            }
                            System.out.println();
                   }
         }
}

练习四:求三个数的平均数

/*
需求:求三个数的平均数
思路:1、定义功能方法
           2、修饰符:public static
           3、返回值类型:求平均数结果需要返回这三个数的平均数的值,int
           4、方法名:符合标识符的定义规则即可,getAvg()
           5、参数列表:需要三个未知数据的参与,int a,int b,int c
           6、调用功能方法
*/
public class MethodDemo_4{
         public static void main(String[] args){
                   //调用功能方法
                   int avg = getAvg(4,8,9);
                   System.out.println("三个数的平均值是:"+avg);
         }
         //定义功能方法
         public static int getAvg(int a,int b,int c){
                   //返回计算后的值
                   return (a+b+c)/3;
         }
}

定义方法时的一些注意事项:

1、 方法写在类中,方法与方法不能嵌套,也就是说一个方法不能写进另一个方法中,

2、 在调用方法时方法名和参数列表一定不能写错,否则失败

3、 方法的返回值如果是void,ruturn可以省略不写,但是方法中return后面一定不能写其他语句,否则会访问不到编译失败

4、 方法的返回值类型必须和return的类型相匹配。

5、 方法不能够重复定义。

6、 在调用方法时,方法的返回值是void,调用的时候不能使用输出语句,没用返回值打印数据也就不存在,逻辑错误。

方法的重载

所谓的重载就是在同一个类中,功能的方法名可以一样,但是它的参数列表里面的数据类型和数据个数不一样。

下面的代码演示了重载的情况:

/*
重载的情况:求数据的和,个数和类型不确定,所以需要用到重载
*/
public class MethodOverload{
         public static void main(String[] args){
                   //调用功能
                   int sum1 = add(3,5);
                   int sum2 = add(4,5,6);
                   double sum3 = add(2.1,6.3);
                   System.out.println(sum1);
                   System.out.println(sum2);
                   System.out.println(sum3);
         }
         //求和的功能实现
         public static int add(int a,int b){
                   return a+b;
         }
         public static int add(int a,int b,int c){
                   return a+b+c;
         }
         public static double add(double a,double b){
                   return a+b;
         }
}

重载的注意事项

1、 方法的参数列表必须不同(数据个数、数据类型、数据顺序)

2、 方法的重载与变量名无关

3、 方法的重载和返回值类型无关

4、 方法的重载和修饰符无关

所以方法的重载只和参数列表有关,和其他无关