JavaSE_第五章:方法/函数

JavaSE学习历程

第一章:Java初识
第二章:Java语言基础
第三章:选择结构与分支结构
第四章:循环结构

第五章:方法/函数

1 方法的概念

概念:实现特定功能的一段代码,可反复使用。

2 方法的定义

方法定义的位置:方法定义在类的内部,与main方法并列
语法:
public static void 方法名(){
//方法主体
}
经验:将需要在多个位置重复使用的一组或多组代码,定义为一个方法。

代码缩进快捷键:ctrl + shift + f windows自帶输入法此快捷键用于简繁体切换,需要进行更改或禁用!

3 方法的调用

注意:调用方法时,会优先执行方法内部代码,结束后,返回到方法调用处,继续向下执行

public class Demo01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("床前明月光");
		printStign();
		System.out.println("疑是地上霜");
		printStign();
		System.out.println("举头望明月");
		printStign();
		System.out.println("低头思故乡");
		printStign();
		
	}
	//定义方法打印分隔符
	public static void printStign() {
		for(int i=1;i<=10;i++) {
			System.out.print("-");
		}
		System.out.println();
	}

}

4 方法的参数

4.1 方法的参数

多数情况下,方法与调用者之间需要数据的交互;调用者必须提供必要的数据,才能使方法完成相应的功能。
调用方法时,所传入的数据被称为“参数”。

4.2 形参与实参

定义语法:
public static void 方法名称( 形式参数 ){
//方法主体
}

经验:

  • “形参”等价于“局部变量的声明”。

调用语法:

  • 方法名称( 实际参数 );

经验:

  • “实参”等价于“局部变量的赋值”。

作用:

  • 方法的参数可以让代码功能更灵活、普适性更高,易于修改及维护。

5 返回值与返回值类型

5.1 返回值

概念:方法执行后的返回结果。

方法执行后,一些情况下无需返回结果;另一些情况下则必须返回结果。

例如:

  • 存款操作无需返回结果。
  • 取款操作必须返回结果。

5.2 定义语法

public static 返回值类型 方法名称( 形式参数列表 ){
//方法主体
return value; //返回值
}

规定返回值的具体类型(基本、引用、void)。
根据需求返回一个结果(值)。

5.3 调用语法

变量 = 方法名称( );
变量类型与返回值类型一致。

PS:

返回值 vs 没返回值

  • 如果方法返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用return关键字来返回指定类型的变量或常量:“return 数据”。
  • 如果方法没返回值,则方法声明时,使用void来表示。通常,没返回值的方法中,就不需要
    使用return.但是,如果使用的话,只能“return;”表示结束此方法的意思。

5.4 return关键字

return的两种用法:

  • 使用范围:使用在方法体中
  • 应用在具有返回值类型的方法中:
  • return value; 表示结束当前方法,并伴有返回值,返回到方法调用处。
  • 应用在没有返回值类型(void)的方法中:
  • return; 表示结束当前方法,直接返回到方法调用处。
  • return关键字后面不可以声明执行语句。

注意:一个类中可以定义多个方法,方法之间属于并列关系,不可嵌套。

经验:一个方法只做一件事.

5.5 案例(三参数算术计算器,带返回值)


import java.util.Scanner;

/**
 * @Title: Demo04.java
 * @Description: TODO:完成计算器 1个方法带有3个参数 num1、num2、+- 带有返回值 接受返回值后输出
 * @since JDK1.8
 */
public class Demo04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		System.out.println("1+2" + "=" + add(1, 2, "+"));
//		System.out.println("2-1" + "=" + add(1, 2, "-"));
//		System.out.println("1*2" + "=" + add(1, 2, "*"));
//		System.out.println("4/2" + "=" + add(1, 2, "/"));
//		
		Scanner input = new Scanner(System.in);
		System.out.println("请输入需要计算的第一个数字:");
		int a = input.nextInt();
		System.out.println("请输入运算符:");
		String ysf = input.next();
		System.out.println("请输入需要计算的第二个数字:");
		int b = input.nextInt();
		
		switch(ysf) {
		case "+":
			System.out.println(a + "+" + b + "=" + add(a, b, ysf));
			break;
		case "-":
			System.out.println(a + "-" + b + "=" + sub(a, b, ysf));
			break;
		case "*":
			System.out.println(a + "*" + b + "=" + mul(a, b, ysf));
			break;
		case "/":
			if(b==0) {
				System.out.println("被除数不能为0");
			}else {
				System.out.println(a + "/" + b + "=" + div(a, b, ysf));
			}
			break;
		default :
		}
	}

	// 加法
	public static int add(int num1, int num2, String c) {
		return num1 + num2;
	}

	// 减法
	public static int sub(int num1, int num2, String c) {
		return num1 - num2;
	}

	// 乘法
	public static int mul(int num1, int num2, String c) {
		return num1 * num2;
	}

	// 除法
	public static int div(int num1, int num2, String c) {
		return num1 / num2;
	}

}

6 方法的好处(优点)

好处:

  • 减少代码冗余。
  • 提高复用性。
  • 提高可读性。
  • 提高可维护性。
  • 方便分工合作。

7 递归

7.1 递归

什么是递归?

  • 解决具有既定规律的问题时,在方法内部再次调用自身方法的一种编程方式。

如何理解递归方法?

  • 方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。
  • 递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。

何时使用递归?

  • 当需要解决的问题可以拆分成若干个小问题,大小问题的解决方式相同,方法中自己调用自己。
  • 使用循环解决的常规问题,都可以替换为递归解决。

如何正确使用递归?

  • 设置有效的出口条件,可以让调用链上的每个方法都可以正确返回,避免无穷递归。

7.2 案例(递归实现阶乘)

package com.xx;

import java.util.Scanner;

/**
 * @Title: Demo06.java
 * @Description: TODO:使用递归计算n的阶乘
 * @since JDK1.8
 */
public class Demo06 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 1.声明Scanner变量
		Scanner input = new Scanner(System.in);
		System.out.println("请输入需要计算的阶乘:");
		// 13!的值大于int的取值范围,故采用long
		long a = input.nextLong();
		System.out.println(a + "!=" + fac(a));
	}

	/**
	 * 递归实现阶乘
	 * 
	 */
	public static long fac(long n) {
		// 当n=1时,返回1
		if (n == 1) {
			return 1;
		}
		return n * fac(n - 1);
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值