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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

方法:是完特定功能的代码块;
/*方法(方法不能写在方法里面)
        **特点:不调用不执行
        **方法的格式
        修饰符 返回值类型 方法名(参数类型1 参数1,参数类型2 参数2,...){
            方法体;
            return 返回值;
        }
        格式解释:
        A:修饰符        目前记住public static
        B:返回值类型    用于限定返回值的数据类型(基本数据类型,引用数据类型,无返回值类型void)
        C:方法名        为了方便我们调用方法的名字
        D:参数类型        用于限定调用方法时传入的数据的类型(基本数据类型,引用数据类型)
        E:参数名        用于接收调用方法时传入的数据的变量
        F:方法体        完成功能的代码
        G:return        结束方法,并且把返回值带给调用者

        参数列表: 就是方法定义上小括号里的全部   

        写一个方法有两个明确:
            A:返回值类型    明确功能结果的数据类型
            B:参数列表        明确有几个参数,以及参数的数据类型
        方法的调用:(有明确返回值的)
        格式:方法名(具体参数);
        A:单独调用,没有意义(void修饰的方法只能单独调用,有终止方法的用途.但返回值为void类型时return可以写但后面不能写东西;)
        B:输出调用,有意义,但是不够好,因为我可能需要拿结果进行进一步的操作
        C:赋值调用,推荐方式
   
        */
        /*1.写一个方法用于两位数求和
            返回值类型----int
            分析参数列表---参数类型---int
                           参数值-----x,y
        //1.代码(赋值调用)
        int v = 5;
        int o = 6;
        int a = sum(v,o);//
            System.out.println(a);//如果为11
        
        此方法应该写在main方法外,因整理写在这里
        public static int sum(int x,int y){
            int sum = x+y;
            return sum;
        }
        
        //2.输出调用
        System.out.println(getMax(19,23));//输出结果23
        public static int getMax(int a, int b){
        if(a>b){
            return a;
         }else{
            return b;
         }
        }
        
        //3.单独调用(比较大小)(void修饰的方法的调用)
        Test(45,99);//在main中输
        //方法体(此方法应该写在main方法外,因整理写在这里)
        public static void Test(int a,int b){
        if(a>b){
        System.out.println(a+"大于"+b);
        }else{
        System.out.println(a+"小于"+b);
        }
        }
        
        //4.通过方法求出1-100所有偶数的和(无参方式)
        System.out.println(sum());
        //方法体(此方法应该写在main方法外,因整理写在这里)
        public static int sum(){
            int sum = 0;
            for(int i=1;i<=100;i++){
                if (i%2==0) {
                    sum+=i;
                }
            }
            return sum;
        }
        */
    /*方法参数的改变
        方法的参数如果是基本数据类型:形式参数的改变不影响实际参数;(只是将基本数据在栈中赋值给调用的方法中的形式参数,所以改变的话只是改变调用的方法中的数据值,而原本的main方法中的数据值不会发生改变)
        方法份的参数如果是引用数据类型:形式参数直接影响实际参数;(例如数组,只是将数组在堆中的地址之传递给方法,改变地址中的数据就是改变原来的数组)
        形式参数:用于接收实际参数的变量
        实际参数:实际参与运算的变量
        //基本数据类型;
        //代码(实参(值传递)数值只会在方法体总改变,但实参的真实值不会变化,形参不会影响实参。在main主方法中的为实参在方法体中的为形参)
        
        int a = 23;
        int b = 555;
        System.out.println(a);//23
        System.out.println(b);//555
        System.out.println(xxx(a,b)); //6,方法体中的形参只改变了参与了运算但不影响实际参数,上面下面输出实际参数,可以看出未发生变化。
        System.out.println(a);//23
        System.out.println(b);//555
        //方法体(此方法应该写在main方法外,因整理写在这里)
        public static int xxx(int a,int b){
                //a = 1;
                //b = 5;
                b+=a;
                return b;
            }
        */
        //(数组)方法的参数如果是数组类型:形式参数的改变会影响实际参数。
        /*
        int[] arr = {1,2,3,4};
        for(int i = 0; i<arr.length; i++){
            System.out.print(arr[i]+"  ");
        }
        System.out.println("--------------");//结果1,2,3,4

        array(arr);//执行下面方法

        System.out.println("--------------");
        for(int i = 0; i<arr.length; i++){
            System.out.print(arr[i]+"  ");//结果1,4,3,8
        }
        //方法体
        public static void array(int[] arr){
            for(int i = 0; i<arr.length; i++){
                if(arr[i]%2==0){
                    arr[i]=arr[i]*2;
                }
            }   
            System.out.println("我只执行了");
        }
        */
    }
}
方法的重载:在同一个类中,出现了方法名相同的情况。
    特点:
    A:方法名相同,参数列表不同。与返回值无关。
    B:参数对应的数据类型不同。
    //***不能出现方法名相同且参数列表相同的情况。
注意:在调用方方法的时候,java虚拟机会同过参数列表的不同来区分同名方法。
方法区:存放着class字节码文件,所以在方法去内会有

0 个回复

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