0基础java入门:第二十节.Java方法的讲解

本文详细介绍了Java中的方法,包括方法的定义、调用、参数和返回值。方法是预定义的代码块,用于提高代码复用性和逻辑清晰度。方法由修饰符、返回值类型、方法名、参数列表和方法体组成。调用方法时,需匹配参数类型和数量。方法的执行顺序取决于调用顺序,return关键字用于返回结果。方法的参数分为形式参数和实际参数,实际参数需与形式参数匹配。最后,讨论了返回值类型、void方法及return的使用规则。
摘要由CSDN通过智能技术生成

0基础java入门:第二十节.Java方法的讲解

方法是什么?

方法就是预先写好在类中的等待执行的代码,但是这些代码是具有一定的逻辑和功能的代码。方法可以是我们书写的代码增加复用性。使代码中的逻辑变得更简单的清晰。方法也是面向对象编程的一种简单的体现方式。,以及方法最终的运行结果,和实现功能的我们在书写定义一个方法的时候考虑的是方法需要的参数数据步骤。而调用方法时,就是考虑哪一个方法具有我想用的功能,以及使用这个方法需要提供的数据,和执行方法后会得到什么。

1. 方法的定义

我们先来简单定义一个方法演示。

代码演示:

public class TestFunction {
	// 主方法 
	public static void main(String[] args) {
		
	}
	// 这里定义了一个方法 
	public static void function1(){
		System.out.println("学习是需要坚持的!!!!和写博客一样");
	} 
		
}

运行结果:

分析一波:这里我们运行之后是没有结果的,只要编译通过了就可以。我们观察代码,在TestFunction类中有两个方法。一个是我们 经常使用的主方法。另一个function1就是我们自己定义的方法。可以看出两个方法的结构其实差不多。不同的是 主方法是固定的书写,是程序执行开始的入口。而我们自己定义的function1的方法需要调用才能执行。我们可以看到function1方法中就是输出了一个字符串。但是执行结果中没有输出结果,怎样才能有让结果输出呢,观察下边的代码。

代码演示:

public class TestFunction {
	// 主方法 
	public static void main(String[] args) {
		//调用 function1() 方法
		function1();
		function1();
		function1();
	}
	// 这里定义了一个方法 
	public static void function1(){
		System.out.println("学习是需要坚持的!!!!和写博客一样");
	} 	
}

运行结果:

分析一波:

我们在主函数中使用了function() 调用了三次。观察结果,控制台输出了三次“学习是需要坚持的!!!!和写博客一样” 三次。这就是方法的简单使用。一个方法定义了之后是可以反复使用的。调用方法的方式 是通过方法的名称

2. 方法的组成

我们通过刚才书写的主方法和function1方法来分析以下方法的组成。

方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。目前我们只使用public和static。

返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。void代表方法灭有返回值。返回值类型可以是java中的任意数据类型。返回值就是方法执行完成后能够得出的数据。

方法名:是方法的实际名称。方法名和参数表共同构成方法签名。方法名必须遵守标识符命名规则。在方法调用的时候需要通过方法名进行。

参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。参数列表代表的是调用方法的时候需要提供的数据。

方法体:方法体包含具体的语句,定义该方法的功能。方法体内根据返回值类型的不同需要书写 return语句。

3.方法的调用

方法定义之后是需要调用才能执行的,如方法function1。定义之后需要在主函数通过方法名function1()才能执行。调用方法完整的语法是: 类型 变量名 = 方法名 ([参数 … …]);这里= 前的变量是 为了接收方法运行后的结果也就是返回值。当然如果方法没有返回值是不能通过变量接收的。=后的方法名() 表示调用指定的方法。()内的参数表示的是调用方法需要提供的数据,参数是由定义方法的时候的参数列表决定的。我们先来了解一下方法中调用时的顺序。

代码演示:

