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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hello隔壁老李 中级黑马   /  2015-9-15 20:16  /  468 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


函数:也可以叫做方法,函数是对功能代码块的封装。
     (1)定义在类中,有特定功能的一段小程序,可以提高代码的复用性和维护性。

        (2)函数的格式:
                修饰符 返回值类型 函数名(形参类型 形式参数1,形参类型 形式参数2...)
                {
                        函数体;
                        reutrn 返回值;
                }

                A:修饰符:方法的修饰符比较多,有对访问进行限定的。
                           如静态修饰符static,最终修饰符final等等。

                B:返回值类型:用于限定方法返回值的数据类型,程序最终结果的数据类型。

                C:函数名:其实就是函数的名称,方便我们调用。

                D:参数
                    形参类型        数据类型
                    形式参数        就是接收实际参数的变量
                    实际参数        就是实际参与操作的变量(常量)
                      注意:如果方法不需要接收任何参数,则参数列表为空,即括号内()不写任何东西。

                E:函数体:就是按照正常的逻辑完成功能的代码。

                F:返回值:就是程序的最终结果。返回值的类型必须为方法返回值类型,如果方法中
                          没有返回值,返回值类型要声明为void。

                G:reutrn 返回值        哪里调用程序,return就把结果返回到哪里。
                        函数其实是有关键字return让他结束的。
                        注意:void类型的函数,其实最后一行。默认有一个return;但是省略了。

        (3)函数的特点:
                A:函数与函数之间是平级关系。不能在函数中定义函数。
                        因为函数体是完成功能的代码是由语句组成的,
                        所以里面可以由顺序执行语句 选择语句 循环语句 等 各种语句

                B:运行特点        函数只有被调用才执行。

        (4)案例:
                有明确返回值的例子:
                        A:求两个数据的和
                                public static int sum(int a,int b)
                                {
                                        return a+b;
                                }
                        B:求两个数据的最大值
                                public static int getMax(int a,int b) //形式参数,形式参数
                                {
                                                return a>b?a:b;
                                }
                        C:比较两个数是否相等
                                public static boolean compare(int a,int b)
                                {               
                                                return a==b;
                                }
               
                void类型例子:
                        A:nn乘法表
                        B:根据给定的行和列输出一个*组成的长方形
                                public static void printChangFangXing(int row,int col)
                                {
                                        for(int x=0; x<row; x++)
                                        {
                                                for(int y=0; y<col; y++)
                                                {
                                                        System.out.print("*");
                                                }
                                                System.out.println();
                                        }
                                        //return;void的只有默认return,没有返回值,通常省略
                                }
        (5)函数的调用
                A:有明确返回值                 

                        a:单独调用:一般没有意义。
                        b:输出调用但是如果想拿结果继续操作,就有问题了。所以,不好。
                        c:赋值调用:推荐方式。首先看函数,返回值类型是什么,你就用什么类型接收。
               
                B:void类型
                        单独调用。compare(x,y);
                       

                        // A.举例说明
                        class Demo1
                                {
                                public static void main(String[] args)
                                {
                                        int x = 10;
                                        int y = 20;

                                     /*单独调用
                                        compare(x,y); 结果是:30,但是程序没有输出*/

                                System.out.println(compare(x,y));  //输出调用
                               
                                //赋值调用
                                int a=copare(x,y);
                                System.out.println(a);
                                                       
                }

                public static int compare(int x,intx)
                {
                        return x+y;
                }






易错题:注意参数传递时的内存变化

       class Demo
        {
                public static void main(String[] args)
                {
                        int a = 10;
                        int b = 20;
                        System.out.println("a:"+a+",b:"+b);  //a=10, b=20
                        change(a,b);

        //这里要谨记,上一句虽然调用了函数,但是一调用完在内存就给处理掉,ab给释放了。
                        System.out.println("a:"+a+",b:"+b);  //a=10, b=20

                        int[] arr = {1,2,3,4,5};
                        change(arr);
                        System.out.println(arr[1]); //arr[1]=4
                }

                public static void change(int a,int b)
                {
                        System.out.println("a:"+a+",b:"+b);   //a=10, b=20
                        a = b;
                        b = a + b;
                        System.out.println("a:"+a+",b:"+b);   //a=20 , b=40
                }

                public static void change(int[] arr)
                {
                        for(int x=0; x<arr.length; x++)
                        {
                                if(arr[x]%2==0)
                                {
                                        arr[x]*=2;
                                }
                        }
                }
        }

3 个回复

倒序浏览
谢谢分享
回复 使用道具 举报
谢谢分享

回复 使用道具 举报
总结的不错,继续加油把兄弟
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马