一、引言

在Java编程语言中,方法是组织代码的基本单位。通过使用方法,我们可以将代码逻辑封装在一起,使其更易于理解和维护。本文将详细介绍Java中方法的定义、参数和返回值。

二、方法的定义

一般情况下,定义一个方法包含以下语法:

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

法包含一个方法头和一个方法体。下面是一个方法的所有部分:

修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void

方法名:是方法的实际名称。方法名和参数表共同构成方法签名。

参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

方法体:方法体包含具体的语句,定义该方法的功能。

java 返回值不显示科学计数法 java中返回值的原理_java

如:

public static int age(int birthday){...}

参数可以有多个:

static float interest(float principal, int year){...}

注意: 在一些其它语言中方法指过程和函数。一个返回非void类型返回值的方法称为函数;一个返回void类型返回值的方法叫做过程。

实例:

下面的方法包含 2 个参数 num1 和 num2,它返回这两个参数的最大值。

/** 返回两个整型变量数据的较大值 */
public static int max(int num1, int num2) {
   int result;
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

三、方法的调用

由定义内部的其他方法成员调用该方法。

语法格式为:方法名([参数列表])

1.无参方法

无参方法是指方法定义时没有参数列表的方法。例如:

public void myMethod() {  
    // 方法体  
}

这个方法没有参数,所以称为无参方法。

2.有参方法

有参方法是指方法定义时包含参数列表的方法。例如:

public int add(int a, int b) {  
    return a + b;  
}

这个方法有两个整数类型的参数ab,所以称为有参方法。

无参方法和有参方法在Java中都可以用来实现特定的功能或操作。有参方法可以接收参数,根据参数的值执行不同的操作,而无参方法则没有参数,通常用于执行一些固定的操作。

需要注意的是,方法的参数列表中的参数类型和数量必须与调用方法时传递的参数类型和数量匹配,否则会导致编译错误或运行时异常。

四、参数

在Java编程语言中,参数是传递给方法的值或对象,用于在方法内部进行计算或操作。参数可以是任何数据类型,包括基本数据类型、对象类型等。

java 返回值不显示科学计数法 java中返回值的原理_java_02

参数的传递方式分为按值传递和按引用传递。按值传递将参数的值复制给方法内部,修改参数不会影响原始值。按引用传递将参数的引用传递给方法内部,修改参数会影响原始值。

以下是一个使用按值传递的参数示例:

public void increment(int num) {  
    num++; // 修改num的值不会影响原始值  
}

在Java中,方法的参数列表由多个参数组成,每个参数都有一个类型和一个名称。方法的参数列表必须与调用方法时传递的参数类型和数量匹配。

以下是一个使用参数的Java方法示例:

public int add(int a, int b) {  
    int sum = a + b; // 计算两个参数的和  
    return sum; // 返回结果  
}

在这个示例中,add方法接受两个整数类型的参数ab,计算它们的和并返回结果。

在调用这个方法时,可以传递两个整数类型的参数,例如:

int result = add(3, 4); // 调用add方法并传递参数3和4,返回结果为7

五、void 关键字

void 是一个关键字,用于声明一个方法不返回任何值。当一个方法的返回类型为 void 时,意味着该方法不返回任何结果给调用者。

下面的例子声明了一个名为 printGrade 的方法,并且调用它来打印给定的分数。

public class TestVoidMethod {
  public static void main(String[] args) {
    printGrade(78.5);
  }
 
  public static void printGrade(double score) {
    if (score >= 90.0) {
       System.out.println('A');
    }
    else if (score >= 80.0) {
       System.out.println('B');
    }
    else if (score >= 70.0) {
       System.out.println('C');
    }
    else if (score >= 60.0) {
       System.out.println('D');
    }
    else {
       System.out.println('F');
    }
  }
}

以上实例编译运行结果如下:

C

这里printGrade方法是一个void类型方法,它不返回值。

需要注意的是,当方法的返回类型为 void 时,在方法体内不需要使用 return 语句来返回结果。然而,可以在方法体内使用 return 语句来提前退出方法的执行。在这种情况下,return 语句后面不需要跟任何值。例如:

public static void printNumber(int number) {  
    if (number < 0) {  
        System.out.println("Number is negative.");  
        return; // 提前退出方法  
    }  
    System.out.println("Number is positive.");  
}

在上面的示例中,如果传递的 number 参数小于0,方法会输出 "Number is negative." 并使用 return 语句提前退出方法的执行。

六、方法的重载

Java中的方法重载(Method Overloading)是指在同一个类中,可以定义多个名称相同但参数列表不同的方法。这些方法具有不同的参数类型、参数个数或参数顺序,从而实现了不同的功能。

方法重载是Java中的一种多态性表现,它允许程序员在不改变方法名的情况下,通过传递不同的参数来调用不同的方法实现。

下面是一个简单的Java方法重载的示例:

public class OverloadingExample {  
    // 方法1:没有参数  
    public void sayHello() {  
        System.out.println("Hello!");  
    }  
      
    // 方法2:有一个字符串参数  
    public void sayHello(String name) {  
        System.out.println("Hello, " + name + "!");  
    }  
      
    // 方法3:有两个整数参数  
    public void sayHello(int times, String name) {  
        for (int i = 0; i < times; i++) {  
            System.out.println("Hello, " + name + "!");  
        }  
    }  
      
    public static void main(String[] args) {  
        OverloadingExample example = new OverloadingExample();  
          
        // 调用方法1  
        example.sayHello();  
          
        // 调用方法2  
        example.sayHello("Alice");  
          
        // 调用方法3  
        example.sayHello(3, "Bob");  
    }  
}

在上面的示例中,我们定义了一个名为sayHello的方法,并对其进行了三次重载。每个重载的方法具有不同的参数列表。在main方法中,我们创建了OverloadingExample类的对象,并分别调用了这三个重载的方法。

需要注意的是,方法重载是根据方法的参数列表进行区分的,而不是根据方法的返回类型。因此,方法的返回类型不参与方法重载的区分。