Java方法

时间:2020-01-09 14:20:00  来源:igfitidea点击:

Java方法是我们对Java代码中的数据(变量)进行操作的地方。换句话说,我们将Java操作(代码)分组在Java方法中。 Java方法必须位于Java类内部。

Java方法类似于其他编程语言(例如Pascal或者JavaScript)中所谓的函数或者过程。方法是一组Java语句,它们对某些数据执行某些操作,并且可能会或者可能不会返回结果。

这是一个简单的Java方法示例:

public MyClass{

    public void writeText(String text) {
        System.out.print(text);   //prints the text parameter to System.out.
    }
}

上面的示例在名为MyClass的类中定义了一种称为writeText的方法。该方法采用一个称为text的参数。该参数在方法内的Java语句中使用。该方法不返回任何值。

在以下各节中,我将解释上述方法定义中的每个元素的含义。

方法参数

方法参数可以将值传递给该方法,该方法可以对其进行操作。方法参数在方法名称后的括号内声明。在下面的示例中,方法参数以粗体标记:

public void writeText(String text1, String text2) {
    System.out.print(text1);
    System.out.print(text2);
}

上例中的方法writeText带有两个参数,分别为text1和text2. 每个参数名都写在每个参数名的前面,都是" String"类型。

我们可以使用任何原始数据类型或者内置Java类作为参数的数据类型。我们也可以使用自己的类作为参数类型。

参数与变量

方法参数类似于变量。我们可以读取其值,也可以更改其值。这是读取和更改其参数值的方法的示例:

public MyClass{

    public void writeText(String text1, String text2) {
        System.out.print(text1);    // read value of text1 parameter.
        System.out.print(text2);    // read value of text2 parameter.

        text1 = "new value 1";      // change value of text1
        text2 = "new value 2";      // change value of text2
    }
}

注意事项:尽管可以更改参数的值,但我们应谨慎操作,因为这可能导致代码混乱。如果我们认为可以解决,请继续。如果不是,请创建一个局部变量来保存该值,并保持参数值不变。

调用writeText()方法如下所示:

MyClass myClassObj = new MyClass();

myClassObj.writeText("Hello", "World");

注意,方法的参数是如何在方法名称后面的括号内编写的。执行上述Java代码后,将执行writeText()方法,并且参数将包含值" Hello"和" World"。

final参数

可以将Java方法参数声明为" final",就像变量一样。最终参数的值不能更改。也就是说,如果参数是对对象的引用,则不能更改引用,但仍可以更改对象内部的值。这是一个例子:

public void writeText(final String text1, final String text2) {
    System.out.print(text1);    // read value of text1 parameter.
    System.out.print(text2);    // read value of text2 parameter.
}

在此方法示例中,除了调用该方法时作为参数传递的参数外,不能将参数text1和text2重新分配给任何其他String。

局部变量

我们可以在方法内部声明局部变量。可以像使用其他任何变量一样使用局部变量,但是只能在方法范围内访问。这是一个例子:

public void writeText() {
    int localVariable1 = 1;
    int localVariable2 = 2;

    System.out.println( localVariable1 + localVariable2 );
}

局部变量也可以声明为" final"。如果声明局部变量" final",则其值不能更改。如果变量是对对象的引用,则不能更改对对象的引用,但是仍可以更改所引用对象内部的值。

方法返回类型

Java方法可以返回一个值。这是一个例子:

public int sum(int value1, int value2) {
    return value1 + value2;
}

此方法将传递给它的两个参数相加,然后返回结果。

首先,请注意返回类型" int",该类型在方法名称(" sum")之前以粗体标记。此返回类型表示此方法返回一个" int"。

其次,注意" return"语句。 return语句确定方法返回的值。

我们可以从Java方法返回任何原始类型或者任何对象。我们还可以返回String,如下所示:

public String concat(String string1, String string2) {
    return string1 + string2;
}

此方法将作为参数传递的两个字符串连接起来,并返回结果。

多个返回值

一个方法中可能有多个" return"语句。但是,它们不能同时执行。只能执行一个return语句。一旦执行了return语句,就不再执行该方法中的任何代码。该程序只是跳回到调用该方法的代码。

这是带有多个return语句的方法的示例:

public String concat(String string1, String string2, boolean reverseOrder){

    if(reverseOrder) {
        return string2 + string1;
    }
    return string1 + string2;
}

注意方法中的if语句。这个if语句测试布尔参数reverseOrder是true还是false。

如果" reverseOrder"参数的值为" true",则该方法返回作为参数传递的两个字符串,它们以相反的顺序连接(第一个" string2",然后" string1")。

如果" reverseOrder"参数的值为" false",则该方法将跳过" if"语句的主体。然后继续执行第二个" return"语句。这个return语句返回按正常顺序连接的两个参数(" string1",然后是" string2")。

方法访问修饰符

我们可能已经注意到在本文中所有方法声明示例之前的" public"一词。这个词是该方法的访问修饰符。访问修饰符确定允许使用什么代码调用此方法。访问修饰符在Java访问修饰符的文本中有更详细的介绍。

例外声明

如果方法内部发生错误,则该方法可能会引发异常。必须在方法声明中声明异常,如下所示(以粗体显示):

public String concat(String string1, String string2) throws MyException {

    if(string1 == null) {
        throw new MyException("string1 was null");
    }
    if(string2 == null) {
        throw new MyException("string2 was null");
    }

    return string1 + string2;
}

该方法首先检查两个参数string1或者string2是否为null。如果它们是,则引发异常。

当引发异常时,该方法也会停止执行。但是,不是返回到调用该方法的位置,而是在围绕该方法的第一个catch(){}子句中恢复执行,该子句针对该异常。

我对Java异常处理有完整的了解,因此在此不再详细介绍。

调用方法

在本文中,我一直在谈论调用方法。现在,我将向我们展示如何执行此操作。看一下这两种方法:

public void callSum() {
    int theSum = add(1, 3);
    System.out.print(theSum);
}

public int add(int value1, int value2) {
    return value1 + value2;
}

注意方法callSum()如何创建一个名为theSum的变量,并为其分配由方法add(1,3)返回的值。之后,它将打印出该值。

方法可用于将代码分解为更小,更易理解和可重用的代码段,而不是将程序编写为一种大方法。