java 22_Java方法(二十二)

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

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

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

方法体

}

其中:

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

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

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

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

例如:

public classHelloJava {//定义了一个方法名为 print 的方法,实现输出信息功能

public voidprint() {

System.out.println("Hello Java");

}public static voidmain(String[] args){//在 main 方法中调用 print 方法

HelloJava test=newHelloJava();

test.print();

}

}

运行结果:

Hello Java

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

无参无返回值方法

无参带返回值方法

带参无返回值方法

带参带返回值方法

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

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

方法的使用分两步:

1)定义方法

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

bf0754412c373526ef535e2b09738e81.png

注意:

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

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

2)调用方法

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

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

public classHelloJava {public static voidmain(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类型的方法,执行的操作为计算两数之和,并返回结果。

a1d370a4771e053df9fe11bf433fab57.png

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

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

public classHelloJava {public static voidmain(String[] args) {//创建对象,对象名为hello

HelloJava hello = newHelloJava();//调用方法并接收方法的返回值,保存在变量sum中

int sum =hello.calSum();

System.out.println("两数之和为:"+sum);

}//定义无参带返回值的方法

public intcalSum() {int a=5;int b=12;int sum=a+b;returnsum;

}

}

运行结果:

两数之和为:17

public classHelloJava {public static voidmain(String[] args) {//创建名为hello的对象

HelloJava hello = newHelloJava();//调用hello对象的calcAvg()方法,并将返回值保存在变量avg中

double avg =hello.calcAvg();

System.out.println("平均成绩为:" +avg);

}//定义一个返回值为double类型的方法

public doublecalcAvg() {double java = 92.5;double php = 83.0;double avg = (java + php) / 2; //计算平均值//使用return返回值

returnavg;

}

}

运行结果:

平均成绩为:87.75

注意:

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

b2218f4a4788ca686675dbe3aaff011a.png

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

e0fe265adaaf27d2892ecdf918e62fe2.png

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

98c7b9a5f6c28e44b0016a6c83b48537.png

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

public classHelloJava {//完成 main 方法

public static voidmain(String[] args) {//创建对象,对象名为hello

HelloJava hello = newHelloJava();//调用方法并将返回值保存在变量中

int maxScore =hello.getMaxAge();//输出最大年龄

System.out.println("最大年龄为:" +maxScore);

}/** 功能:输出学生年龄的最大值

* 定义一个无参的方法,返回值为年龄的最大值

* 参考步骤:

* 1、定义一个整形数组 ages ,保存学生年龄,数组元素依次为 18 ,23 ,21 ,19 ,25 ,29 ,17

* 2、定义一个整形变量 max ,保存学生最大年龄,初始时假定数组中的第一个元素为最大值

* 3、使用 for 循环遍历数组中的元素,并与假定的最大值比较,如果比假定的最大值要大,则替换当前的最大值

* 4、使用 return 返回最大值*/

public intgetMaxAge() {int[] ages={18,23,21,19,25,29,17};int max=ages[0];//假定数组中的第一个元素为最大值

for (int i=0;imax) {

max=ages[i];

}

}returnmax;

}

}

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

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

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

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

如:

25d655926f6cebe2c5fff6e5963edccf.png

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

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

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

例如:

79ab821793c9ec667d66d0dee24e8a6c.png

运行结果:

hello,Annie!

public classHelloJava {public static voidmain(String[] args) {//创建对象,对象名为hello

HelloJava hello = newHelloJava();//调用方法,传入两门课程的成绩

hello.calAvg(94, 81);

}/** 功能:计算两门课程考试成绩的平均分并输出平均分

* 定义一个包含两个参数的方法,用来传入两门课程的成绩*/

public void calAvg(double score1,doublescore2) {double avg = (score1+score2)/2;

System.out.println("平均分:"+avg);

}

}

运行结果:

平均分:87.0

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

注意:

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

37b7ea1f4746f621e61b53ad3b09718a.png

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

b1d9739bef7f927cc632d4ab2ccaf108.png

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

importjava.util.Arrays;public classHelloJava {public static voidmain(String[] args) {

HelloJava hello= newHelloJava();int[] scores= {84,91,74,62};

hello.print(scores);//实参为整型数组

}public void print(int[] scores) {//参数为整型数组

System.out.println(Arrays.toString(scores));//使用Arrays类的toString()方法将数组转换为字符串并输出

}

}

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

d1762de2497d51237e7e68944160a6fc.png

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

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

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

6ae10681b690a225b8ae9405ce731fb3.png

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

public classHelloJava {public static voidmain(String[] args) {//创建对象,对象名为hello

HelloJava hello = newHelloJava();//调用带参带返回值的方法,将返回值保存在变量hi中

String hi = hello.show("Annie");

System.out.println(hi);

}privateString show(String name) {return "hello,"+name+"!";

}

}

运行结果:

hello,Annie!

importjava.util.Arrays;public classHelloJava {public static voidmain(String[] args) {

HelloJava hello=newHelloJava();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));//返回数组中元素的个数

returnscores.length;

}

}

运行结果:

[52, 79, 81, 98]

共有4个成绩信息!

方法的重载

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

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

39b104f3f367eca677c80862fc8dfcd7.png

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

如:

public classHelloJava {public static voidmain(String[] args) {

HelloJava hello=newHelloJava();

hello.show();//调用无参的show方法

hello.show("tom");//调用带有一个字符串参数的show方法

hello.show("jack",20);//调用带有字符串参数和整型参数的show方法

}public voidshow() {

System.out.println("hello");

}public voidshow(String name) {

System.out.println("hello,"+name);

}public void show(String name,intage) {

System.out.println("hello,"+name);

System.out.println("age:"+age);

}public void show(intage,String name) {

System.out.println("hello,"+name);

System.out.println("age:"+age);

}

}

运行结果:

hello

hello,tom

hello,jack

age:20

判断方法重载的依据:

1)必须是在同一个类中

2)方法名相同

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值