A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© luorenyu 中级黑马   /  2015-8-1 00:23  /  612 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

7、函数
a、定义:
函数就是定义在类中的具有特定功能的一段独立小程序,函数也称为方法
格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2, )——括号内我们我可以统称为参数列表
{
                执行语句
                return返回值
}
注:
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型
形式参数:是一个变量,用语存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值
        return:用语结束函数
        返回值:该值会反回给调用者
        例:
        class FunctionDemo
        {
                int x=4;
                System.out.println( x*3+5);
                x=6;
                System.out.println( x*3+5);
        }
        发现以上的运算,因为获取不同数据的运算结果,代码出现了重复,为了提高代码的复用性,对代码进行提取。将这个部分定义成为一个独立的功能。方便于日后使用,java中对功能的定义是通过函数的形式来体验的。
需要定义功能,完成一个整数的*3+5的运算,并打印结果。

实例格式:
  public static int getResult (int num)    ——定义一个函数
  {
                return num*3+5;
}
定义完以后,写一个整体函数
class  
{
        public static int getResult (int num)    //定义一个函数
  {
                return num*3+5;
  }
        public static void main(String[] args)
        {
                getResult(4);   //这样就可以算出4*6+5的结果了!这样我们定义的getResult函数才算被调用!
        }
}
       
b、函数的特点:
*定义函数可以将功能代码进行封装
*便于对该功能进行复用
*函数只有被调用才会被执行
*函数的出现提高了代码的复用性
*对于函数没有具体返回值得情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行,可以省略不写。
注意:
函数中只能调用函数,不可以在函数内部定义函数。
定义函数时,函数的结果应该返回给调用者,交由调用者处理

特点5讲解
当函数运算后,没有具体的返回值时,这个返回值类型用一个特殊的关键字来标识,该关键字就是void,void:代表的是函数没有具体返回值的情况。当函数的返回值类型是void时,函数中的return语句可以省略不写。
例:
class  
{
        public static void getResult (int num)    //返回值的类型要改成void
  {
                System.out.println( num*3+5);
  }
}

c、函数的基本应用
如何定义一个函数呢?
1、        既然函数是一个独立的功能,那么该功能运算的结果是什么,先明确。因为这是在明确函数的返回值类型。
2、        再明确在定义该功能的的过程中是否需要未知的内容参与运算。因为这是在明确函数的参数列表(参数的类型和参数的个数)
例1:
需求:定义一个功能,完成3+4的运算,并将结果返回给调用者
1、        明确功能的结果是一个整数的和
2、        在实现该功能的过程中是否有未知内容参与运算,(没有)
其实这两个功能就是再明确函数的定义,
第一个是在明确函数的返回值类型,第二个实在明确函数的参数列表(参数列表包含参数的类型和参数的个数)。
public static void getNum()
{
return 3+4
}
例2:
需求:在例1的基础上,由用户定义加数与被加数,使得该功能更具扩展性和意义!
思路分析:
1、        功能结果是一个和,返回值类型是int,
2、        有未知内容参与运算,有两个位置内容的类型都是int。

public static void int getSum(int  x, int y)
{
                return x+y
}

另注:
有人这样来定义一个功能:
public static void get(int a ,int b)
{
        System.out.println(a+b);
        return;
}
这个功能的定义思想有问题,为什么呢?因为职位完成加法运算,至于是否要对和进行打印操作,那时调用者的事儿,不要在该功能中完成。

练习题:
1、        定义一个功能,用于打印矩形。
2、        定义一个打印99乘法表功能的函数

第一题:
思路:1、确定结果:无结果,直接打印,所以返回值类型是void。
2、有未知内容么?有,两个,因为矩形行和列不确定
编写:
public static void squareness(int row,int col )
{
        for (int x=0; x<row ;x++)
        {
                for(int y=0; y<col ;y++ )
                {
                        System.out.print(“*”);
}
System.out.println();
}
}


第二题:
思路:
1、        确定结果:无结果,直接打印,所以返回值类型是void。
2、        有未知内容么?有,有两个,乘数与被乘数不确定。
编写:
        public static void multiplication(int x ,int y)
        {
                for (x=1;x<=10,x++)
                {
                        for(y=1;y<=x;y++)
                        {
                                System.out.print(y+”*”+x+”=”x*y+\t);
}
System.out.print();
}
}

d、函数的重载
        重载的概念:
在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可        。
重载的特点:与返回值无关,只看参数列表
重载的好处:方便阅读,优化程序设计。
例:
class FunctionOverload
{
        public static void main(String[] args)
        {
                add(4,5);
                add(4,5,6);
                System.out.println(“Hello World!”);
}
public static int add(int x, int y)
{
return x+y;
}
public static int add(int x, int y, int z)
{
return x+y+z;
}
}
总结:
什么时候用重载?
当定义的功能相同但参与运算的未知内容不同,那么这时就定义一个函数名称,以表示其功能方便阅读,而通过参数列表的不同来区分多个同名函数!

练习题:
判断下列函数是否与给出函数重载
给出函数:void show(int a , char b , double c){ }
选项:
a.        void show(int x , char y , double z){ }——不是,因为和原函数一样。
b.        int show(int a , double c , char b){ }——重载,因为参数类型不同,注:重载和返回值类型没关系。
c.        void show(int a , double c , char b){ }——重载,因为参数类型不同,注:重载和返回值类型没关系。
d.        boolean show(int c , char b){ }——重载,因为参数不同
e.        void show(double c) { }——重载,因为参数不同
f.        double show(int x , char y , double z){ }——没有, 这个函数不可以和给定函数同时存在与一个类中。

3 个回复

正序浏览
写的很好赞一个
回复 使用道具 举报
不错,以后慢慢看
回复 使用道具 举报
大家多多指正
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马