Menu
CoddyTech

静态方法

本课属于 Coddy Java 学习旅程的“面向对象编程”单元。第 16 课,共 87 课。

和静态变量属于类而不是实例一样,静态方法也属于类本身。你可以直接调用它们,无需创建对象。

添加 static 关键字来声明静态方法:

public class MathHelper {
    public static int add(int a, int b) {
        return a + b;
    }
    
    public static int multiply(int a, int b) {
        return a * b;
    }
}

// 无需创建对象即可调用
int sum = MathHelper.add(5, 3);      // 8
int product = MathHelper.multiply(4, 2);  // 8

静态方法有一个重要的限制:它们不能直接访问实例变量或实例方法。由于静态方法不依赖对象而存在,因此没有可供使用的 this 引用。

public class Counter {
    private int count;              // 实例变量
    private static int total;       // 静态变量
    
    public static void incrementTotal() {
        total++;      // OK:正在访问静态变量
        // count++;   // 错误!无法访问实例变量
    }
}

静态方法非常适合不依赖对象状态的实用操作,例如 Math.sqrt() 或 Integer.parseInt() 这样的方法。它们提供的功能适用于类级别,而不是单个对象。

challenge icon

挑战

简单

让我们创建一个 StringUtils 工具类,它提供实用的字符串处理方法,而且无需创建任何对象,非常适合用来演示静态方法!

你将创建两个文件来组织代码:

  • StringUtils.java:创建一个包含静态方法的工具类,用来执行常见的字符串操作:
    • 静态方法 countVowels(String text),返回给定字符串中元音字母(a、e、i、o、u,包括大写和小写)的数量
    • 静态方法 reverse(String text),返回反转后的字符串
    • 静态方法 isPalindrome(String text),如果字符串正读和反读都相同(不区分大小写),则返回 true,否则返回 false
  • Main.java:使用你的工具类处理一个字符串。你会收到一个输入:一个文本字符串。通过类名直接调用每个静态方法,并输出三行:
    • Vowels: [count]
    • Reversed: [reversed string]
    • Palindrome: true 或 Palindrome: false

你会收到一个输入:要分析的文本字符串。

请记住,静态方法通过类名调用(例如 StringUtils.countVowels(text)),而不是先创建实例。对于不需要在多次调用之间保持状态的操作,使用工具类会很方便。

亲手试试

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        
        // TODO: 使用 StringUtils 的静态方法分析文本
        // 调用 StringUtils.countVowels(text) 获取元音数量
        // 调用 StringUtils.reverse(text) 获取反转后的字符串
        // 调用 StringUtils.isPalindrome(text) 检查是否为回文
        
        // TODO: 按以下格式输出结果:
        // Vowels: [count]
        // Reversed: [reversed string]
        // Palindrome: true/false
        
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: Java 在线编译器