java学习06---方法

一 方法

方法(method)是程序中最小的执行单元

注意:

  • 方法必须先创建才可以使用,该过程成为方法定义

  • 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

二  方法的定义和调用

java学习06---方法_第1张图片

1 无参数方法定义和调用

  • 定义格式:

    public static void 方法名 (   ) {
        // 方法体;
    }
  • 范例:

    public static void playgame(){
            System.out.println("a");
            System.out.println("b");
            System.out.println("c");
            System.out.println("d");
  • 调用格式:

    方法名();
  • 范例:

    method();
  • 注意:

    方法必须先定义,后调用,否则程序将报错java学习06---方法_第2张图片

练习

需求:定义一个方法,在方法内部定义两个变量。
求出他们的和并进行打印。

package com.wy.methoddemo;public class MethodDemo1 {
    public static void main(String[] args) {
        getsum();
    }
    public static void getsum(){
        int num1=10;
        int num2=20;
        int result=num1+num2;
        System.out.println(result);
    }
}

 java学习06---方法_第3张图片

2.带参数方法定义和调用

  • 定义格式:

    参数:由数据类型和变量名组成 - 数据类型 变量名java学习06---方法_第4张图片

  • 参数范例:

    int a
    
    public static void 方法名 (参数1) {
        方法体;
    }
    ​
    public static void 方法名 (参数1, 参数2, 参数3...) {
        方法体;
    }
     
  • 范例:

    public static void isEvenNumber(int number){
        ...
    }
    public static void getMax(int num1, int num2){
        ...
    }

注意:

方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错
​
方法定义时,多个参数之间使用逗号( ,)分隔

方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错
  • 调用格式:

    方法名(参数);
    ​
    方法名(参数1,参数2);
     

package com.wy.methoddemo;

public class MethodDemo2 {
    public static void main(String[] args) {
        getsum(10,20);
    }
    public static void getsum(int num1,int num2){
        int result=num1+num2;
        System.out.println(result);
    }
}

java学习06---方法_第5张图片

练习

java学习06---方法_第6张图片

需求:定义一个方法,求长方形的周长,将结果在方法中进行打印。

public class MethodDemo3 {
    public static void main(String[] args) {
        getlength(5.2,6.7);

    }
    public static void getlength(double len,double width){
        double reslt=(len+width)*2;
        System.out.println(reslt);
    }
}

 java学习06---方法_第7张图片

3.形参和实参

1.形参:方法定义中的参数

等同于变量定义格式,例如:int number

2.实参:方法调用中的参数

等同于使用变量或常量,例如: 10 numberjava学习06---方法_第8张图片

4. 带返回值方法的定义和调用

  • 定义格式

    public static 数据类型 方法名 ( 参数 ) { 
        return 数据 ;
    }
  • 范例

    public static boolean isEvenNumber( int number ) {           
        return true ;
    }
    public static int getMax( int a, int b ) {
        return  100 ;
    }

注意:

方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错

  • 调用格式

    方法名 ( 参数 ) ;
    数据类型 变量名 = 方法名 ( 参数 ) ;
  • 范例

    isEvenNumber ( 5 ) ;
    boolean  flag =  isEvenNumber ( 5 ); 

java学习06---方法_第9张图片

注意:

方法的返回值通常会使用变量接收,否则该返回值将无意义

练习

需求:

定义一个方法,求一家商场每个季度的营业额。根据方法结果再计算出全年营业额。

package com.wy.methoddemo;

public class MethodDemo4 {
    public static void main(String[] args) {
//        //直接调用
//        getSum(10,20,30);
//        //赋值调用
//        int sum=getSum(10,20,30);
//        System.out.println(sum);
//        //输出调用
//        System.out.println(getSum(10,20,30));

        //第一季度
        int sum1=getSum(10,20,30);
        //2
        int sum2=getSum(10,20,30);
        //3
        int sum3=getSum(10,20,30);
        //4
        int sum4=getSum(10,20,30);
        
        int sum=sum1+sum2+sum3+sum4;
        System.out.println(sum);
    }
    public static int getSum(int num1,int num2,int num3){
        int result=num1+num2+num3;
        return result;
    }
}

 java学习06---方法_第10张图片

需求:

定义方法,比较两个长方形的面积。

java学习06---方法_第11张图片

package com.wy.methoddemo;

public class MethodDemo5 {
    public static void main(String[] args) {
        double area1=getArea(5.3,1.7);
        double area2=getArea(2.4,2.7);

        if(area1>area2){
            System.out.println("第一个大");
        }else{
            System.out.println("第二个大");
        }
        }
    public static double getArea(double len,double width){
        double area=len*width;
        return area;
    }
}

java学习06---方法_第12张图片

5.注意

java学习06---方法_第13张图片

三 方法的重载

  • 方法重载概念

    方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

    • 多个方法在同一个类中

    • 多个方法具有相同的方法名

    • 多个方法的参数不相同,类型不同或者数量不同

java学习06---方法_第14张图片 

练习

  • 需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)

