You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java方法参数传递解析:实验代码输出结果成因咨询

Java方法参数传递逻辑解析

嗨,我来帮你搞清楚这段代码的输出逻辑,核心其实就是方法调用时的参数匹配规则,咱们一步步拆解:

首先先看完整代码:

public class experiment3 {
    private static void mystery(String foo, String bar, String zazz) {
        System.out.println(zazz + " and " + foo + " like " + bar);
    }
    public static void main(String[] args) {
        String foo = "peanuts";
        String bar = "foo";
        mystery(bar, foo, "John");
    }
}

你困惑的点其实是被「变量名相同」给干扰了,咱们先明确两个核心概念:

  • 方法定义时括号里的参数叫「形参」:也就是mystery方法里的foo、bar、zazz,它们只是这个方法内部用的“占位符”名字
  • 方法调用时括号里的参数叫「实参」:也就是mystery(bar, foo, "John")里的bar、foo、"John",这些是实际传递的值

Java里参数传递的规则很简单:实参按传入的顺序,一一对应赋值给形参,和变量名字完全无关!

咱们逐个对应看:

  1. 第一个实参是main方法里的bar,它的值是"foo" → 赋值给mystery的第一个形参foo
  2. 第二个实参是main方法里的foo,它的值是"peanuts" → 赋值给mystery的第二个形参bar
  3. 第三个实参是字符串常量"John" → 赋值给mystery的第三个形参zazz

现在把这些值代入mystery里的打印语句:

zazz + " and " + foo + " like " + bar

替换后就是:

"John" + " and " + "foo" + " like " + "peanuts"

拼接起来自然就是输出结果:John and foo like peanuts

说白了就是别被同名变量搞混,记住「传参看顺序,不看名字」就搞定啦~

内容的提问来源于stack exchange,提问作者alexandru catanet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:24:35