• 【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("]");
        }
    }
    
    
    悲观者正确,乐观者成功
  • 相关阅读:
    【MM 】采购合同成批维护
    【FICO 汇率】汇率
    【S4 MM】S4中继续使用MB系统事务代码(转)
    【MM 交货成本】Unplanned Delivery Cost
    Tracer Deployment UVALive
    The Best Path HDU
    Artwork Gym
    PTA 银行排队问题之单队列多窗口加VIP服务 队列+模拟
    Counting Cliques HDU
    Do not pour out HDU
  • 原文地址:https://www.cnblogs.com/freebule/p/13557439.html
Copyright © 2020-2023  润新知