Java 函数的用法

Java 函数的用法,如果需要经常做某一种操作,则类似的代码需要重复写很多遍。比如在一个数组中查找某个数,第一次查找一个数,第二次可能查找另一个数,每查一个数,类似的代码都需要重写一遍,很罗唆。另外,有一些复杂的操作,可能分为很多个步骤,如果都放在一起,则代码难以理解和维护。

计算机程序使用函数这个概念来解决这个问题,即使用函数来减少重复代码和分解复杂操作。

基本概念

函数这个概念,我们学数学的时候都接触过,其基本格式是y=f(x),表示的是x到y的对应关系,给定输入x,经过函数变换f,输出y。程序中的函数概念与其类似,也由输入、操作和输出组成,但它表示的是一段子程序,这个子程序有一个名字,表示它的目的(类比f),有零个或多个参数(类比x),有可能返回一个结果(类比y)。我们来看两个简单的例子:

public static int sum(int a, int b){
    int sum = a + b;
    return sum;
}
public static void print3Lines(){
    for(int i=0; i<3; i++){
        System.out.println();
    }
}

第一个函数的名字叫做sum,它的目的是对输入的两个数求和,有两个输入参数,分别是int整数a和b,它的操作是对两个数求和,求和结果放在变量sum中(这个sum和函数名字的sum没有任何关系),然后使用return语句将结果返回。

第二个函数的名字叫做print3Lines,它的目的是在屏幕上输出三个空行,它没有输入参数,操作是使用一个循环输出三个空行,它没有返回值。

以上代码都比较简单,主要是演示函数的基本语法结构,即:

修饰符 返回值类型  函数名字(参数类型 参数名字,…) {
    操作
    return返回值;
}

函数的主要组成部分有以下几种。
1)函数名字:名字是不可或缺的,表示函数的功能。
2)参数:参数有0个到多个,每个参数由参数的数据类型和参数名字组成。
3)操作:函数的具体操作代码。
4)返回值:函数可以没有返回值,如果没有返回值则类型写成void,如果有则在函数代码中必须使用return语句返回一个值,这个值的类型需要和声明的返回值类型一致。
5)修饰符:Java中函数有很多修饰符,分别表示不同的目的,本文假定修饰符为public static,且暂不讨论这些修饰符的目的。

以上就是定义函数的语法。定义函数就是定义了一段有着明确功能的子程序,但定义函数本身不会执行任何代码,函数要被执行,需要被调用。

Java中,任何函数都需要放在一个类中。类还没有介绍,我们暂时可以把类看作函数的一个容器,即函数放在类中,类中包括多个函数,Java中的函数一般叫做方法,我们不特别区分函数和方法,可能会交替使用。一个类里面可以定义多个函数,类里面可以定义一个叫做main的函数,形式如:

public static void main(String[] args) {
      …
}

这个函数有特殊的含义,表示程序的入口,String[] args表示从控制台接收到的参数,我们暂时可以忽略它。Java中运行一个程序的时候,需要指定一个定义了main函数的类,Java会寻找main函数,并从main函数开始执行。

刚开始学编程的人可能会误以为程序从代码的第一行开始执行,这是错误的,不管main函数定义在哪里,Java函数都会先找到它,然后从它的第一行开始执行。

main函数中除了可以定义变量,操作数据,还可以调用其他函数,如下所示:

// www.coolcou.com
public static void main(String[] args) {
    int a = 2;
    int b = 3;
    int sum = sum(a, b);
    System.out.println(sum);
    print3Lines();
    System.out.println(sum(3,4));
}

调用函数需要传递参数并处理返回值。main函数首先定义了两个变量a和b,接着调用了函数sum,并将a和b传递给了sum函数,然后将sum的结果赋值给了变量sum。

这里初学者需要注意的是,参数和返回值的名字是没有特别含义的。调用者main中的参数名字a和b,和函数定义sum中的参数名字a和b只是碰巧一样而已,它们完全可以不一样,而且名字之间没有关系,sum函数中不能使用main函数中的名字,反之也一样。调用者main中的sum变量和sum函数中的sum变量的名字也是碰巧一样而已,完全可以不一样。另外,变量和函数可以取一样的名字,但一样不代表有特别的含义。

调用函数如果没有参数要传递,也要加括号(),如print3Lines()。
传递的参数不一定是个变量,可以是常量,也可以是某个运算表达式,可以是某个函数的返回结果。比如:System.out.println(sum(3,4));,第一个函数调用sum(3,4),传递的参数是常量3和4,第二个函数调用System.out.println传递的参数是sum(3,4)的返回结果。

关于参数传递,简单总结一下,定义函数时声明参数,实际上就是定义变量,只是这些变量的值是未知的,调用函数时传递参数,实际上就是给函数中的变量赋值。

函数可以调用同一个类中的其他函数,也可以调用其他类中的函数,比如:

int a = 23;
System.out.println(Integer.toBinaryString(a));

调用Integer类中的toBinaryString函数,toBinaryString是Integer类中修饰符为public static的函数,表示输出一个整数的二进制表示。

对于需要重复执行的代码,可以定义函数,然后在需要的地方调用,这样可以减少重复代码。对于复杂的操作,可以将操作分为多个函数,会使得代码更加易读。

我们知道,程序执行基本上只有顺序执行、条件执行和循环执行,但更完整的描述应该包括函数的调用过程。程序从main函数开始执行,碰到函数调用的时候,会跳转进函数内部,函数调用了其他函数,会接着进入其他函数,函数返回后会继续执行调用后面的语句,返回到main函数并且main函数没有要执行的语句后程序结束。

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!