JAVA基础 方法

一、方法是什么

  方法是一种语法结构,它可以把一段代码封装成一个功能, 以方便调用

二、实例

package com.hello.method;

public class Method {

    public static void main(String[] args) {
        /*
        一、方法的定义
        修饰符  返回值类型  方法名(形参列表){
        方法体代码;
        return 返回值;
        }
       二、方法的注意事项
        1、如果方法不需要返回结果,则申明返回值类型为void(无返回值);方法不需要参数,则形参列表可以不写
        2、方法没有申明返回值类型,内部不能使用return返回数据
       三、方法的常见问题
       1、方法的编写顺序无所谓
       2、方法与方法之间是平级关系,不能嵌套定义——即public里面不能有public方法
       3、方法的返回值类型为void,方法内则不能使用return返回数据。
       public static void main(String[] args) {
       //像这种返回值类型为void的,里面就不能写return
       ]
       如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应值。
       public static int sum(int a,int b){
        //像这种返回值写了具体类型,比如int,方法体里必须要有return
            return 返回值;
            System.out.print("hello");//return语句下面,不能编写代码,因为永远执行不到,属于无效的代码。
         }
       4、有返回值的方法调用时可以选择定义变量接收结果,或者直接输出调用 ,甚至直接调用。
       无返回值方法的调用只能直接调用一下。
       5、方法不调用就不执行,调用时必须严格匹配方法的参数情况
       四、方法重载的识别技巧
       1、只要是同一个类中,方法名称相同、形参列表不同,那么他们就是重载的方法,其他都不管!
       2、形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称
         */
        int Dsum = sum(3,6);//定义变量接收结果
        System.out.println("定义变量接收结果:"+Dsum);
        System.out.println(sum(1, 3));//直接输出调用
        sum(4,5);//直接调用

        print();//无返回值方法的调用只能直接调用

        int Esum=sumn(100);//调用sumn方法,计算1-100的和
        System.out.println("1-100的和为:"+Esum);

        check(100);//调用check方法,判断奇偶数

        int [] ages = {14,16,17,20};
        int max = getArrayMaxData(ages);//调用最大值方法
        System.out.println("最大值是:"+max);

        //这里要注意方法参数传递机制(基本类型的参数传递),最终输出结果为10、20、10
        int a = 10;//定义变量a
        //1、调用change方法,将a存储的值10传递给方法中的形参变量a,输出打印结果为10
        //2、方法内部定义变量a=20,继续打印结果为20
        change(a);
        //3、此时方法已执行完,并跳出方法,执行方法外的打印,所以这里的a就当是10,故最后打印结果为10
        System.out.println(a);

        //引用类型的参数传递,最终输出结果为20、222、222
        int[] arr = {10,20,30};
        //1、调用changearr方法,将arr存储的地址值传递给方法中的变量arr,输出打印结果为20
        //2、方法内部定义变量arr[1]=222,继续打印结果为222,此时要注意,因为引用类型的参数存储的是地址,所以这里在方法内部
        //定义
        changearr(arr);
        //1、调用
        System.out.println(arr[1]);//222

        //调用比较数组的方法
        int[] arr1 = {10,120,30};
        int[] arr2 = {10,20,30};
        System.out.println(compare(arr1,arr2));

    }
    //有返回值类型的方法
    public static int sum(int a,int b){
        int count;
        count = a+b;
        return count;
    }
    //无返回值类型的方法
    public static void print(){
        System.out.println("helloword");
    }
    //需求1:定义一个方法,方法中计算出1-n的和并返回
    //定义方法重点关注:1、方法是否需要申明返回值类型;2、方法是否需要定义形参列表
    public static int sumn(int n){
        int sum=0;//声明一个变量接收计算出来的和,初始值为0
        for (int i = 1; i < n; i++) {
            sum +=i;
        };
        return sum;
    }
    //判断整数是奇数还是偶数
    //需求2:拿一个整数,然后调用方法,把整数交给方法,在方法中输出该整数为奇数还是偶数
    public static void check(int number){
        if(number%2 == 0){
            System.out.println(number+"是偶数");
        }
        else {
            System.out.println(number+"是奇数");
        }
    }
    //数组求最值改方法实现
    //需求3:把找出数组的最大值案例,改造成方法,可以支持返回任意整形数组的最大值数据
    public static int getArrayMaxData(int [] arr){
        int max=arr[0];
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]>max){
                max=arr[i];
            }
        }
        return max;
    }
    //基本类型的参数值传递:传输的是存储的数据值
    public static void change(int a){
        System.out.println(a);//10
        a = 20;
        System.out.println(a);//20
    }
    //引用类型的参数值传递:传输的是存储的地址值
    public static void changearr(int[] arr){
        System.out.println(arr[1]);//20
        arr[1] = 222;
        System.out.println(arr[1]);//222
    }
    //需求4:比较2个数组是否一样,如果两个数组的类型,元素个数,元素顺序和内容是一样的我们就认为这2个数组是一模一样的。
    //请使用方法完成,能够判断任意两个整形数组是否一样,并返回true或false
    /*
    1、定义一个方法: 参数:接收2个整型数组, 返回值类型:布尔类型
    * */
    public static boolean compare(int[] arr1,int[]arr2){
        //2、判断2个数组的内容是一样的
        if(arr1.length == arr2.length){
            for(int i=0;i<arr1.length;i++){
                if(arr1[i] != arr2[i]){
                    return false;
                }
            }
            return true;//是一样的
        }else {
            return false;
        }
    }
}
原文地址:https://www.cnblogs.com/Chilam007/p/15616762.html