Java 中的参数
写一个名为 greet 的方法,接收一个词。在圆括号里写 String name。在方法体里打印 hi、一个空格,然后是 name:System.out.println("hi " + name);。从 main 调用 greet("lena");。屏幕应显示一行:hi lena。字母 lena 并没有写死在方法里面。它们经调用到达,并在这一趟坐进名字 name。本页要教的,就是这种交接。
圆括号里的名字
在 methods 那一页,ring 后面的圆括号是空的。打印始终是 ding。这里圆括号里放一个带类型的名字,好让每次调用能送进不同的值。那个带类型的名字就是参数。你在调用里写的值,是这一趟的实参。
创建一个名为 Tip.java 的小程序文件。第一行的 public class 必须与文件名一致:public class Tip。不要在这个文件里留下旧的 Chime 或 Pack 类名;编译器要求类名与文件名一致。
在 main 外面,但仍在类的花括号里面,写:
static void greet(String name) {
System.out.println("hi " + name);
}
在这种入门形状上,方法头仍以 static void 开头。圆括号之间先是 String,然后是 name——先类型,再参数名。方法体使用 name,周围不加引号,并用加号接到固定文字 "hi "。"hi " 外的引号标出固定字母。光秃秃的 name 标出从调用传来的值。编译前先保存文件。
带 greet 的 Tip.java
这是你先编译的版本。main 保存括号里带值的调用。greet 保存使用该值的打印。
public class Tip {
public static void main(String[] args) {
greet("lena");
}
static void greet(String name) {
System.out.println("hi " + name);
}
}
在存放 Tip.java 的文件夹里运行 javac Tip.java。当圆括号、花括号和分号都匹配时,javac 自己不写任何一行。然后运行 java Tip——不要写成 java Tip.java。第二条命令去掉 .java 结尾。这两条命令在 Windows 和 macOS 上同样可用;本页不为任一系统另写外壳拼法。程序应打印一行后停下:hi lena。它不会等你输入。若终端在等键盘输入,文件里还留着旧练习的 nextLine 调用。删掉那个调用,保留 greet("lena"); 以及上面的 greet 方法。屏幕上一行不对,并不等于你需要重装 JDK。
按顺序走完一次完整运行。Java 从 main 开始。调用 greet("lena"); 把文字 lena 送进参数 name。在 greet 里,println 拼出 hi、一个空格,然后是那个值,所以屏幕显示 hi lena。然后 greet 结束,main 也结束。你没有在 main 里写 System.out.println("hi lena");。你把固定部分写在 greet 下面一次,并从调用传入 lena。
同一个方法,不同的词
只改 main,让它用两个不同的实参调用 greet 两次:
public static void main(String[] args) {
greet("lena");
greet("sam");
}
不要动 greet 方法本身。再次编译并运行:javac Tip.java,然后 java Tip。屏幕应显示两行:hi lena,然后 hi sam。第一次调用用 lena 填满 name。第二次调用用 sam 填满 name。你没有在 greet 下面复制 println。你只改了调用里的值。
若方法头仍是 String name,却用空括号调用 greet(),javac 会写出错误——调用必须提供一个 String。若在同一个 main 里留下 Chime 页那种空括号的旧 ring();,那次调用与 greet 不匹配,残留的 ring 方法还可能在你的 hi 行旁边继续打印 ding。把 main 清到本课需要的那些 greet 调用。
用整数当值
参数不只用于文字。再写一个接收 int 的方法:
static void show(int n) {
System.out.println(n);
}
从 main 用整数调用它:
show(9);
show(4);
public class Tip {
public static void main(String[] args) {
show(9);
show(4);
}
static void show(int n) {
System.out.println(n);
}
}
编译并运行:javac Tip.java,然后 java Tip。屏幕应显示两行:9,然后 4。调用里的 9 或 4 不加引号——它们是 int 值,不是文字。在 show 里,println(n) 写出传来的数字。看到这两行之后,可以把 greet 演示放回去。两个版本都是合法的 Java。它们教的是同一件事:调用送入一个值,参数为方法体保存它。
再读一遍 int 运行。第一次调用把 n 设为 9 并打印 9。第二次调用把 n 设为 4 并打印 4。名字 n 在方法头里声明一次,写成 int n。每次调用为这一趟给它一个新值。把带引号的词传进 show,例如 show("nine");,在这种形状上与 int 不匹配——javac 会写出错误。把光秃秃的数字传进 greet,例如 greet(3);,与 String 不匹配——javac 再次写出错误。让实参类型与参数类型匹配。
常见混淆是把参数的名字当文字打印:System.out.println("name");。那会写出字母 n-a-m-e。它不会写出 lena。当你想让屏幕上出现实参的字母时,保持 println("hi " + name),name 周围不加引号。另一种混淆是在 main 里声明参数,而不是在方法头里。带类型的名字属于 greet(...) 或 show(...) 里面,不属于本页 main 的圆括号。main 的 String[] args 是以后会话的话题;不要把 args 改名为 name,还指望 greet 能看见它。
本页把你带到哪里
你可以把 String name 或 int n 放进方法的圆括号,在调用里传入匹配的值,并从方法体打印该值。两次调用、两个实参会打印两行不同内容,而不必复制方法。void 仍然表示经调用不会交回任何东西。下一页是 return;在那里,方法会把一个值交回 main,而不是只在方法体里打印。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部