【java0基础】关于方法

【java0基础】关于方法

什么是方法?

  • 方法 是将独立功能的 代码块  组织成一个整体,使其具有特殊的功能代码集
  • 方法必须先创建才能使用,该过程称为 方法定义
  • 方法创建后不能直接运行,需要手动使用后才执行,该过程称为 方法调用

方法定义

public static void 方法名(){
//方法体
}

方法调用

public class Methond{
    public static void main(String[] args) {
        //调用方法
        isEvenNumber();
    }
    public static void isEvenNumber(){
        //定义变量
        int m =10;
        m=9;
        if (m%2==0){
            System.out.println(true);
        }else{
            System.out.println(false);
        }
    }
}
  • 方法需要先定义后调用
  • 方法调用过程,从上往下执行

带参方法定义

public static void 方法名(参数){---}//参数可以一个 也可以多个

public static void 方法名(数据类型 变量名){---}
public static void 方法名(数据类型 变量名1,数据类型,变量名2){----}
  • 方法定义时,参数中 数据类型 与 变量名 都不能缺少,缺少任意一个将报错
  • 方法的定义时,多个参数之间使用(,)分隔

调用

  • 调用方法,和无参数数的类似 格式: 方法名(参数)
  • 调用时, 参数数量与类型 必须与方法定义中的设置匹配,否则报错
public class Method {
    public static void main(String[] args) {
        //常量调用
        isEvenNumber(9);
        
        //变量调用
        int number =10;
        isEvenNumber(number);
    }
    public static void isEvenNumber(int number){
        if (number%2==0){
            System.out.println(true);
        }else{
            System.out.println(false);
        }
    }
}

行参和实参

参数是定义方法时规定该方法运行所需要使用的变量,调用方法时也需要使用一个变量.

  • 行参 :方法定义中的参数 int number
  • 实参 :方法调用中的参数 number 实际传入的常量值(变量名)
public class MethodTest {
    public static void main(String[] args) {
        getMax(5, 10);

        int a = 10;
        int b = 20;
        getMax(a,b);
    }
    public static void getMax(int a, int b) {
        if (a > b) {
            System.out.println(a);
        } else {
            System.out.println(b);
        }
    }
}

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

  • 定义格式  : public static 数据类型 方法名(参数){

    return 数据 ;
    }

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

  • 带返回值方法调用

数据类型 变量名 = 方法名(参数)
示例:boolean flag = isEvenNumber(5)

  • 方法的返回值通常使用变量接受,否则该返回值将无意义
public class MethodTest1 {
    public static void main(String[] args) {
       boolean a = getNumber( 10);
        System.out.println(a);
    }
    //需求,定义一个方法,该方法接受一个参数,判断该数据是否是偶数,并返回真假值
    public static boolean getNumber(int number){
        if(number%2==0){
          return true;
        }else{
            return  false;
        }
    }
}

方法的注意事项

  • 方法中不能嵌套定义,也就是不能在方法里面再加方法
  • void 无返回值,可以省略return,也可以单独的书写return,后面不加数据

方法通用格式

public static 返回值类型 方法名(参数){
    方法体
    return 数据;
}
  • 定义方法时,明确返回值类型,数据类型有返回值,没有返回值类型用void
  • void类型方法,直接调用即可,非void类型方法,推荐用变量接受调用

方法重载

概述

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

  • 多个方法在一个类中
  • 多个方法具有相同的方法名
  • 多个方法的参数不同,类型不同或者数量不同

重载特点

  • 重载仅对应方法的定义, 与方法的调用无关 (调用时,Java虚拟机会通过参数的不同,来区分同名的方法),调用方式参照标准格式
  • 重载仅针对同一个类中方法的名称和参数进行识别,与返回值无关,也就是不能通过返回值来判断两个方法是否构成重载

public class MethodTest1 {
    public static void main(String[] args) {
        System.out.println(sum(10,20));
        System.out.println(sum(10.0,20.0));
        System.out.println(sum(1,2,3));

    }
    //需求,求两个int类型数据和方法
    public static int sum(int a,int b){
        return a+b;
    }
    public static double sum(double a,double b){
        return a+b;
    }
    public static int sum(int a,int b,int c){
        return a+b+c;
    }
}

方法的参数传递

基本数据类型

  • 对于基本数据类型参数,形式参数的改变不影响实际参数的值
public class MethodTest1 {
    public static void main(String[] args) {
        int a = 100;
        System.out.println("调用前:" + a);
        sum(a);
        System.out.println("调用后:" + a);
    }

    //需求,求两个int类型数据和方法
    public static void  sum(int a) {
        a = 200;
    }
}
//输出:100,100

引用数据类型

  • 对于引用类型的参数,形式参数的改变,影响实际参数的值

方法参数传递

数组的遍历

//需求:设计一个方法用于数组遍历,求遍历结果在一行上。例如【11,22,33,44】
public class MethodTest1 {
    public static void main(String[] args) {
        //定义一个数字,用静态初始化完成数组初始化
        int [] arr ={11,22,33,44};
       printArray(arr);
    }
    /**
    public static void printArray(int[] arr){
        for(int x =0;x<arr.length;x++){
            System.out.print(arr[x]);
        }
    }
     */
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if(x==arr.length-1){
                System.out.print(arr[x]);
            }else {
                System.out.print(arr[x] + ", ");
            }
        }
        System.out.print("]");
    }

数组最大值

