当前位置: 首页 > 知识库问答 >
问题:

调用方法时不需要使用相同的参数名吗?

龚威
2023-03-14

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

  • 将变量test定义为String
  • 的变量
  • 根据键入的内容返回两种不同结果的方法

我有一个名为test的变量在userInpuhave中,而Hello中的参数被命名为消息。在userInpuhave中,我使用test而不是消息-为什么这样工作?

调用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";       
            }
        }
}

共有3个答案

韶浩皛
2023-03-14

变量的名称只在其作用域内(即您可以引用它的位置)起作用。[1]

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

在该方法之外,唯一重要的是类型-String,在本例中。只要你传递相同类型的东西,或者可以自动转换为给定类型的类型,它就很高兴——无论你调用参数消息,在这种情况下),都会给出你传递的任何值你的函数在参数中的那个位置,每次你在方法中使用那个参数名,你都会使用给它的那个值(至少在你在方法中重新分配它之前,通过说消息=...)...

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

[1] :直到你开始谈论反射(但现在还不必担心)。

姬浩渺
2023-03-14

参数名称不匹配的原因只有一个是参数。当您调用一个函数时,您传递给它一些参数,这些参数必须与函数所采用的参数类型和数量相匹配。因此,如果您有一个函数add(int x, int y),只要两个参数都是ints,那么如何调用它并不重要,在调用该函数时,它们不必命名为x和y。

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

劳亦
2023-03-14

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

该程序实际上并没有调用“测试”或调用“消息”,它只是调用了可以将任何String作为参数的Hello方法。

 类似资料:
  • 当我运行方法时,结果1和2是相同的,我需要结果是不同的数据集,因为我通过不同的数据集。 这是我目前所掌握的。 而主要的方法代码是: 结果在两个相同的数据集[100.0,200.0,300.0]时打印stat1和stat。 我需要stat 1为10.0、20.0、30.0和stat 2为100.0、200.0、300.0 我试图改变…的命令 至 但这给了我同样的结果。我如何解决这个问题?

  • 问题内容: 有没有一种方法可以使存根方法在后续调用中返回不同的对象?我想这样做是为了测试来自的不确定响应。即,不管方法的返回顺序如何进行测试,结果都保持恒定。 我要测试的代码看起来像这样。 问题答案: 你可以使用方法来做到这一点(与链接时): 或使用等效的静态doAnswer方法:

  • 我在将这部分Java转换为Kotlin时遇到了问题: 方法的第二个参数(注意不是集合)接受。我尝试了几个解决方案,包括提供一个lambda: 但这导致: 错误:(32,38)Kotlin:意外标记 错误:(33,38)Kotlin:意外标记 错误:(31,56)Kotlin:类型不匹配:推断的类型是Kfunction1<@parametername mutablehttpresponse<>?,u

  • 问题内容: 我想在Qt中使用JNI调用Android Java方法。我无法理解一个奇怪的“方法签名”参数。这是什么,我应该如何设置? 在示例中,它类似于或。这是什么意思? 例如: 问题答案: 所有这些都在文档中进行了说明。 http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html 您的方法采用两个整数作为参数

  • 问题内容: 咨询JavaDocs和该方法的源代码后,我发现: 可以看出,在处的本机方法调用在同步块之外。因此,如果不将对方法的调用放入块中,是否安全? 它是线程安全的吗?如果有多个线程尝试同时中断它怎么办?这样,本机方法将如何表现? 问题答案: 我会说是的…这是线程安全的。 原因: 如果应用程序有必要在一个块中调用,那么规范(javadoc)会这样说,并且还说出需要同步到哪个对象以获得线程安全。实

  • 我有一个这样的测试 lucene6中的在这里...从中可以链接到超类并查看是(非)。