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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 大蓝鲸Java 中级黑马   /  2019-5-31 12:17  /  534 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

【南京校区】方法
1.方法概述
        就是一个独立的代码集。//一个方法一般会独立的去完成一个单独的功能。

        特点:
                不调用不执行。


2.方法定义和调用
        定义格式:
                public static void 方法名(){
                        方法体;
                }
       
        调用格式:
                method();



3.方法的调用过程
        public static void main(String [] args){//是程序的主入口
                                                                                        //当程序开始运行的时候,由虚拟机来调用main方法的。
                System.out.println(111);
                method();
                System.out.println(222);
        }

        public static void method(){
                System.out.println(333);
                System.out.println(444);
                System.out.println(555);
        }

        //简单理解:
                当方法被调用的时候,如果方法中的代码没有执行完毕,那么方法下面的代码永远执行不到。




        public static void main(String [] args){
                System.out.println(111);
                method();
                System.out.println(222);
        }

        public static void method(){
                while(true){}
        }
        结论:
                此时程序在method方法中的无限循环中不断的执行,永远执行不到222。
        理由:
                当方法被调用的时候,如果方法中的代码没有执行完毕,那么方法下面的代码永远执行不到。



4.快速生成一个方法的快捷键:
        alt + 回车


5.形参和实参
       
        public static void main(String [] args){
                getSum(2,3);

                int a = 10;
                int b = 20;
                getSum(a,b);
        }

        public static void method(int a, int b){
                System.out.println(a + b);
        }

        形参(形式参数):在方法定义的时候,小括号中的变量。在上面的案例中有两个形参。

        参数列表:所有的形参组成的这个整体
       
        实参(实际参数):在方法调用的时候,实际传递过来的值。在上面的案例中有两个实参。


关系:
        形参和实参:一一对应。,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,



6、带返回值方法定义和调用
         定义格式:
                public static 返回值类型 方法名(参数列表){
                        方法体;
                        return 变量;
                }

                return :将结果返回给调用处
                                 停止方法
       


        引申:
                return 关键字的作用:
                                在有返回值的方法中:将结果返回给调用处
                                                                        停止方法
                               
                                在没有返回值的方法中:
                                                                        停止方法
       

7.return break continue 关键字的区别。
        break continue:跟方法本身没有什么关系的。跟循环有关的。
        return :跟循环是没有任何关系的,跟方法有关。
                         但是方法都停止了,那么方法中的循环也就没有了。



8.关于方法的定义
        我到底要不要写返回值类型?我到底要写几个形式参数?

        当不知道如何写一个方法的时候,建议你问一下自己以下的这几个问题?
        1.我要干嘛? --- 决定了方法体

        2.我干这件事情,需要什么?---- 决定了方法的形参

        3.我干完了,要不要把结果告诉调用者? --- 决定了方法的返回值
       

        练习:
                1、我要求两个长方形的周长和。
                public static void main(String [] args){
                        //1、我要求两个长方形的周长和。
                        //(长 + 宽) * 2

                        //1.我要干嘛?
                        //  求长方形的周长

                        //        2.我干这件事情,需要什么?
                                //长和宽
                        //        3.我干完了,要不要把结果告诉调用者?
                                //要。因为这个方法只能求一个长方形的周长。

                        int result = getLen(10,5) + getLen(3,2);
                        System.out.println(result);

                }

                public static int getLen(int length,int width){
                        return (length + width) * 2;
                }

                2、想打印一个N行M列的矩形。
                        print(3,5);

                        public static int print(int a,int b){
                                //a表示的是行数
                                //b表示的是列数
                                for (; ; ){
                                        for (; ; ){
                                        }
                                }
                        }



9.方法重载的概念
        重载:
                在同一个类,有相同方法名的方法,参数列表不同,与返回值无关。
                                参数列表不同:
                                        参数的个数不同。
                                                                method(int a);
                                                                method(int a,int b);
                                                                method(int a,int b,int c);
                                        参数的类型不同。
                                                                method(int a);
                                                                method(double a);
                                                                method(String a);

                                        参数的类型顺序不同。  
                                                                method(int a,double b);
                                                                method(double a,int b);


10.方法的重载中调用关系。
                优先调用实际参数跟形式参数数据类型完全一致的那个方法。
                如果没有,就自动类型提升。


                               

11.方法参数传递基本类型
        针对于基本类型数据来讲:
                变量只在本方法中有效,在方法A中不能修改方法B中的值。

       
        结论:
                方法中形式参数如果是基本数据类型。
                在方法中修改变量的值,不会影响到调用者变量的值。

练习1:
         public static void main(String[] args) {
        int number = 10;
        System.out.println("①" + number);
        method(number);
        System.out.println("④" + number);
    }

    public static void method(int number) {
        System.out.println("②" + number);
        number = 200;
        System.out.println("③" + number);
    }

练习2:
         public static void main(String[] args) {
        int number = 10;
        System.out.println("①" + number);
        method(number);
        System.out.println("④" + number);
    }

    public static int method(int number) {
        System.out.println("②" + number);
        number = 200;
        System.out.println("③" + number);
                return number;
    }


练习3:
         public static void main(String[] args) {
        int number = 10;
        System.out.println("①" + number);
        number = method(number);
        System.out.println("④" + number);
    }

    public static int method(int number) {
        System.out.println("②" + number);
        number = 200;
        System.out.println("③" + number);
                return number;
    }
12.方法的参数是引用数据类型

练习1:
        public static void main(String[] args) {
        int [] arr = {1,2,3};
        System.out.println("①" + arr[0]);//1
        method(arr);
        System.out.println("④" +arr[0]);
    }

    public static void method(int [] arr) {
        System.out.println("②" +arr[0]);
        arr[0] = 10;
        System.out.println("③" +arr[0]);
    }


练习2:
        public static void main(String[] args) {
        int [] arr = {1,2,3};
        System.out.println("①" + arr[0]);//1
        method(arr);
        System.out.println("④" +arr[0]);
    }

    public static void method(int [] arr) {
        arr = new int[3];
        System.out.println("②" +arr[0]);
        arr[0] = 10;
        System.out.println("③" +arr[0]);
    }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马