黑马程序员-Java基础学习(函数)

来源:互联网 发布:音频矩阵 编辑:程序博客网 时间:2024/06/05 20:43

                                                     ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、函数的定义

1、什么是函数            

l  函数时定义在类中有特定功能的独立小程序,也称为方法。

l  当程序中一部分代码需要重复的出现时,为了提高代码的复用性,对代码进行抽取。将这个部分定义成一个独立的功能,方便与日后使用。而在java中对功能的定义是通过函数的形式来体现的。此时就用到了函数。

2、函数的基本结构

修饰符返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,)

         {

                            执行语句;

                            return返回值;

         }

 

²  返回值类型:函数结束后返回的结果的数据类型。

²  函数名:函数的名称要有意义,要体现出函数的功能。

²  参数类型:就是形式参数的数据类型。

²  形式参数:是一个变量,用于存储调用函数是传递给函数的实际参数。

²  实际参数:传递给形式参数的具体数值。

²  return:结束函数。

²  返回值:返回给调用者的值。

二、函数的特点

Ø  定义函数可以将功能代码进行封装。(这样主函数只需要调用其它函数就可以实现函数的功能)

Ø  便于对该功能进行复用。(只需要调用该函数即可实现函数功能)

Ø  函数只有被调用才会被执行。

Ø  函数的出现提高了代码的复用性。(定义的函数可以反复被调用)

Ø  如果函数没有具体的返回值,返回值类型要用关键字void表示,而如果该函数的return语句在函数的最后以行就可以省略不写。

Ø  函数与函数之间是平级关系,所以函数内部只能调用其它函数,而不能定义函数。

下面举例对函数的特点进行说明:

例一,

 

publicstatic void main(String[] args) {

               // TODO Auto-generated methodstub

               int x =4;

               System.out.println(x+1);

               x = 6;

               System.out.println(x+1);

     }

 

发现上边的运算,因为需要获取不同数据的“+1”以后的结果,所以代码出现了重复。为了提高代码的复用性。我们对部分代码进行抽取。将这个部分定义成一个独立的功能(函数)。如下,

 

publicstatic void main(String[] args) {

               // TODO Auto-generated methodstub

              

               int y=getHe(4);

               System.out.println("y="+y);

     }

     public static int getHe(int x)

     {

               return x+1;

     }

 

上边这段代码中定义的函数getHe的功能就是对用户提供的数字进行“+1”运算,然后将运算的结果返回给调用它的main函数,这样就实现了代码和功能的复用性。

例二,

 

publicstatic void main(String[] args) {

               // TODO Auto-generated methodstub

              

               getHe(3);

     }

     public static void getHe(int x)

     {

               System.out.print("和为"+(x+1));

               return ;

     }

 

上面这段代码中,函数getHe没有给main函数返回值,而是直接在自己的函数体中打印了自己的计算结果,所以这种情况向返回值类型要用关键字void表示,且最后一行的return也可以不写。

注:例二中的代码存在一个问题需要着重注意一下:这个功能定义思想是有有问题的,毕老师教育我们说,如果它的功能只为完成加法运算,至于是否要对和进行打印操作,那是调用者的事,不要在该功能中完成。

三、函数的应用

借用毕老师的话,我们在编写程序其实就是在不断的实现功能,而java中最小的功能单元就是函数。所以我们在写代码的时候涉及到处理和定义功能时,要把它定义到一个独立的函数中去,而不要把所有的代码都堆到主函数当中。这样只需要在主函数当中调用就可以了,从而实现了代码和功能的复用性。

如何定义一个函数

第一步:既然函数是一个独立的功能,那么该功能的运算结果是什么先明确,因为这是在明确函数的返回值类型。

第二部:明确在定义该功能的过程中是否需要未知的内容参与运算,因为是在明确函数的参数列表(参数的类型和参数的个数)。

例,功能需求:定义一个功能,用于打印矩形。

思路:

         1,确定结果:没有,因为直接打印。所以返回值类型是void

         2,有未知内容吗?有,两个,因为矩形的行和列不确定。

 

public static void main(String[] args) {

                   //TODO Auto-generated method stub

                  

                   JuXing(4,5);

         }

        

         publicstatic void JuXing(int hang,int lie)

         {

                   for(intx=0; x<hang; x++)

                   {

                            for(inty=0; y<lie; y++)

                            {

                                     System.out.print("*");

                            }

                            System.out.println();

                   }

四、函数的重载

重载的概念:在一个类中可以存在一个或多个名称相同的函数,但是这些函数的参数个数或参数类型必须不同。(重载的函数功能相同,但是参与功能的变量不同)如,

例1,

//定义一个加法,计算两个int变量的和。

publicstatic int He(int x,int y)

    {

             return x+y;

    }

 

    //定义一个加法,计算三个int变量的和。

    public static int add(int x,int y,int z)

    {

             return x+y+z;

    }

 

有这段代码可以看出,其中的两个函数的名称相同,但是他们当中的参数的个数并不相同,因此他们是可以并存的。

例2,

//打印99乘法表

publicstatic void print99(int num)

    {

             for(int x=1; x<=num; x++)

             {

                       for(int y=1; y<=x;y++)

                       {

                                System.out.print(y+"*"+x+"="+y*x+"\t");

                       }

                       System.out.println();

             }

    }       

 

    public static void print99()

    {

             for(int x=1; x<=9; x++)

             {

                       for(int y=1; y<=x;y++)

                       {

                                System.out.print(y+"*"+x+"="+y*x+"\t");

                       }

                       System.out.println();

             }

    }

上面这段代码,当用户调用print99()时,下边的函数响应,程序将运行打印出9乘9的乘法表。当用户调用print99(5)时,上边的函数响应,乘法表只会打印到5乘5.而这段代码还可以进一步优化,如下

publicstatic void print99(int num)

    {

             for(int x=1; x<=num; x++)

             {

                       for(int y=1; y<=x;y++)

                       {

                                System.out.print(y+"*"+x+"="+y*x+"\t");

                       }

                       System.out.println();

             }

    }       

 

    public static void print99()

    {

             print99(9);       

}

这样当用户调用print99()时,下边的函数响应,他又去调用print99(9),第一个函数相应,从而完成9乘9的乘法表打印。

 


0 0
原创粉丝点击