Java方法(二十二)

所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。

一般情况下,定义一个方法的语法格式为:

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

  方法体

}

其中:

-  访问修饰符:方法允许被访问的权限范围,可以是public、protected、private甚至可以省略,其中public表示该方法可以被其他任何代码调用。

-  返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为void;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用return语句返回值。

-  方法名:定义的方法的名字,必须使用合法的标识符。

-  参数列表:传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。

例如:

public class HelloJava {
    //定义了一个方法名为 print 的方法,实现输出信息功能
    public void print() {
        System.out.println("Hello Java");
    }
    public static void main(String[] args){
        //在 main 方法中调用 print 方法
        HelloJava test=new HelloJava();
        test.print();
    }
}

运行结果:

Hello Java

 

根据方法是否带参、是否带返回值,可将方法分为四类:

无参无返回值方法

无参带返回值方法

带参无返回值方法

带参带返回值方法

 

无参无返回值方法的使用:

如果方法不包含参数,且没有返回值,我们称为无参无返回值的方法。

方法的使用分两步:

1)定义方法

例如:下面的代码中,定义了一个方法名为show,没有参数,且没有返回值的方法,执行的操作为输出“love u three thousand times”。

注意:

-  方法体放在一对大括号中,实现特定的操作。

-  方法名主要在调用这个方法时使用,需要注意命名的规范,一般采用第一个单词首字母小写,其它单词首字母大写的形式。

2)调用方法

当需要调用方法执行某个操作时,可以先创建类的对象,然后通过 对象名.方法名(); 来实现。

例如:下面的代码中,创建了一个名为hello的对象,然后通过调用该对象的 show() 方法输出信息。

public class HelloJava {
    public static void main(String[] args) {        
        HelloJava hello = new HelloJava();//创建对象,对象名为hello
        hello.show();//通过     对象名.方法()   的形式调用方法
    }
    public void show() {//定义方法
        System.out.println("love u three thousand times");
    }
}

运行结果: 

love u three thousand times

 

无参带返回值方法的使用:

如果方法不包含参数,但有返回值,我们称为无参带返回值的方法。

例如:下面的代码中,定义了一个方法名为calSum,无参数,但返回值为int类型的方法,执行的操作为计算两数之和,并返回结果。

在calSum() 方法中,返回值类型为int类型,因此在方法体中必须使用return返回一个整数值。

调用带返回值的方法时需要注意,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理。如:

public class HelloJava {
    public static void main(String[] args) {
    //创建对象,对象名为hello
        HelloJava hello = new HelloJava();
        //调用方法并接收方法的返回值,保存在变量sum中
        int sum = hello.calSum();
        System.out.println("两数之和为:"+sum);
    }
    //定义无参带返回值的方法
    public int calSum() {
        int a=5;
        int b=12;
        int sum=a+b;
        return sum;
    }

}

运行结果: 

两数之和为:17

public class HelloJava {
    public static void main(String[] args) {
        // 创建名为hello的对象
        HelloJava hello = new HelloJava(); 
        // 调用hello对象的calcAvg()方法,并将返回值保存在变量avg中
        double avg = hello.calcAvg();        
        System.out.println("平均成绩为:" + avg);
    }
    // 定义一个返回值为double类型的方法
    public double calcAvg() {       
        double java = 92.5;
        double php = 83.0;
        double avg = (java + php) / 2; // 计算平均值    
        // 使用return返回值
        return avg;      
    }
}

运行结果:

平均成绩为:87.75

注意:

1)如果方法的返回类型为void,则方法中不能使用return返回值。

 

2)方法的返回值最多只能有一个,不能返回多个值。

3)方法返回值的类型必须兼容。例如:如果返回值类型为int,则不能返回String型值。

如:定义一个无参带返回值的方法,实现输出学生年龄的最大值。

public class HelloJava {
    //完成 main 方法
    public static void main(String[] args) {
        // 创建对象,对象名为hello
        HelloJava hello = new HelloJava(); 
        // 调用方法并将返回值保存在变量中
        int maxScore = hello.getMaxAge();
        // 输出最大年龄
        System.out.println("最大年龄为:" + maxScore); 
    }
    /*
     * 功能:输出学生年龄的最大值 
     * 定义一个无参的方法,返回值为年龄的最大值
     * 参考步骤:
     * 1、定义一个整形数组 ages ,保存学生年龄,数组元素依次为 18 ,23 ,21 ,19 ,25 ,29 ,17
     * 2、定义一个整形变量 max ,保存学生最大年龄,初始时假定数组中的第一个元素为最大值
     * 3、使用 for 循环遍历数组中的元素,并与假定的最大值比较,如果比假定的最大值要大,则替换当前的最大值
     * 4、使用 return 返回最大值
     */
    public int getMaxAge() {
        int[] ages={18,23,21,19,25,29,17};
        int max=ages[0];//假定数组中的第一个元素为最大值
        for (int i=0;i<ages.length;i++) {
            if (ages[i]>max) {
            max=ages[i];
            }
        }
        return max;   
    }
}

 

