正在加载...

Java 中的方法

写一个名为 ring 的方法,打印一个词:ding。把这些打印行放在带空圆括号的 static void ring() 下面。在 main 里只写 ring();——名字,然后空括号,然后分号。编译并运行。屏幕应显示一行:ding。main 本身并不保存 ding 的 println。方法保存它。本页要教的,就是这种拆分。

活在 ring 下面的那些行

到目前为止,你的大部分打印工作都直接写在 main 里。那样仍然可行。方法给同样的行一个属于自己的名字。你在那个名字下面写一次这些行。然后 main 把名字写成一次调用,来请求它们。
创建一个名为 Chime.java 的小程序文件。第一行的 public class 必须与文件名一致:public class Chime。不要在这个文件里留下旧的 Pack 或 Skip 类名;编译器要求类名与文件名一致。
在 main 外面,但仍在类的花括号里面,写:
static void ring() {
System.out.println("ding");
}
单词 static 留在这种入门形状上,好让 main 不用创建对象就能调用 ring。单词 void 表示这个方法不向调用者交回值——它只运行自己的方法体。名字 ring 是你要在 main 里键入的标签。空圆括号 () 表示本页的方法不接收传入值。花括号包住方法体。System.out.println("ding"); 写出四个字母 d-i-n-g。编译前先保存文件。

你要编译的 Chime.java

这是本页完整的小程序。main 只保存调用。ring 保存打印。

ring 打印 ding

java
public class Chime {
    public static void main(String[] args) {
        ring();
    }

    static void ring() {
        System.out.println("ding");
    }
}

在存放 Chime.java 的文件夹里运行 javac Chime.java。当圆括号、花括号和分号都匹配时,javac 自己不写任何一行。然后运行 java Chime——不要写成 java Chime.java。第二条命令去掉 .java 结尾。这两条命令在 Windows 和 macOS 上同样可用;本页不为任一系统另写外壳拼法。程序应打印一行后停下:ding。它不会等你输入。若终端在等键盘输入,文件里还留着旧练习的 nextLine 调用。删掉那个调用,保留 main 里的 ring(); 以及上面的 ring 方法。屏幕上一行不对,并不等于你需要重装 JDK。

按顺序走完一次运行。Java 从 main 开始。main 里唯一的语句是 ring();。那次调用跳进 ring 方法。在 ring 里,println 写出 ding。然后 ring 结束,main 里没有剩下的事,程序就结束。本页你没有把 System.out.println("ding"); 放进 main。你把它放在 ring 下面,并用名字去请求它。若屏幕显示 ding,调用已经到达方法体。若干净编译后屏幕仍空白,要么 main 从未调用 ring,要么 main 里仍只有空花括号、没有调用。

从 main 多次调用 ring

只改 main,让它调用同一个方法两次:
public static void main(String[] args) {
ring();
ring();
}
不要动 ring 方法本身。再次编译并运行:javac Chime.java,然后 java Chime。屏幕应显示两行,每一行都是 ding。第一次调用运行方法体一次。第二次调用再运行同一方法体。给这些行起名,就是为了这种复用。你没有在 ring 下面再复制一遍 println。你在 main 里写了第二次调用。
若去掉第二个 ring();,只留下一次调用,屏幕又回到单独一行 ding。方法定义本身不会打印。只有来自 main 的调用(或以后来自另一个方法)才会运行方法体。一个定义了 ring 却从不从 main 调用它的文件可以编译,但运行 java Chime 时仍可能显示空白屏幕,因为 main 无事可做。

方法头部的各个部分

本页的头部是 static void ring()。从左往右读。static 让 main 能在这种入门形状上调用该方法。void 表示通过调用不会交回值。ring 是名字。() 故意为空:本会话不把词或数字传入方法。下一页 parameters 会在这些括号里放名字。再下一页 return 会在你需要交回值时改掉 void。这两项都留到以后。今天空 () 和 void 就够了。

📊 本页头部的部分

部分 在本页
static main 无需对象即可调用 ring
void ring 不交回值
ring 你在调用里键入的名字
() 本页没有值传入
{ ... } 打印 ding 的方法体

main 里的调用必须与名字完全一致:小写 r 的 ring();、空括号和分号。写成大写 R 的 Ring(); 对 Java 来说是另一个名字。不带 () 的 ring 在这种形状上不是调用。写成 System.out.println("ring"); 会打印单词 ring 的四个字母;它不会运行方法体。当你要在屏幕上看到 ding 时,保持调用为 ring();。

常见残留是旧的 Pack for-each 演示仍坐在 main 里、挨着新调用。那时屏幕可能显示 2、4 和 6,或 red 和 blue,而不是 ding——或者两类行混在一起。把 main 清到本课需要的那些 ring(); 调用。另一种混淆是把方法放进 main 的花括号里。本页的方法放在类里面、挨着 main,而不是嵌在 main 内部。javac 不会把埋在 main 里的方法当成你调用的那个 ring。在 main 结束前合上 ring 的花括号,在类结束前合上 main 的花括号,让每个块只拥有自己的行。

为后面的页面做好准备

你可以写 static void ring(),把 println 行放进它的花括号,并从 main 调用 ring(),让屏幕显示 ding。调用两次会打印两次 ding,而无需复制方法体。空括号和 void 故意留在本页。parameters 会把值放进括号里。return 会让方法把数字或文本交回 main。那就是本页之后的两页。

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
7
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部