关于面试:网友面试官问我Java方法详解笑死了根本不知道

4次阅读

共计 3390 个字符,预计需要花费 9 分钟才能阅读完成。

Java 办法详解

什么是办法?

Java 办法是语句的汇合,它们在一起执行一个性能。

办法是解决一类问题的步骤的有序组合
办法蕴含于类或对象中
办法在程序中被创立,在其余中央被援用
示例:

package com.wmwx.method;

public class Demo01 {
    //main 办法
    public static void main(String[] args) {int sum = add(1, 2);    // 调用 add 办法
        System.out.println(sum);
    }

    //add 办法 实现加法性能
    public static int add(int a, int b){return a+b;}
}

办法的长处

Java 中的办法有以下几个长处:

使程序变得更简短而清晰。
有利于程序保护。
能够进步程序开发的效率。
进步了代码的重用性。

办法的设计准则

设计办法的准则:办法的本意是功能块,就是实现某个性能的语句块的汇合。咱们设计办法的时候,最好放弃办法的原子性,就是一个办法只实现 1 个性能,这样利于咱们前期的扩大。

办法的定义

其根本语法为:

修饰符 返回值类型 办法名(参数类型 参数名){
    ...
    办法体
    ...
    return 返回值;
}

Java 的办法蕴含一个办法头和一个办法体,相似于其余语言中的函数,是一段用来实现特定性能的代码片段。以下是一个办法的所有组成部分:

修饰符:可选,通知编译器如何调用该办法,定义了该办法的拜访类型。
返回值类型:办法可能会有返回值,那么该返回值的数据类型就是该办法的返回值类型。有些办法执行所需的操作,但没有返回值。在这种状况下,办法的返回值类型应用关键字 void。
办法名:是办法的理论名称。办法名和参数表独特形成办法签名。
参数类型:参数像是一个占位符,又被称为形参。当办法被调用时,传递值给参数,这个值被称为实参。参数列表是指办法的参数类型、程序和参数的个数。参数是可选的,一个办法能够不蕴含任何参数。
办法体:办法体蕴含具体的语句,定义该办法的性能。
例图:

办法的调用

Java 反对两种调用办法的形式,依据办法是否返回值来抉择。

当办法返回一个值的时候,办法调用通常被当做一个值。
如果办法返回值是 void,办法调用肯定是一条语句。
示例:

package com.wmwx.method;

public class Demo02 {public static void main(String[] args) {int maxNum = max(10, 20);       // 调用有返回值的 max 办法,作为赋给变量 maxNum 的值
        System.out.println(maxNum);
    }

    // 定义有返回值的 max 办法
    public static int max(int num1, int num2){
        int result = 0;
        if (num1==num2){System.out.println("两数相等!");
            return num1;
        }
        if (num1>num2){result = num1;}else{result = num2;}
        return result;
    }
}

办法的重载

重载:如果一个类的多个办法领有雷同的办法名,然而有不同的参数列表,那么 Java 编译器会依据办法签名判断哪个办法应该被调用。

办法重载的规定:

办法名称必须雷同。
参数列表必须不同(如:个数不同、参数不同、参数排列程序不同等)。
办法的返回类型能够雷同,也能够不同
仅仅返回类型不同不足以成为办法的重载
示例:

package com.wmwx.method;

public class Demo03 {public static void main(String[] args) {int maxNum1 = max(10, 20);           // 调用有整数类型参数的 max 办法
        System.out.println(maxNum1);
        double maxNum2 = max(10.0, 20.0);    // 调用有浮点类型参数的 max 办法
        System.out.println(maxNum2);
    }

    // 定义有整数类型参数的 max 办法
    public static int max(int num1, int num2){
        int result = 0;
        if (num1==num2){System.out.println("两数相等!");
            return num1;
        }
        if (num1>num2){result = num1;}else{result = num2;}
        return result;
    }

    // 重载:// 定义有浮点类型参数的 max 办法
    public static double max(double num1, double num2){
        double result = 0;
        if (num1==num2){System.out.println("两数相等!");
            return num1;
        }
        if (num1>num2){result = num1;}else{result = num2;}
        return result;
    }
}

命令行传参

有的时候,心愿一个程序在运行时再给它传递音讯,这时就须要传递命令行参数给 main 办法进行实现。

示例:

package com.wmwx.method;

public class Demo04 {public static void main(String[] args) {for (int i = 0; i < args.length; i++) {System.out.println("args["+i+"]:"+args[i]);
        }
    }
}

可变参数 / 不定项参数

从 Java5 开始,Java 反对传递同类型的可变参数(又叫不定项参数)给一个办法。

办法的可变参数的申明如下所示:

typeName... parameterName
// 即:在办法申明中,在指定参数类型后加一个省略号(...)

留神:

一个办法中只能指定一个可变参数。
可变参数必须是办法的最初一个参数。
任何一般的参数必须在可变参数之前申明。
示例:

package com.wmwx.method;

public class Demo05 {public static void main(String[] args) {
        // 调用可变参数的办法
        printMax();
        printMax(12, 13.6, 22.5, 18.7, 16.0);
        printMax(new double[]{12, 13.6, 22.5, 18.7, 16.0});
    }

    public static void printMax(double...numbers){if (numbers.length == 0){System.out.println("没有传入数据!");
            return;
        }

        double result = numbers[0];
        // 找出最大值
        for (int i=1;i<numbers.length;i++){if (numbers[i]>result){result = numbers[i];
            }
        }
        System.out.println("最大的数是"+result+"!");
    }
}

递归

定义:程序调用本身的编程形式称为递归。

利用递归能够用简略的程序来解决一些简单的问题。它通常把一个大型简单的问题层层转化为一个与原问题类似的规模较小的问题来求解,递归策略只需大量的程序就可形容出解题过程所须要的多次重复计算,大大地缩小了程序的代码量。递归的能力在于用无限的语句来定义对象的有限汇合。

递归结构包含两局部:

递归头:什么时候不调用本身办法。如果没有递归头,将造成死循环。
递归体:什么时候调用本身办法。
示例:

package com.wmwx.method;

public class Demo06 {public static void main(String[] args) {System.out.println(factorial(5));
    }

    // 求阶乘
    public static int factorial(int n){if (n==1){return 1;}else{return n*factorial(n-1);    // 递归调用
        }
    }
}

最初

欢送关注公众号:前程有光,支付一线大厂 Java 面试题总结 + 各知识点学习思维导 + 一份 300 页 pdf 文档的 Java 外围知识点总结!这些材料的内容都是面试时面试官必问的知识点,篇章包含了很多知识点,其中包含了有基础知识、Java 汇合、JVM、多线程并发、spring 原理、微服务、Netty 与 RPC、Kafka、日记、设计模式、Java 算法、数据库、Zookeeper、分布式缓存、数据结构等等。

正文完
 0