带参无返回值方法的使用:

有时方法的执行需要依赖于某些条件。换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行。

例如:现实生活中电饭锅可以实现“煮饭”的功能,但前提是我们必须提供食材,如果我们什么都不提供,那就真是的“巧妇难为无米之炊”了。

我们可以通过在方法中加入参数列表接收外部传入的数据信息,参数可以是任意的基本类型数据或引用类型数据。

如:

上面的代码定义了一个show方法,带有一个参数name ,实现输出消息。

调用带参方法与调用无参方法的语法类似,但在调用时必须传入实际的参数值。

  对象名.方法名(实参1,实参2,......,实参n);

例如:

运行结果: 

hello,Annie!

public class HelloJava {
    public static void main(String[] args) {
        // 创建对象,对象名为hello
        HelloJava hello = new HelloJava();
        // 调用方法,传入两门课程的成绩
        hello.calAvg(94, 81);
    }
    /*
     * 功能:计算两门课程考试成绩的平均分并输出平均分
     * 定义一个包含两个参数的方法,用来传入两门课程的成绩
     */
    public void calAvg(double score1,double score2) {
        double avg = (score1+score2)/2;
        System.out.println("平均分:"+avg);
    }
}    

运行结果:

平均分:87.0

很多时候,我们把定义方法时的参数称为形参,目的是用来定义方法需要传入的参数的个数和类型;把调用方法时的参数称为实参,是传递给方法真正被处理的值。

注意:

1)调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应。如:

 

2)调用方法时,实参不需要指定数据类型。如:

3)方法的参数可以是基本数据类型,如:int、double等;也可以是引用数据类型,如:String、数组等。

import java.util.Arrays;
public class HelloJava {
    public static void main(String[] args) {
        HelloJava hello = new HelloJava();
        int[] scores= {84,91,74,62};
        hello.print(scores);//实参为整型数组
    }
    public void print(int[] scores) {//参数为整型数组
        System.out.println(Arrays.toString(scores));
        //使用Arrays类的toString()方法将数组转换为字符串并输出
    }
}

4) 当方法参数有多个时,多个参数间以逗号分隔。

 

带参带返回值方法的使用:

如果方法既包含参数,又带有返回值,我们称为带参带返回值的方法。

例如:下面的代码中,定义了一个show方法,带有一个参数name,方法执行后返回一个String类型的结果。

调用带参带返回值的方法:

public class HelloJava {
    public static void main(String[] args) {
        //创建对象,对象名为hello
        HelloJava hello = new HelloJava();
        //调用带参带返回值的方法,将返回值保存在变量hi中
        String hi = hello.show("Annie");
        System.out.println(hi);      
    }
    private String show(String name) {
        return "hello,"+name+"!";
    }
}    

运行结果: 

hello,Annie!

import java.util.Arrays;
public class HelloJava {
    public static void main(String[] args) {
        HelloJava hello=new HelloJava();
        int[] scores={79,52,98,81};
        //调用方法,传入成绩数组,并获取成绩的个数
        int count=hello.sort(scores);
        System.out.println("共有"+count+"个成绩信息!");
    }
    /*
     * 功能:将考试成绩排序并输出,返回成绩的个数
     * 定义一个包含整型数组参数的方法,传入成绩数组
     * 使用Arrays类对成绩数组进行排序并输出
     * 方法执行后返回数组中元素的个数
     */
    public int sort( int[] scores  ){
        Arrays.sort(scores);
        System.out.println(Arrays.toString(scores));
        //返回数组中元素的个数
        return scores.length;
            
    }
}    

运行结果:

[52, 79, 81, 98]
共有4个成绩信息!

 

方法的重载

如果同一个类中包含了两个或两个以上方法名相同,方法参数的个数、顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。

如:下面4个方法名称都为show,但方法的参数有所不同,因此都属于方法的重载。

当调用被重载的方法时,Java会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行。

如:

public class HelloJava {
    public static void main(String[] args) {
        HelloJava hello=new HelloJava();
        hello.show();//调用无参的show方法
        hello.show("tom");//调用带有一个字符串参数的show方法
        hello.show("jack",20);//调用带有字符串参数和整型参数的show方法
    }
    public void show() {
        System.out.println("hello");
    }
    public void show(String name) {
        System.out.println("hello,"+name);
    }
    public void show(String name,int age) {
        System.out.println("hello,"+name);
        System.out.println("age:"+age);
    }
    public void show(int age,String name) {
        System.out.println("hello,"+name);
        System.out.println("age:"+age);
    }
}

运行结果:

hello
hello,tom
hello,jack
age:20

判断方法重载的依据:

1)必须是在同一个类中

2)方法名相同

3)方法参数的个数、顺序或类型不同

4)与方法的修饰符或返回值没有关系

 

posted @ 2020-03-17 10:39  梦清欢  阅读(301)  评论(0编辑  收藏  举报