public class TestFunction {
	// 主方法 
	public static void main(String[] args) {
		//调用 fun3() 方法
		fun3();
		//调用 fun2() 方法
		fun2();
		//调用 fun1() 方法
		fun1();
	}
	// 这里定义方法 fun1 
	public static void fun1(){
		System.out.println("func1方法开始");
		System.out.println("func1方法结束");
	}
	// 这里定义方法 fun2 
	public static void fun2(){
		System.out.println("func2方法开始");
		System.out.println("func2方法结束");
	} 
	// 这里定义方法 fun3 
	public static void fun3(){
		System.out.println("func3方法开始");
		System.out.println("func3方法结束");
	} 
}

运行结果:

分析一波:这里我们可以发现,先执行的fun3方法,也就是方法的执行顺序和调用的顺序时相同的。之后我们再修改一下代码。

代码演示:

public class TestFunction {
	// 主方法 
	public static void main(String[] args) {
		//调用 fun1() 方法
		fun1();
	}
	// 这里定义方法 fun1 
	public static void fun1(){
		System.out.println("fun1方法开始");
		// 在这里调用 fun2
		fun2();
		System.out.println("fun1方法结束");
	}
	// 这里定义方法 fun2 
	public static void fun2(){
		System.out.println("fun2方法开始");
		// 在这里调用 fun3 
		fun3();
		System.out.println("fun2方法结束");
	} 
	// 这里定义方法 fun3 
	public static void fun3(){
		System.out.println("fun3方法开始");
		System.out.println("fun3方法结束");
	} 
}

运行结果:

分析一波:上边的代码我们只是在 主方法中调用的 fun1方法。之后再fun1方法体中调用了fun2方法,又在fun2 方法体中调用了 fun3方法。这时代码的执行顺序,观察结果是先开始执行的 fun1方法,之后开始执行fun2,之后开始执行 fun3,结束时 顺序时 fun3 ,fun2 ,fun1。也就是先开始执行的后结束了。这里理解为方法从哪里调用结束后就返回到哪里继续执行。

4.方法的参数

关于方法的参数,分为形式参数和实际参数,我们通过案例来了解他们的使用。

代码演示:

public class TestFunction {
	// 主方法 
	public static void main (String[] args) {
		add(1,3);// 调用方法 ()内的1,3 就是实际参数 
	}
	// 定义方法  这个方法 () 内 书写了 两个参数 int类型的 a和b 就是形式参数
	public static void add(int a,int b){
		System.out.println(a+b);
	}
}

运行结果:

分析一波:这段代码中我们。我们定义了方法addition方法用来计算两个整数的和在方法体内输出。在主函数中调用了这个方法并传递了两个参数。输出结果是参数中两个数之和。

形式参数

形式参数:是方法定义的时候 在() 内定义的变量,这些变量只有类型和变量名,没有具体的值。方法体内可以对这些变量进行操作。形式参数是用来规定调用方法的时候提供的数据的个数和类型。()内如果是多个参数需要用,间隔。形式参数的类型可以是java中的任意数据类型,包括我们学过的数组。

实际参数

实际参数:是方法调用的时候,需要提供给方法的具体数据。调用方法的实际参数要和方法定义的形式参数必须相同,包括个数和类型。可以认为实际参数是给方法的形式参数赋值。方法中运算时的具体值就是实际参数的值。

注意: 调用方法时是否需要在()内填写实际参数,是由定义方法时的形式参数决定的。如果方法定义的时候有形式参数,调用的时候就需要实际参数。如果方法定义的时候没有形式参数,调用的时候就不需要实际参数。简单来说就是调用方法的实际参数要和定义方法的形式参数的个数类型和顺序都相同。

5.方法的返回值和return的使用

返回值类型:方法定义是书写再方法名前,用来表示方法执行后结果的类型。返回值类型可以是java中的任何数据类型。返回值类型代表的是方法执行完毕之后,能给我们什么样的数据。例如用返回值类型如果是int,这个方法的返回值就可以是int类型的数据。接收方法结果的变量就需要也是int类型。而这里返回值类型如果是void表示的是无返回值。也就是说 方法不返回任何东西。

返回值:就是方法运行结束后的具体结果。这里通过关键字 return 后加 数据。表示最后结果的返回。

