常量(static final)
本课属于 Coddy Java 学习旅程的“面向对象编程”单元。第 18 课,共 87 课。
将 static 和 final 结合起来,就能创建一个常量,也就是属于类且永远不会改变的值。这是在 Java 中定义常量的标准方式。
public class GameSettings {
public static final int MAX_PLAYERS = 4;
public static final double GRAVITY = 9.81;
public static final String GAME_TITLE = "Space Adventure";
}按照惯例,常量名使用 UPPER_SNAKE_CASE,以便与普通变量区分开来。由于它们都是 static 和 final,你可以通过类名访问它们,并且它们的值保证永远不会改变:
System.out.println(GameSettings.MAX_PLAYERS); // 4
// GameSettings.MAX_PLAYERS = 8; // 错误!不能修改常量通常声明为 public,因为它们需要在应用程序中共享。想想 Math.PI 这样的值,它是一个任何代码都可以使用的公共静态常量。
为什么要使用常量,而不是硬编码的值?如果你在代码中到处写 4,之后又需要把它改成 6,就得找到并更新每一处。使用 MAX_PLAYERS 这样的常量,只需在一处修改即可。
常量也能让代码更易读,MAX_PLAYERS 比一个神秘的 4 更清楚。
挑战
简单让我们创建一个 MathConstants 工具类,用来存储重要的数学常量,并创建一个 CircleCalculator,使用这些常量进行计算。
你将创建两个文件来组织代码:
MathConstants.java:创建一个类,使用public static final字段存储数学常量:PI,值为3.14159E(欧拉数),值为2.71828GOLDEN_RATIO,值为1.61803
Main.java:使用这些常量进行圆的计算。你会接收一个半径作为输入,并打印三行:- 圆的面积:
Area: [value] - 圆的周长:
Circumference: [value] - 按黄金比例缩放后的直径:
Golden Diameter: [value]
- 圆的面积:
计算公式如下:
- 面积 = PI * radius * radius
- 周长 = 2 * PI * radius
- 黄金直径 = 2 * radius * GOLDEN_RATIO
你会收到一个输入:半径(double)。
使用 String.format("%.2f", value) 将所有输出值格式化为 2 位小数。通过类名访问常量,例如 MathConstants.PI。
亲手试试
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double radius = scanner.nextDouble();
// TODO:使用 MathConstants.PI 计算面积
// 公式:PI * radius * radius
// TODO:使用 MathConstants.PI 计算周长
// 公式:2 * PI * radius
// TODO:使用 MathConstants.GOLDEN_RATIO 计算黄金直径
// 公式:2 * radius * GOLDEN_RATIO
// TODO:输出保留 2 位小数的结果
// 使用 String.format("%.2f", value) 设置格式
// 输出格式:
// 面积:[value]
// Circumference: [value]
// Golden Diameter: [value]
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: Java 在线编译器