Java基础——函数

Java基础——函数

一、函数的基本使用

函数的定义

函数是计算机编程中非常重要的部分,是编程中最基本的元素之一。函数表示的是一 种通用的过程,这种过程能够对外界提供服务。例如,现实生活中,ATM 取款机上有不同 的功能,我们可以理解为 ATM 机上具有不同的函数可以调用;我们在 ATM 机上取钱,就 可以理解为我们在 ATM 机上调用了“取钱”函数。在这种关系中,我们是“取钱”函数 的调用者,“取钱”函数为我们提供服务。

代码展示如下:

package p4;
public class hanshu{
public static void main(String [] args){
	int d=add(3,2);					//调用函数
	System.out.println(d);
	}
	public static int add(int a,int b){//声明public static 返回值类型 函数名(形参)
		
		int c=a+b;				//实现
		
		return c;				//返回值
	}
}


Ⅰ,定义位置

在类中,任何函数的外部;一个类中可以有多个函数,函数的顺序是无关紧要的。

Ⅱ,声明

public static 返回值类型 函数名(参数表)

形式参数(形参):相当于函数内部有效的局部变量

 最重要的部分就是函数的三要素:返回值、函数名、参数表。 返回值

  函数名:表示函数的名字; 

 参数表:表示调用函数时所给的参数是什么,即调用函数时需要给函数哪些 “输入”。

 返回值: 以“取钱”函数为例,函数的返回值为“钱”,我们作为调用者调用“取钱”函数,目 的就是获得这个函数的返回值“钱”;这个函数的参数表表示我们对调用“取钱”时应该给 这个函数传递的参数,取钱时需要“银行卡、密码、取款金额”等一系列参数。 在 Java 中,函数(Function)也被称之为方法(Method)。Java 中并不区分这两个概 念,因此,本书中“函数”和“方法”指的是同一个意思。

return 语句除了能够返回值之外,还能够控制 流程的跳转。具体的说,在执行 return 语句的时候,被调用的函数会终止执行,并返回到 函数的调用点上

返回值为void类型,不需要返回值,将代码块中代码执行完再结束。

Ⅲ,实现

{   }

必须和声明一致(主要指返回值类型)

Ⅳ,调用函数

函数名(实际参数(实参));

实参会依次给形参赋值

调用函数,程序流程会进入函数,函数返回,程序流程会返回到函数调用点

①函数的嵌套调用

前面的内容,我们为大家介绍了函数的一些基本使用。接下来,要介绍的是函数中一 些更加灵活的应用。看下面这个代码的例子:

package p4;
public class TestNestedCall{
	/*
	首先,是在main函数中输出“main1”,然后,在main函数中调用了ma方法,
	于是,流程从 main 中跳转到了ma函数中。
	在ma函数的第一个语句中,输出“ma1”。
	*/
	public static void main(String args[]){
		System.out.println("main1");
		ma();
		System.out.println("main2");
	}
	/*
	然后,在ma方法中,又调用了mb方法。
	*/
	public static void ma(){
		System.out.println("ma1");
		mb();
		System.out.println("ma2");
	}
	public static void mb(){
		System.out.println("mb1");
		System.out.println("mb2");
	}
	/*
	在ma调用mb函数之后,mb函数输出“mb1”和“mb2”。
	然后,mb 函数中所有的代码都执行完了,mb函数返回其调用点,
	也就是返回到ma方法中。然后,ma方法继续执行,输出“ma2”。
	然后,ma方法的代码也都全部完成,于是 ma 方法也返回调用点,
	也就是返回到主函数中。最后,主函数输出“main2”,主函数中所
	有代码都执行完毕,程序终止。
	*/
}




②函数的递归调用

函数除了能够调用其他函数之外,还可以调用函数本身。这就是函数的递归调用。

如果需要写递归的话,需要注意一下几个问题:

1、要首先研究出一个推导公式,这个公式要与参数有关,最好这个公式能够用(n-1)调 用的结果,来计算调用 n 的结果。例如,上面的 n! = (n-1)! * n 就是一个很好的例子。

2、 要写出递归的收敛条件。例如,上面对 n 是否为 1 的判断,这部分就是在说明递归 什么时候终止。

 

 