代码演示:

public class TestFunction {
	// 主方法 
	public static void main (String[] args) {
		int i = 5;
		int j = 2;
		// 调用方法 max 传递参数 i 和 j,并通过 k 接收返回值的结果。
	    int k = max( i ,  j );
		// 输出结果
	    System.out.println( i + " 和 " + j + " 比较,最大值是:" + k);
	}
	
	/** 返回两个整型变量数据的较大值 */
	public static int max( int num1 ,  int num2 ) {
		int result;
		// 比较两个参数 num1 和num2 将较大的 赋值给 result。
		if (num1 > num2){
		  result = num1;
		}else{
		  result = num2;
		}
		// 返回结果  这里就是返回值
		return result; 
	}
}

运行结果:

分析一波:根据结果来分析代码。我们先来看 max 方法的定义,通过注释可以看到方法的功能是从两个整型数字中 返回值比较大的一个。方法参数有 int num1 ,int num2 返回值类型是int类型,方法体中通过比较num1和num2找出两个之间比较大的返回。在主函数中,定义了两个变量 int i赋值5,int j赋值2 ,通过这两个参数调用 max方法,并使用int k 接收方法的返回值。输出结果。

接收返回值的变量:如果返回值是viod是不能通过变量接收方法调用时的返回值。如果方法的返回值是具体的数据类型,调用方法时也可以不接收返回值,这时候接收还是不接收需要看我们之后的操作是否需要。如果需要接收,接收返回值的变量类型需要和方法定义时的返回值类型一致。

关于return使用

return关键值表示在方法中返回。如果方法的返回值类型不是void而是具体类型,方法体内必须写return,并且return后需要返回具体的结果,结果的类型需要和方法的返回值类型相同。如果方法的返回值是void,方法体内可以写return也可以不写。如果写的话return后不能加任何值,直接通过;结束。在这里目的不是返回值,而只是为了中断方法的执行。在方法体内碰到return不管是不是有返回值,都表示方法运行结束了。一个方法中即便写了多个return,最终也只会返回一次

1. 返回值的数据必须和返回值类型相同

代码演示:

public class TestFunction {
	// 主方法 
	public static void main (String[] args) {
		
	}
	/** 方法 fun1*/
	public static int fun1() {
		// 这里返回的 1.1 是double类型,而方法的返回值类型是 int ,所以编译时就会报错
		return 1.1;
	}
}

运行结果: 编译就会报错。

分析一波:这里代码中的 方法 fun1 ,return后的数据时double类型,而方法的返回值类型时int类型所以编译就报错了。如果将return后的数据改成一个int类型的数据,重新编译就会通过。这里自行尝试。

2. 返回值为 void 时 return后不能有任何数据

代码演示:

public class TestFunction {
	// 主方法 
	public static void main (String[] args) {
		
	}
	
	/** 方法 fun1*/
	public static void fun1() {
		// 这里返回的 1.1 有数据,而返回值类型是void ,这里编译也会报错
		return 1.1;
	}
}

运行结果:

分析一波:这里代码中的 方法 fun1 ,return后有数据,而方法的返回值类型时void所以编译就报错了。如果将return后的数据删除,重新编译就会通过。这里自行尝试。

3.一个方法有多个 return时 ,最多也只会返回一次。 当有一个return执行了,方法中之后的代码都不会执行了。

代码演示:

public class TestFunction {
	// 主方法 
	public static void main (String[] args) {
		// 调用方法 fun1 参数3
		int c = fun1(3);
		// 输出结果
		System.out.println(c);
	}
	
	/** 方法 fun1*/
	public static int fun1(int a) {
		// 这个 方法有 两个return 但是 最后只能有一个结果返回。
		if(a<5){
			return 0;
		}
		return 1;
	}
}

运行结果:

分析一波:这里方法中虽然有两个 return。但是最后执行的只能有一个。即便有再多的return,最后也只能有一个执行。并且 方法中一旦有 return执行了之后,表示方法执行完毕。之后的所有代码都不会执行了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值