本文目录导读:

在Java中,常量是指在程序运行过程中值不能被改变的变量,Java中通常使用final关键字来声明常量。
以下是常量声明和使用的完整案例:
基本语法
final 数据类型 常量名 = 初始值;
命名规范:常量名通常使用全大写字母,单词之间用下划线分隔。
不同位置的常量声明
局部常量(方法内部)
public class ConstantDemo {
public void testLocalConstant() {
// 方法内部的常量
final double PI = 3.14159;
final int MAX_COUNT = 100;
System.out.println("PI = " + PI);
System.out.println("MAX_COUNT = " + MAX_COUNT);
// PI = 3.14; // 编译错误!常量不能被重新赋值
}
}
成员常量(实例变量)
public class Circle {
// 实例常量:每个对象都有自己的常量,但一旦创建就不能修改
public final double PI = 3.14159;
public final int SIDES;
// 构造方法中初始化空白final变量
public Circle(int sides) {
this.SIDES = sides; // 可以在构造方法中赋值一次
}
}
静态常量(类级别,最常用)
public class MathConstants {
// 静态常量:类的所有对象共享,使用static final
public static final double PI = 3.1415926535;
public static final int MAX_VALUE = 1000;
public static final String APP_NAME = "MyApplication";
// 复杂类型的常量
public static final int[] DAYS = {1, 2, 3, 4, 5};
}
完整案例:计算圆形面积
public class CircleCalculator {
// 1. 声明类常量
public static final double PI = 3.1415926535;
private static final String UNIT = "平方厘米";
// 2. 实例常量
private final double radius;
// 构造方法初始化radius
public CircleCalculator(double radius) {
this.radius = radius;
}
// 计算面积
public double calculateArea() {
return PI * radius * radius;
}
public void displayResult() {
double area = calculateArea();
System.out.println("半径为 " + radius + " 的圆面积为: "
+ area + " " + UNIT);
}
// 测试
public static void main(String[] args) {
// 使用类常量
System.out.println("PI值: " + PI);
// 创建对象
CircleCalculator circle1 = new CircleCalculator(5.0);
circle1.displayResult();
CircleCalculator circle2 = new CircleCalculator(10.0);
circle2.displayResult();
// PI = 3.14; // 编译错误!不能修改常量
}
}
常量与枚举结合使用
// 使用枚举定义常量组
enum Color {
RED("#FF0000"),
GREEN("#00FF00"),
BLUE("#0000FF");
private final String hexCode;
Color(String hexCode) {
this.hexCode = hexCode;
}
public String getHexCode() {
return hexCode;
}
}
public class ColorExample {
public static final String DEFAULT_COLOR = "#FFFFFF";
public static void main(String[] args) {
System.out.println("默认颜色: " + DEFAULT_COLOR);
System.out.println("红色: " + Color.RED.getHexCode());
System.out.println("绿色: " + Color.GREEN.getHexCode());
}
}
常见常量类型示例
public class ConstantTypes {
// 整数常量
public static final int MAX_USERS = 1000;
public static final byte MIN_AGE = 0;
// 浮点数常量
public static final float TAX_RATE = 0.13f;
public static final double PI = 3.1415926;
// 字符常量
public static final char NEW_LINE = '\n';
public static final char SPACE = ' ';
// 布尔常量
public static final boolean DEBUG = true;
// 字符串常量
public static final String GREETING = "Hello, World!";
public static final String EMPTY_STRING = "";
// 对象常量(引用不可变,但对象内容可变)
public static final StringBuffer LOG = new StringBuffer();
}
使用常量的最佳实践
- 命名:全大写,下划线分隔
- 位置:通常放在类的最前面
- 访问修饰符:通常使用
public,除非有特殊封装需求 - 组合修饰符:
public static final是最常见的组合
// 好的实践
public class Constants {
// 成组定义相关常量
public static final int STATUS_SUCCESS = 200;
public static final int STATUS_NOT_FOUND = 404;
public static final int STATUS_ERROR = 500;
// 接口常量(推荐使用类常量)
public interface Status {
int SUCCESS = 200;
int NOT_FOUND = 404;
}
}
- 使用
final关键字声明常量 - 类级别常量通常使用
public static final - 常量命名使用大写+下划线
- 常量一旦赋值就不能修改
- 在编译器和代码可读性方面都有好处
这样可以提高代码的可维护性,避免魔数(magic numbers)的出现。