第7章:方法

上节答案:B:解析:本选项正确描述了二维数组

 

7 - 1:如何定义 Java 中的方法

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

一般情况下,定义一个方法的语法是:

其中:

1、 访问修饰符:方法允许被访问的权限范围, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用,其他几种修饰符的使用在后面章节中会详细讲解滴

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

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

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

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

Ø 无参无返回值方法

Ø 无参带返回值方法

Ø 带参无返回值方法

Ø 带参带返回值方法

任务

小伙伴们,在编辑器中,定义了一个名为 print 的方法,实现输出信息功能,并在 main 方法中调用了 print 方法。请对照程序代码和运行结果,先认识一下方法吧!!

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

点击提交继续学习吧!

 

7 - 2:Java 中无参无返回值方法的使用

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

方法的使用分两步:

第一步,定义方法

例如:下面代码定义了一个方法名为 show ,没有参数,且没有返回值的方法,执行的操作为输出 “ welcome to imooc. ”

注意哦:

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

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

第二步,调用方法

当需要调用方法执行某个操作时,可以先创建类的对象,然后通过  对象名.方法名();  来实现(关于类和对象的概念在后面章节中会详细讲解滴,先熟悉语法,表着急哦~~)

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

运行结果为:  welcome to imooc.

任务

检查工作的又来啦!!!

在编辑器中定义了一个方法名为 showMyLove 的无参无返回值方法,用来输出信息。请在第 5、8、14 行中将代码填写完整

public class HelloWorld {
    
    public static void main(String[] args) {
		// 创建对象,对象名为hello
		
        
		// 调用方法
		
	}

	/*
	 * 定义无参无返回值的方法
	 */
	public       showMyLove() {
		System.out.println("我爱慕课网!");
	}
}

运行结果为: 我爱慕课网!

 

7 - 3:Java 中无参带返回值方法的使用

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

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

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

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

运行结果为: 两数之和为:17

不容忽视的“小陷阱”:

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

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

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

任务

在编辑器中已经定义了一个名为 calcAvg 的方法,用来计算两门课程成绩的平均值,并返回结果。

请在第 9、15、22 行中将代码填写完整,实现调用 calcAvg( ) 方法,并输出平均成绩。

public class HelloWorld {
    
    public static void main(String[] args) {
        
		// 创建名为hello的对象
		HelloWorld hello = new HelloWorld();
        
		// 调用hello对象的calcAvg()方法,并将返回值保存在变量avg中
		double avg = 
        
		System.out.println("平均成绩为:" + avg);
	}

	// 定义一个返回值为double类型的方法
	public          calcAvg() {
        
		double java = 92.5;
		double php = 83.0;
		double avg = (java + php) / 2; // 计算平均值
        
		// 使用return返回值
        
        
	}
}

运行结果为: 平均成绩为:87.75

 

7 - 4:编程练习

小伙伴们,请根据所学知识,参考注释,在代码编辑器中将代码补充完整。编写一个 Java 程序,实现输出学生年龄的最大值

要求:

1、 要求通过定义无参带返回值的方法来实现,返回值为最大年龄

2、 方法中将​学生年龄保存在数组 ages 中,数组元素依次为 18 ,23 ,21 ,19 ,25 ,29 ,17

运行效果为: 最大年龄为:29

任务

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

提示:

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

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

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

4、 使用 return 返回最大值

二、 完成 main 方法

提示:

1、 调用自定义方法,将方法返回值保存在变量 maxScore 中

2、 输出变量结果

public class HelloWorld {
    
    //完成 main 方法
    public static void main(String[] args) {
        
        // 创建对象,对象名为hello
		HelloWorld hello = new HelloWorld(); 
        
        // 调用方法并将返回值保存在变量中
        
        
		// 输出最大年龄
		System.out.println("最大年龄为:" + maxScore); 
	}

