方法简介

方法是用来封装特定功能的代码块,为了提高代码的复用性

学习方法主要就学习两点
	1.方法的定义
	2.方法的调用

方法的定义和调用

public class MethodDemo{
    //主方法
    public static void main(String[] args){
        hairCut();  //调用剪头发的方法

        hairCut();  //调用剪头发的方法
    }
    
    //自定义方法,剪头发方法
    public static void hairCut(){
        System.out.println("洗头发");
        System.out.println("剪头发");
        System.out.println("再洗头发");
        System.out.println("吹头发");
        System.out.println("付钱");
    } 
}
public class MethodDemo1{
    //不管写多少个方法,第一个执行的永远是main方法
    public static void main(String[] args){
        show();
    }
    
    public static void function(){
        System.out.println("fun...");
    }
    
    public static void study(){
         System.out.println("study..."); 
         function();
    }
    
    public static void show(){
        System.out.println("show...");
        study();
    } 
}

方法格式和调用练习

public class MethodDemo2{
    public static void main(String[] args){
        method();
    }
    
    //判断一个数是否为奇数或者偶数
    public static void method(){
        int a=10;
        if(a%2==0){
            System.out.println("偶数");
        }else{
            System.out.println("奇数");
        }
    }
}

方法的参数问题

给方法加上参数,可以让方法使用起来更加灵活。

public class MethodDemo3{
    public static void main(String[] args){
        method(20); //求20是奇数还是偶数
        
        method(21); //求21是奇数还是偶数
        
        int num=32;
        method(num); //求32是奇数还是偶数
    }
    
    //判断一个数是否为奇数或者偶数
    public static void method(int a){ 
        if(a%2==0){
            System.out.println("偶数");
        }else{
            System.out.println("奇数");
        }
    }
}

形式参数和实际参数

形式参数:定义方法时,小括号中的参数
实际参数:调用方法时,小括号中的参数

注意:形式参数和实际参数是一一对应的
	参数类型和个数都要对应

打印输出n~m之间的所有偶数

public class MethodDemo4{
    public static void main(String[] args){
        print(1,10); //实际参数
        
        System.out.println("------------");
        
        print(20,30); //实际参数
    }
    
    //需求:打印输出n~m之间的所有偶数
    public static void print(int n,int m){ //形式参数
        for(int i=n;i<=m;i++){
            if(i%2==0){
                System.out.println(i); 
            }
        }
    }
}

方法的返回值

如果方法的执行结果需要交给调用者处理,就需要些返回值

public static 结果的数据类型 方法名(){
    ....
   	return 结果;
}

写一个方法,求长方形的面积

public class MethodDemo6{
    public static void main(String[] args){
        //求长宽分别是3和4的长方形的面积
        int s1=rectArea(3,4);
        System.out.println(s1);
        
        //求长宽分别是3和4的长方形的面积
        int s2=rectArea(10,20);
        System.out.println(s2);
    }
    
    //写一个方法,求长方形的面积
    public static int rectArea(int width,int height){
        int area=width*height;
        return area; //返回面积
    }
}

写一个方法,求两个数的最大值

public class MethodDemo7{
    public static void main(String[] args){
        
        int min=getMin(3,4,5);
        System.out.println("最小值为:"+min);
        
        System.out.println("最小值:"+getMin(3,4,5)); 
    }
    
    //写一个方法,求三个数的最小值
    public static int getMin(int a,int b,int c){
        //先比较a和b的最小值
        int min=a<b?a:b;
        
        //求min和c的最小值
        min=min<c?min:c;
        
        return min;
    } 
}

方法的通用格式

修饰符  返回值类型  方法名(参数列表){
    方法体;
    return 返回值;
}

格式解析:
	修饰符:目前来说是固定的 public static 
    返回值类型:结果的数据类型,如果没有返回值就写void
    方法名:根据功能自己取的名字(见名知意)
    参数列表:完成功能需要的数据
    方法体:具体的功能代码
    return : 结束方法,并带回返回值;

方法重载

方法重载指的是,在同一个类中,方法名相同,参数列表不同,与返回值无关。

public class MethodDemo7{
    //求两个整数的和
    public static int sum(int a,int b){
        int s=a+b;
        return s;
    }

    //求三个整数的和
    public static int sum(int a,int b,int c){
        int s=a+b+c;
        return s;
    }
}
public class MethodDemo8{
    public static void main(String[] args){
        long a=3000L;
        long b=4000L;
        
        boolean f=compare(a,b);
        System.out.println(f);
    }
    
    //比较两个整数是否相同
    public static boolean compare(byte a,byte b){
        return a==b;
    } 
    
    //比较两个整数是否相同
    public static boolean compare(short a,short b){
        return a==b;
    }
    
    //比较两个整数是否相同
    public static boolean compare(int a,int b){
        return a==b;
    }
    
     //比较两个整数是否相同
    public static boolean compare(long a,long b){
        return a==b;
    }
    
     //比较两个整数是否相同
    public static boolean compare(float a,float b){
        return a==b;
    }
    
     //比较两个整数是否相同
    public static boolean compare(double a,double b){
        return a==b;
    }
}

方法参数类型的问题

1.方法的参数是基本数据类型
	形式参数的改变对实际参数没有影响

2.方法的参数是引用数据类型
	实际参数传递的就是地址

方法练习

  • 按照格式打印输出数组中的元素
//打印格式:[1, 2, 3, 4, 4, 5]

public class MethodDemo8{
    public static void main(String[] args){
        int[] arrayA={1,2,3,4,5}; //地址1
        printArray(arrayA);
        
        int[] arrayB={10,20,30,40,50}; //地址2
        printArray(arrayB);
    }
    
    public static void printArray(int[] array){
        //0.先无条件打印一个[, 不换行
        System.out.print("[");
        //1.遍历数组
        for(int i=0;i<array.length;i++){
            //2.打印数组中的元素
            if(i==array.legnth-1){
                //如果是最后一个元素,输出  元素+"]“,换行
                System.out.println(array[i]+"]");
            }else{
                //如果不是最后一个元素,输出 元素+", ",不换行
                System.out.print(array[i]+", ");
            }
        }
    }
}
  • 写一个方法,求数组中元素的最大值
//抽取方法的快捷键:ctrl+al+m 
public class MethodTest5 {
    public static void main(String[] args) {
        int[] arrayA={1,2,4,45,5,7,8,4,5};

        int max = getMax(arrayA);

        System.out.println("数组的最大值为:"+max);
    }

    public static int getMax(int[] array) {
        int max=array[0];
        for (int i = 1; i < array.length; i++) {
            if(array[i]>max){
                max=array[i];
            }
        }
        return max;
    }
}

在一个方法中,同时求最大值和最小值,并返回

public class MethodTest6 {
    public static void main(String[] args) {
        int[] array={1,2,4,45,5,7,8,4,5};
		//调用方法
        int[] result = getMaxAndMin(array);
        System.out.println("数组的最大值为:"+result[0]);
        System.out.println("数组的最小值为:"+result[1]);
    }

    public static int[] getMaxAndMin(int[] array) {
        //求数组的最大值
        int max=array[0];
        for (int i = 1; i < array.length; i++) {
            if(array[i]>max){
                max=array[i]; 
            }
        }
        //求数组的最小值
        int min=array[0];
        for (int i = 1; i < array.length; i++) {
            if(array[i]<min){
                min=array[i];
            }
        }
        //把最大值和最小值,存入一个数组中中
        int[] result={max,min};
        //把数组返回
        return result;
    }
}