二、函数的作用

package p4;
public class TestSeperator{
	public static void main(String args[]){
		System.out.println("Hello World");
		//打印分隔符 --------------------
		for(int i = 0 ; i < 20 ; i++){
			System.out.print(“-“);
				}
			System.out.println();
			System.out.println("你好,世界");
		//打印分隔符 --------------------
		for(int i = 0 ; i < 20 ; i++){
			System.out.print(“-“);
				}
			System.out.println();
			System.out.println("Bonjour tout le monde");
		//打印分隔符 --------------------
		for(int i = 0 ; i < 20 ; i++){
			System.out.print(“-“);
		}
			System.out.println();
			System.out.println("Hallo Welt");
	}
}



1,避免冗余代码

我们来分析一下上面的代码。由于要输出三个分隔符,因此,需要有三个一模一样的 打印语句。因此,我们可以写一个函数:printSeperator(),这个函数专门用来打印分隔符。 修改后的代码如下:

package p4;
public class TestSeperator{
	public static void main(String args[]){
		System.out.println("Hello World");
			printSeperator();
		System.out.println("你好,世界");
			printSeperator();
		System.out.println("Bonjour tout le monde");
			printSeperator();
		System.out.println("Hallo Welt");
			}
	public static void printSeperator(){
	for(int i = 0 ; i < 20 ; i++){
		System.out.print(“-“);
		}
		System.out.println();
	}
}


2,提高程序的可维护性

如果现在需求产生了变化, 在输出分隔符时,希望能够输出一行“+”而不是一行“-”,此时,就必须要修改代码。 如果不使用函数的话,则必须要改动主函数中所有的输出分隔符的语句。在这个具体 的例子中,在主函数中的代码要修改三处。修改后的代码片段如下:

System.out.println("Hello World");
		//打印分隔符 +++++++++++++++++++
		for(int i = 0 ; i < 20 ; i++){
				System.out.print(“+“);
				}
			System.out.println();
		System.out.println("你好,世界");
		//打印分隔符 +++++++++++++++++++
		for(int i = 0 ; i < 20 ; i++){
				System.out.print(“+“);
				}
			System.out.println();
		System.out.println("Bonjour tout le monde");
		//打印分隔符 +++++++++++++++++++
		for(int i = 0 ; i < 20 ; i++){
			System.out.print(“+“);
				}
			System.out.println();
		System.out.println("Hallo Welt");


3,提高程序的重用性

如果使用函数的话,由于在主函数中仅仅是对同一个函数的多次调用, 因此,让函数实现发生改变的时候,函数的调用不需要改变。我们只需要对函数的实现修 改一次,就完成了我们的工作。修改后的代码如下:

public static void main(String args[]){
			System.out.println("Hello World");
			printSeperator();
			System.out.println("你好,世界");
			printSeperator();
			System.out.println("Bonjour tout le monde");
			printSeperator();
			System.out.println("Hallo Welt");
				}
			public static void printSeperator(){
				for(int i = 0 ; i < 20 ; i++){
					System.out.print(“+“);
					}
				System.out.println();
			}


4,提高程序的灵活性

使用函数,利用函数参数的变化,能够让代码更加灵活。例如,假设现在对分 隔符的长度有不同的要求,要求第一个分隔符长度为 20,第二个分隔符长度为 25,第三个 分割符长度为 30。 这样的需求,如果不适用函数的话,则必须要修改这三个输出的地方,并且每个地方 的输出语句都比较复杂。而如果使用函数的话,则可以让函数增加一个参数,这个参数表 示分隔符的长度。修改后的 printSeperator 函数如下:

public static void printSeperator(int n){
			for (int i = 0; i < n; i++){
				System.out.print(“+”);
				}
			System.out.println();
		}


这样,在主函数中,只要对这个函数传入不同的参数进行三次调用即可。修改后完整 的主函数如下

public static void main(String args[]){
			System.out.println("Hello World");
			printSeperator(20);
			System.out.println("你好,世界");
			printSeperator(25);
			System.out.println("Bonjour tout le monde");
			printSeperator(30);
			System.out.println("Hallo Welt");
		}



 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值