	/*
	 * 功能:输出学生年龄的最大值 
     * 定义一个无参的方法,返回值为年龄的最大值
     * 参考步骤:
     * 1、定义一个整形数组 ages ,保存学生年龄,数组元素依次为 18 ,23 ,21 ,19 ,25 ,29 ,17
     * 2、定义一个整形变量 max ,保存学生最大年龄,初始时假定数组中的第一个元素为最大值
     * 3、使用 for 循环遍历数组中的元素,并与假定的最大值比较,如果比假定的最大值要大,则替换当前的最大值
     * 4、使用 return 返回最大值
	 */
	public int getMaxAge() {
	
    
    
    
    
    
    
	}
}

我的代码(不一定要这样写):

public class HelloWorld {
    
    //完成 main 方法
    public static void main(String[] args) {
        
        // 创建对象,对象名为hello
		HelloWorld hello = new HelloWorld(); 
        
        // 调用方法并将返回值保存在变量中
        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];
	    int len = ages.length;
	    for(int i = 0;i < len;i++){
	        if(max < ages[i]){
	            max = ages[i];
	        }
	    }
	    return max;
	}
}

 

7 - 5:Java 中带参无返回值方法的使用

有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行。例如,现实生活中电饭锅可以实现“煮饭”的功能,但前提是我们必须提供食材,如果我们什么都不提供,那就真是的“巧妇难为无米之炊”了。我们可以通过在方法中加入参数列表接收外部传入的数据信息,参数可以是任意的基本类型数据或引用类型数据。

我们先来看一个带参数,但没有返回值的方法:

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

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

例如:

运行结果为: 欢迎您,爱慕课!

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

一定不可忽视的问题:

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

上面主函数调用的实参是整形,方法里形参是字符串型,所以这是不对的。

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

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

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

任务

请在编辑器中的第 15 行后填写完整方法代码

实现功能:编写带参方法计算两门课程考试成绩的平均分,通过方法的参数传入成绩信息

public class HelloWorld {
    public static void main(String[] args) {
        
		// 创建对象,对象名为hello
		HelloWorld hello = new HelloWorld();
		
        // 调用方法,传入两门课程的成绩
		hello.calcAvg(94, 81);
	}

	/*
	 * 功能:计算两门课程考试成绩的平均分并输出平均分
	 * 定义一个包含两个参数的方法,用来传入两门课程的成绩
	 */















}

运行结果为: 平均分:87.5

 

7 - 6:Java 中带参带返回值方法的使用

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

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

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

运行结果为: 欢迎您,爱慕课!

任务

实现功能:将考试成绩排序并输出,返回成绩的个数

实现思路:

1、 定义一个包含整型数组参数的方法,用来传入成绩数组

2、 在方法体中使用 Arrays.sort( ) 方法对成绩数组进行排序,然后使用 Arrays.toString( ) 方法将数组转换为字符串并输出,最后使用 return 返回数组中元素的个数。

3、 调用方法时需要先创建对象,然后再调用.调用时为其传入成绩数组,并获取方法的返回值,保存在变量中,最后输出成绩的个数。

请将编辑器中的第 9、20、25 行代码填写完整

import java.util.Arrays;

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

运行结果:

 

7 - 7:单选题

关于 Java 类中带参数的方法,下列选项中说法错误的是():

A、使用带参数的方法分为两步:定义带参数的方法,调用带参数的方法

B、带参数方法的返回值不能为 void

C、带参数方法的参数个数可以为一个或多个

D、带参数方法的参数可以是任意的基本类型数据或引用类型数据

答案在下一节公布

 

7 - 8:Java 中方法的重载

问: 什么是方法的重载呢?

答: 如果同一个类中包含了两个或两个以上方法名相同、方法参数的个数、顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。如下所示 4 个方法名称都为 show ,但方法的参数有所不同,因此都属于方法的重载:

问: 如何区分调用的是哪个重载方法呢?

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

运行结果:

判断方法重载的依据:

1、 必须是在同一个类中

2、 方法名相同

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

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

任务

在编辑器中对 print 方法进行重载,并通过传入不同的参数调用匹配的重载方法。

请在第 8、11、14 行中将代码填写完整

