跳到内容

元数据卡

  • 前置知识:变量与类型(第2章)、控制流(第4章)
  • 预计时间:15 分钟
  • 阅读模式: 轻松入门
  • 完成标志:能够写出带参数和返回值的方法

本章分层

  • 必读:方法定义与调用、参数传递、返回值
  • 选读void 与返回类型的抉择
  • 进阶:无

你的进度

老陈的兵器铺里今天特别安静。你推门进去,看见他正在炉前凝神——不是在打铁,是在等你。

"你学会了变量,学会了条件和循环,"他头也不抬,"但你只会把代码写成一整块——从上到下,像竹竿一样。如果你想做两件不一样的事,你得把同样的代码写两遍。"

"一味蛮干,"他抬起头,"你见过哪个铁匠打一把剑要从挖矿开始?"

这章的任务就是学会拆解——把一个大任务拆成有名字的小任务,每个小任务只管一件事,接收它需要的东西,返回它做出的成果。

第一幕:你需要一个"动作"

假设你要显示三次欢迎信息——三遍同样的结构。真正的问题不是循环,是你没法把一个"动作"打包成一个有名字的东西

方法(method)就是那个"有名字的东西"。

第二幕:定义你的第一个方法

打开你的编辑器。别复制,自己打一遍——手打才能感觉到节奏:

java
public class Blacksmith {
    public static void main(String[] args) {
        showBanner();
        System.out.println("老陈师傅正在打铁。");
        showBanner();
    }

    // ↓↓↓ 看你师傅这里 ↓↓↓
    static void showBanner() {
        System.out.println("====== 铁匠铺 ======");
        System.out.println(" 老陈在此");
        System.out.println("====================");
    }
}

语言:Java 21 如何运行javac Blacksmith.java && java Blacksmith预期输出

====== 铁匠铺 ======
 老陈在此
====================
老陈师傅正在打铁。
====== 铁匠铺 ======
 老陈在此
====================

你只是在 main 里调用了两次 showBanner(),程序就跑到了另一个地方,执行里面的三条 println,再回来。

方法的基本语法:

java
static void 方法名() {
    // 你想做的事
}
  • static:先记住——"这个方法属于类本身,不需要创建对象就能调用"
  • void:这个方法不返回任何东西
  • 方法名:小驼峰命名,动词开头:showBannercalculateDamageisReady

Python 差异: def show_banner(): 就行,没有 static 和返回类型声明,方法名用蛇形命名。

第三幕:传参数进去

"展示个横幅有啥用?你得能告诉我——给谁打、打什么。"

java
public class Forge {
    public static void main(String[] args) {
        craftSword("铁剑", 3);
        craftSword("钢刀", 5);
        craftSword("秘银匕首", 2);
    }

    static void craftSword(String name, int days) {
        System.out.println("开始打造:" + name);
        System.out.println("预计需要 " + days + " 天");
        System.out.println(name + " 打造完成!");
        System.out.println("---");
    }
}

语言:Java 21 如何运行javac Forge.java && java Forge预期输出

开始打造:铁剑
预计需要 3 天
铁剑 打造完成!
---
开始打造:钢刀
预计需要 5 天
钢刀 打造完成!
---
开始打造:秘银匕首
预计需要 2 天
秘银匕首 打造完成!
---

形参与实参craftSword(String name, int days) 声明了两个"形参"(parameter)。你调用时传进去的值("铁剑", 3)叫"实参"(argument)。形参就像在方法入口处声明了两个临时变量——调用时被赋值为你传进来的值。

第四幕:返回值——你做出东西得还给我

把矿石扔进去炼,炼完了你得把剑拿回来。

java
public class Forge {
    public static void main(String[] args) {
        String sword1 = forgeSword("铁", 3);
        String sword2 = forgeSword("钢", 5);

        System.out.println("你得到了:" + sword1);
        System.out.println("你得到了:" + sword2);
    }

    static String forgeSword(String material, int quality) {
        String result = quality >= 4
            ? "精良" + material + "剑"
            : "普通" + material + "剑";
        return result;
    }
}

如何运行javac Forge.java && java Forge预期输出

你得到了:普通铁剑
你得到了:精良钢剑

void 变成了 String——"这个方法运行完毕后,会还给你一个 String 类型的值"。然后在方法体内,你需要 return 那个值。return 做了两件事:

  1. 计算出结果并返回给调用者
  2. 立即结束方法——后面的代码不会执行
java
static String checkAge(int age) {
    if (age < 18) {
        return "未成年,不能领取冒险执照";
        // System.out.println("这行永远不会执行"); ← 编译器会报错
    }
    return "欢迎领取冒险执照";
}

Python 差异: 返回类型只是提示,不强制。Java 是编译期强制检查的。

旅人笔记

方法让你把一段逻辑打包成一个有名字的小任务。参数是输入,返回值是输出。记住一句话:一个方法做一件事。

下一站:调用栈

你已经知道方法可以调方法。但你有没有想过——调用的过程中,电脑是怎么记住"我走到哪了"的?每次调用时,变量存在哪里?下一节,调用栈给你答案。

Built with VitePress | Software Systems Atlas