package com.wy.methoddemo;

public class MethodDemo6 {
    public static void main(String[] args) {
        compare((byte) 10,(byte) 20);
        compare(10,20);
    }
    public static void compare(byte b1,byte b2){
        System.out.println(b1==b2);
        System.out.println("byte");
    }
    public static void compare(short s1,short s2){
        System.out.println(s1==s2);
        System.out.println("short");

    }
    public static void compare(int i1,int i2){
        System.out.println(i1==i2);
        System.out.println("int");
    }
    public static void compare(long n1,long n2){
        System.out.println(n1==n2);
        System.out.println("long");
    }
}

 java学习06---方法_第15张图片

四 练习

1.数组遍历

  • 需求:设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]

package com.wy.methoddemo.test;

public class Test1 {
    public static void main(String[] args) {
        int[] arr={11,22,33,44,55};
        printArr(arr);
    }
    public static void printArr(int[] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if(i==arr.length-1){
                System.out.print(arr[i]);
            }else{
                System.out.print(arr[i]+", ");
            }
        }
        System.out.println("]");
    }
}

 

2.

需求:设计一个方法用于获取数组中元素的最大值

package com.wy.methoddemo.test;

public class Test2 {
    public static void main(String[] args) {
        int[] arr={1,5,7,3,8,10};
        int max = getMax(arr);
        System.out.println(max);
    }
    public  static int getMax(int[] arr){
        int max=arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(arr[i]>max){
                max=arr[i];

            }
        }
        return max;
    }
}

 

3.

需求:定义一个方法判断数组中的某一个数是否存在,将结果返回给调用处 

 

package com.wy.methoddemo.test;

public class Test3 {
    public static void main(String[] args) {
        int[] arr={1,5,3,6,99,36};
        boolean flag=contains(arr,99);

        System.out.println(flag);
    }
    public static boolean contains(int[] arr,int number){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]==number){
                return true;
            }
        }
        return false;
    }
}

4.

需求:定义一个方法copyOfRange(int[] arr,int from, int to)

功能:将数组arr中从索引from(包含from)开始。到索引to结束(不包含to)的元素复制到新数组中。将新数组返回

java学习06---方法_第16张图片 

package com.wy.methoddemo.test;

public class Test4 {
    public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6,7,8,9};
        int[] copyArr = copyOfRange(arr, 3, 7);
        for (int i = 0; i < copyArr.length; i++) {//打印
            System.out.print(copyArr[i]);

        }
    }
    public  static  int[] copyOfRange(int[] arr,int from, int to){//动态定义数组:不知道元素
        int[] newArr=new int[to-from];//拷贝
        int index=0; //伪造索引
        for (int i = from; i < to; i++) {
            newArr[index]=arr[i];
            index++;
        }
        return newArr;
    }
}

 

五 方法的内存

java学习06---方法_第17张图片

java学习06---方法_第18张图片

java学习06---方法_第19张图片 局部变量

java学习06---方法_第20张图片 java学习06---方法_第21张图片

 数组 new---》堆

java学习06---方法_第22张图片

总结

java学习06---方法_第23张图片

你可能感兴趣的:(学习)