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里参数传递的规则很简单:实参按传入的顺序,一一对应赋值给形参,和变量名字完全无关!
咱们逐个对应看:
- 第一个实参是
main方法里的bar,它的值是"foo"→ 赋值给mystery的第一个形参foo - 第二个实参是
main方法里的foo,它的值是"peanuts"→ 赋值给mystery的第二个形参bar - 第三个实参是字符串常量
"John"→ 赋值给mystery的第三个形参zazz
现在把这些值代入mystery里的打印语句:
zazz + " and " + foo + " like " + bar
替换后就是:
"John" + " and " + "foo" + " like " + "peanuts"
拼接起来自然就是输出结果:John and foo like peanuts
说白了就是别被同名变量搞混,记住「传参看顺序,不看名字」就搞定啦~
内容的提问来源于stack exchange,提问作者alexandru catanet
相关产品推荐
相关产品推荐