public class HelloWorld {
    public static void main(String[] args) {

		// 创建对象
		HelloWorld hello = new HelloWorld();

		// 调用无参的方法
		

		// 调用带有一个字符串参数的方法
	

		// 调用带有一个整型参数的方法
	
	}

	public void print() {
		System.out.println("无参的print方法");
	}

	public void print(String name) {
		System.out.println("带有一个字符串参数的print方法,参数值为:" + name);
	}

	public void print(int age) {
		System.out.println("带有一个整型参数的print方法,参数值为:" + age);
	}
}

运行结果:

 

7 - 9:编程练习

小伙伴们,请根据所学知识,参考注释,在代码编辑器中将代码补充完整。编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组

要求:

1、 要求通过定义带参带返回值的方法来实现

2、 通过参数传入数组的长度(例如长度为 8),方法执行后返回赋值后的数组

3、 通过 (int)(Math.random() * 100) 生成 100 以内的随机数

注:Math 类是用于进行算术操作的类,Math.random() 生成 0--1 的浮点数。 关于该类的其他应用在后面章节会有详细介绍,先熟悉随机数方法的使用~~

运行效果为: [ 2 , 52 , 8 , 26 , 66 , 32 , 98 , 0 ]

注:由于数组元素的值是随机生成的,每次运行生成的值可能都不同,此效果仅供参考

任务

一、 定义一个带参带返回值的方法,实现输出随机数数组

提示:

1、 定义一个带参带返回值的方法,通过参数传入数组的长度,返回值为赋值后的数组

2、 创建指定长度的整型数组

3、 使用 for 循环遍历数组,通过 Math.random( ) 生成随机并给数组成员赋值

4、 使用 return 返回赋值后的数组

二、 完成 main 方法

提示:

1、 调用自定义方法,保存方法执行后返回的数组

2、 使用 Arrays.toString( ) 将数组转换为字符串并输出,注意导入 java.util.Arrays;

//导入java.util.Arrays;



public class HelloWorld {
    public static void main(String[] args) {
        
         // 创建对象,对象名为hello
    	HelloWorld hello = new HelloWorld();
        
        // 调用方法并将返回值保存在变量中
		int[] nums = hello.getArray(8);
        
        // 将数组转换为字符串并输出
		System.out.println(Arrays.toString(nums)); 
	}

	/*
	 * 功能:创建指定长度的int型数组,并生成100以内随机数为数组中的每个元素赋值
	 * 定义一个带参带返回值的方法,通过参数传入数组的长度,返回赋值后的数组
	 */
	public int[] getArray(int length) {
        // 定义指定长度的整型数组
		int[] nums = new int[length];
        
        // 循环遍历数组赋值
		for (                                    ) {
            
			// 产生一个100以内的随机数,并赋值给数组的每个成员
		
        
		}
		return nums; // 返回赋值后的数组
	}
}

 

我的答案:

//导入java.util.Arrays;
import java.util.Arrays;


public class HelloWorld {
    public static void main(String[] args) {
        
         // 创建对象,对象名为hello
    	HelloWorld hello = new HelloWorld();
        
        // 调用方法并将返回值保存在变量中
		int[] nums = hello.getArray(8);
        
        // 将数组转换为字符串并输出
		System.out.println(Arrays.toString(nums)); 
	}

	/*
	 * 功能:创建指定长度的int型数组,并生成100以内随机数为数组中的每个元素赋值
	 * 定义一个带参带返回值的方法,通过参数传入数组的长度,返回赋值后的数组
	 */
	public int[] getArray(int length) {
        // 定义指定长度的整型数组
		int[] nums = new int[length];
        
        // 循环遍历数组赋值
		for (int i = 0;i < length;i++) {
            
			// 产生一个100以内的随机数,并赋值给数组的每个成员
		    nums[i] = (int)(Math.random() * 100);
        
		}
		return nums; // 返回赋值后的数组
	}
}

 

7 - 10:练习题

判断方法重载的依据,错误的是:

A、必须在同一个类中

B、方法名不同

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

D、与方法的修饰符或返回值没有关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值