编辑这个页面须要登录或更高权限!

Java 方法

在本教程中,您将借助示例学习Java方法,如何定义方法以及如何在Java程序中使用方法。

什么是方法?

在数学中,我们可能已经研究过函数。例如,f(x) = x2x 是一个返回平方值的函数。

If x = 2, then f(2) = 4
If x = 3, f(3) = 9
and so on.

同样,在计算机编程中,函数是执行特定任务的代码块。

在面向对象的编程中,该方法是用于函数的术语。方法绑定到类,并且它们定义类的行为。

在学习方法之前,请确保了解Java类和对象

Java方法的类型

根据用户定义的方法还是标准库中可用的方法,Java中有两种方法:

  • 标准库方法

  • 用户定义的方法

标准库方法

 标准库方法是Java中的内置方法,可以随时使用。这些标准库与Java类库(JCL)一起出现在JVM和JRE的Java归档文件(*.jar)中。

例如,

  • print() - 是java.io.PrintSteam的一个方法。print("…")方法用引号打印字符串。

  • sqrt() -  是数学课的一种方法。它返回一个数字的平方根。

这是一个工作示例:

public class Main {
    public static void main(String[] args) {
    
        //使用sqrt()方法
        System.out.print("4的平方根是: " + Math.sqrt(4));
    }
}

输出

4的平方根是: 2.0

用户定义的方法

我们还可以创建自己选择的方法来执行某些任务。这种方法称为用户定义方法。

如何创建用户定义的方法?

这是我们如何用Java创建方法的方法:

public static void myMethod() {
    System.out.println("我的函数");
}

在这里,我们创建了一个名为myMethod()的方法。我们可以看到,我们在方法名之前使用了public、static和void。

  • public - 访问修饰符。这意味着可以从任何地方访问该方法。要了解更多信息,请访问Java访问修饰符

  • static - 这意味着可以在没有任何对象的情况下访问该方法。要了解更多信息,请访问Java静态关键字

  • void - 这意味着该方法不返回任何值。我们将在本教程的后面部分进一步了解此内容。

这是我们如何创建方法的简单示例。但是,Java中方法定义的完整语法为:

modifier static returnType nameOfMethod (parameters) {
    // method body
}