//需求:设计一个方法用于获取数组中元素的最大值,调用方法并输出结果

/**
 * 思路:
 * 1。定义一个数组,用静态初始化完成数组元素初始化
 * 2。定义一个方法,用来读取数组中最大值
 * 3。调用获取最大值方法
 * 4。输出在结果
 */
public class MethodTest1 {
    public static void main(String[] args) {
        //定义一个数组,用静态初始化完成数组元素初始化
        int[] arr = {11, 22, 33, 44};
        int m = getMax(arr);
        System.out.println(m);
    }
        //定义方法。两个明确 返回值类型 ,int
        //参数,int[] arr
        public static int getMax(int[] arr){
            int max =arr[0];
            for (int x=0;x<arr.length;x++){
                if (arr[x]>max){
                    max = arr[x];
                }
            }
            return max;
        }
}

练习

/**
 * 元素满足个位和十位都不是7,并且只是偶数
 * */
public class Test06 {
    public static void main(String[] args) {
        //定义一个数组,静态初始化完成数组元素初始化
        int[] arr ={68,27,95,88,171,996,51,210};

        //定义一个求和变量,初始值为0
        int sum = 0;

        //遍历数组,获取数组中每个元素
        for(int x=0;x<arr.length;x++){
            if (arr[x]%10!=7 &&arr[x]/10%10!=7&&arr[x]%2==0) {
                sum+=arr[x];
            }

        }
        System.out.println("sum:"+sum);
    }
}
//定义一个方法,用于比较两个数组内容是否相同
public class Test07 {
    public static void main(String[] args) {
        //定义两个数组,分别使用静态初始化完成数组元素初始化
        int[] arr1 = {11, 22, 33, 44, 55};
        int[] arr2 = {11, 22, 3, 44, 55};

        //方法调用
        boolean bl = compare(arr1,arr2);
        System.out.println(bl);
    }

    /**
     * 两个明确:
     * 返回值类型:boolean
     * 参数:int[] arr ,int[] arr2
    * */
    public static  boolean compare(int[] arr1, int[] arr2) {
        if (arr1.length != arr2.length) {
            return false;
        }
        for (int x = 0; x < arr1.length; x++) {
            if (arr1[x] != arr2[x]) {
                return false;
            }
        }

        //最后循环遍历结束,返回true;
        return true;
    }
}

import java.util.Scanner;

/*
 * 需求有一个数组arr={19,28,37,46,50};键盘录入一个数据,查找数据在数组中的索引,并在控制台上输出找到的索引值
 * 思路:1。定义数组,用静态初始化完成数组元素初始化
 *      2。键盘录入要查询数据,用一个变量接受
 *      3.定义一个索引变了,初始值为-1
 *      4.遍历数组,获取数组中每个元素
 *      5.那键盘录入数据和数组中每个元素比较,值相同,就把该值对于的索引值赋值给索引变量,结束循环
 *      6.输出索引变量
 */
public class test08 {
    public static void main(String[] args) {
        //定义数组,用静态初始化完成数组元素初始化
        int[] arr ={19,28,37,46,50};

        //键盘录入要查询数据,用一个变量接受
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入要查找的数据:");
        int number = sc.nextInt();
    /**
        //定义一个索引变了,初始值为-1
        int index =-1;

        //遍历数组,获取数组中每个元素
        for (int x=0;x<arr.length;x++){
        // 键盘录入数据和数组中每个元素比较,值相同,就把该值对于的索引值赋值给索引变量,结束循环
            if (arr[x]==number){
                index=x;
                break;
            }
        }

     */
        //调用方法:
        int index = getIndex(arr,number);
        //输出数据
        System.out.println("index:"+index);
    }
    //定义一个方法

    /**
     * 两个明确:
     *  返回值类型:int
     *  参数:int[] arr,int number;
     */
    public static  int getIndex(int[] arr,int number){
        //定义一个索引变了,初始值为-1
        int index =-1;

        //遍历数组,获取数组中每个元素
        for (int x=0;x<arr.length;x++){
            // 键盘录入数据和数组中每个元素比较,值相同,就把该值对于的索引值赋值给索引变量,结束循环
            if (arr[x]==number){
                index=x;
                break;
            }
        }
        return  index;
    }

    }

public class Test09 {
    public static void main(String[] args) {

        int[]  arr ={19,28,37,46,50};

        /**循环遍历数组,这一次初始化语句定义两个索引变量,判断条件是开始索引小于等于结束索引

        for (int start=0,end=arr.length-1;start<=end;start++,end--){
            //变量交换
            int temp =arr[start];
            arr[start]=arr[end];
            arr[end]=temp;
        }*/
        //反转的方法
        reverse(arr);
        //遍历数组
        printArray(arr);
    }
    //定义方法:返回值类型:void 参数:int[] arr
    public static void reverse(int[] arr){
           // 循环遍历数组,这一次初始化语句定义两个索引变量,判断条件是开始索引小于等于结束索引
            for (int start = 0, end = arr.length - 1; start <= end; start++, end--) {
                //变量交换
                int temp = arr[start];
                arr[start] = arr[end];
                arr[end] = temp;
            }
        }
    public static void printArray(int[] arr){
        System.out.print("[");
        for (int x=0; x<arr.length;x++) {
            if (x == arr.length - 1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x] + ",");
            }
        }
        System.out.println("]");
    }
}

悲观者正确,乐观者成功
原文地址:https://www.cnblogs.com/freebule/p/13557439.html