静态方法
本课属于 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() 这样的方法。它们提供的功能适用于类级别,而不是单个对象。
挑战
简单让我们创建一个 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
}
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: Java 在线编译器