这里,

  • modifier - 它定义访问方法是公共方法,私有方法等。

  • static - 如果使用static关键字,则无需创建对象即可对其进行访问。
    例如,sqrt()标准Math类的方法是静态的。因此,我们可以直接调用Math.sqrt()而无需创建Math类的实例。

  • returnType - 它指定方法返回的值的类型。例如,如果方法具有int返回类型,则它返回整数值。
    一种方法,可以返回原始数据类型(int,float,double等),原生对象(String,Map,List等),或任何其他的内置和用户定义的对象。
    如果该方法未返回值,则其返回类型为void。

  • nameOfMethod - 它是一个标识符,用于引用程序中的特定方法。
    我们可以给方法起任何名字。但是,以它执行的任务命名是更常规的做法。例如calculateArea(),display()等。

  • parameters (arguments) - 这些是传递给方法的值。我们可以将任意数量的参数传递给方法。

  • method body - 它包括用于执行某些任务的编程语句。方法主体包含在花括号内{ }。

    如何调用Java方法?

    现在我们知道了如何定义方法,我们需要学习使用它们。为此,我们必须调用该方法。这是如何做

    myMethod();

    该语句调用myMethod()先前声明的方法。

    Java中的方法调用工作
    Java中的方法调用工作流程图
    1.  在执行程序代码时,它在代码中遇到myFunction()。

    2.  然后执行分支到myFunction()方法并在方法体内部执行代码。

    3.  在方法体执行之后,程序返回到原始状态,并在方法调用后执行下一个语句。

    示例:Java方法

    让我们看看如何在Java程序中使用方法。

    class Main {
    
        public static void main(String[] args) {
            System.out.println("即将遇到一种方法。");
    
            //调用方法
            myMethod();
    
            System.out.println("方法已成功执行!");
        }
    
        // method definition
        private static void myMethod(){
            System.out.println("从myMethod()内部打印!");
        }
    }

    输出

    即将遇到一种方法。
    从myMethod()内部打印!
    方法已成功执行!

    在上述程序中,我们有一个名为myMethod()的方法。该方法不接受任何参数。同样,该方法的返回类型为void(意味着不返回任何值)。

    在这里,方法是static。因此,我们在未创建类的对象的情况下调用了该方法。

    再来看一个实例

    class Main {
    
        public static void main(String[] args) {
    
            //创建Output类的对象
            Output obj = new Output();
            System.out.println("即将遇到一个方法。");
    
            //调用Output类的myMethod()
            obj.myMethod();
    
            System.out.println("方法已成功执行!");
        }
    }
    
    class Output {
      
        //public:这个方法可以从类外部调用
        public void myMethod() {
            System.out.println("从myMethod()内部打印。");
        }
    }

    输出

    即将遇到一个方法。
    从myMethod()内部打印。
    方法已成功执行!

    在上面的示例中,我们创建了一个名为myMethod()的方法。该方法位于名为Output的类中。

    由于方法不是static,因此使用obj类的对象调用该方法。

    obj.myMethod();

    方法参数和返回值

    如前所述,Java方法可以具有零个或多个参数。并且,它也可能返回一些值。

    示例:方法返回值

    让我们以有返回值的方法为例。

    class SquareMain {
        public static void main(String[] args) {
            int result;
    
            //调用方法并存储返回值
            result = square(); 
            System.out.println("10的平方值是: " + result);
        }
    
        public static int square() {
            //return 语句
            return 10 * 10;
        }
    }

    输出

    10的平方值是: 100

    在以上程序中,我们创建了一个名为square()的方法。此方法不接受任何参数,并返回值为10 *10。

    在这里,我们提到的方法的返回类型为int。因此,该方法应始终返回整数值。

    返回值的方法的表示形式
    返回值的方法的表示形式

    如我们所见,此方法的范围是有限的,因为它总是返回相同的值。现在,让我们修改上面的代码片段,以使它始终返回传递给该方法的任何整数的平方值,而不是始终返回10的平方值。

    示例:方法接受参数并返回值

    public class Main {
       
        public static void main(String[] args) {
            int result, n;
            
            n = 3;
            result = square(n);
            System.out.println("3的平方是: " + result);
            
            n = 4;
            result = square(n); 
            System.out.println("4的平方是: " + result);
        }
    
        // 方法
        static int square(int i) {
            return i * i;
        }
    }

    输出

    3的平方是: 9
    4的平方是: 16

    在此,square()方法接受一个参数i并返回i的平方。返回的值存储在变量result中。

    显示将参数传递给方法并返回值的示例
    在Java中传递参数并从方法中返回值

    如果我们传递任何其他数据类型,而不是int类型的值,则编译器将引发错误。这是因为Java是一种强类型语言。

     在方法调用期间传递给getSquare()方法的参数n称为实际参数。

    result = getSquare(n);

     方法定义接受的参数称为形式参数。形式参数的类型必须显式类型化。

    public static int square(int i) {...}

    我们还可以使用逗号将多个参数传递给Java方法。例如,

    public class Main {
    
        //方法定义
        public static int getIntegerSum (int i, int j) {
            return i + j;
        }
    
        // 方法定义
        public static int multiplyInteger (int x, int y) {
            return x * y;
        }
    
        public static void main(String[] args) {
    
            //调用方法
            System.out.println("10 + 20 = " + getIntegerSum(10, 20));
            System.out.println("20 x 40 = " + multiplyInteger(20, 40));
        }
    }

    输出

    10 + 20 = 30
    20 x 40 = 800

    注意: 实际参数和形式参数的数据类型应匹配,即第一个实际参数的数据类型应与第一个形式参数的数据类型相匹配。同样,第二个实际参数的类型必须与第二个形式参数的类型相匹配,以此类推。

    使用方法的优点是什么?

    1.主要优点是代码可重用性。我们可以编写一次方法,并多次使用它。我们不必每次都重写整个代码。可以将其视为“一次编写,多次重用”。例如,

    public class Main {
    
        //方法定义
        private static int getSquare(int x){
            return x * x;
        }
    
        public static void main(String[] args) {
            for (int i = 1; i <= 5; i++) {
    
                //方法调用
                int result = getSquare(i);
                System.out.println("" + i + " 的平方是: " + result);
            }
        }
    }

    输出

    1 的平方是: 1
    2 的平方是: 4
    3 的平方是: 9
    4 的平方是: 16
    5 的平方是: 25

     在上面的程序中,我们创建了一个名为getSquare()的方法来计算数字的平方。这里,用同样的方法计算小于6的数的平方。

     因此,我们反复使用相同的方法

    方法2使代码更易读更易于调试。例如,getSquare()方法可读性很强,因此我们可以知道这个方法将计算一个数字的平方。

    Java 菜鸟教程
    Java 流程控制
    Java 数组
    Java 面向对象(I)
    Java 面向对象(II)
    Java 面向对象(III)
    Java 异常处理
    Java 列表(List)
    Java Queue(队列)
    Java Map集合
    Java Set集合
    Java 输入输出(I/O)
    Java Reader/Writer
    Java 其他主题