繁体   English   中英

调用方法时不必使用相同的参数名称吗?

[英]Don't you have to use the same parameter names when calling a method?

在下面的代码中,我编写了两种方法:

  • 一个将变量test定义为String的变量
  • 一个会根据键入的内容返回两个不同的结果

我在userInputhere具有名为test的变量,而Hello的参数名为message userInputhere我使用test ,而不是message -为什么这项工作?

调用Hello方法时该参数无关紧要吗?

我知道,当进入一个返回结果的方法时,必须对其进行定义,并且参数还要进一步定义该方法将要进行的工作,因此,我假设从另一个方法中调用该方法时,您必须使用相同的参数,但事实并非如此。

 import java.util.Scanner;
 public class methodsandparameters {
        static Scanner input = new Scanner(System.in);
        public static void main(String[] args){
            userInputhere();
        }

        public static void userInputhere(){
            String test = input.nextLine();
            System.out.println(Hello(test));
        }

        public static String Hello(String message){
            if (message.equalsIgnoreCase("Hi")) {
                return "Hello";
            } else {
                return "Goodbye";       
            }
        }
}

参数名称(如您所称)不匹配的原因仅是一个参数。 调用函数时,会传递多个参数,这些参数必须与函数采用的参数的类型和数量相匹配。 因此,如果您具有函数add(int x, int y) ,则只要两个参数都为int ,如何调用它都无所谓,调用该函数时不必将它们分别命名为x和y。

因此,函数/方法接受参数,调用函数传递参数。

调用Hello方法时,其参数( message )包含在Hello方法本身内部。 您可以将任何参数传递给Hello ,只要它是字符串即可(因为message的类型为String)。 只要传递给Hello ,只要它解析为String即可。 因此,在您的示例中,变量test可以正常工作,因为它是String。

该程序实际上不是在调用“测试”或在调用“消息”,而只是在调用Hello方法,该方法可以将任何String用作参数。

变量的名称在其范围内 (即您可以在何处引用) [1]起作用

对于方法参数,仅在该方法的主体中。

在该方法之外,在这种情况下,唯一重要的是类型String 只要传递给它相同类型的东西,或者可以自动转换为给定类型的东西,它就很高兴-无论您叫什么参数(在这种情况下, message )都将得到传递给它的值您的函数在参数中的那个位置,并且每次在方法中使用该参数名称时,都将使用为其赋予的值(至少直到您在方法中重新指定它,方法是说message = ... )。

您还可以执行Hello(input.nextLine())Hello("Hi") -无需使用临时变量。


[1]:在您开始谈论反射之前 (但无需担心)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM