☰ 目录

在 Java 中,常量是一种特殊的变量,其值在初始化后不能被修改。常量为程序提供了固定不变的数据,增强了代码的可读性和可维护性。以下是关于 Java 常量的详细介绍:

一、常量的定义与特点

  1. 使用final关键字声明
final double PI = 3.14159;  // 声明一个常量PI,值不能被修改

    2.必须初始化:常量声明时必须赋值,否则会编译错误。

    3.不可修改:一旦赋值,常量的值在整个程序运行期间不能被重新赋值。

PI = 3.14;  // 错误:无法为最终变量PI分配值

二、常量的命名规范

  • 全部大写:常量名通常使用全大写字母,单词间用下划线分隔。
final int MAX_VALUE = 100;
final String DB_URL = "jdbc:mysql://localhost:3306/mydb";
  • 见名知意:使用有意义的名称,提高代码可读性。

三、常量的分类

1. 字面常量

直接在代码中使用的固定值,如:

int x = 10;        // 10是整数型字面常量
double y = 3.14;   // 3.14是浮点型字面常量
String s = "Hello"; // "Hello"是字符串字面常量

2. 符号常量

使用final关键字定义的具名常量:

final int DAYS_IN_WEEK = 7;
final char NEW_LINE = '\n';

3. 静态常量(类常量)

使用static final修饰的常量,属于类而非对象,全局唯一

public class MathUtils {
    public static final double PI = 3.14159; // 静态常量
}

// 使用时直接通过类名访问
double area = MathUtils.PI * radius * radius;

四、常量的作用域

  • 局部常量:在方法或代码块内声明,作用域仅限于该区域。
public void calculate() {
    final int MAX_ATTEMPTS = 3; // 局部常量
    // ...
}

成员常量:在类中声明,可被类的多个方法使用。

public class Circle {
    private final double RADIUS; // 成员常量
    
    public Circle(double radius) {
        this.RADIUS = radius; // 必须在构造器中初始化
    }
}

 

五、常量与变量的区别

特性变量常量
关键字final
值是否可变
初始化要求不强制(局部变量需先赋值)必须声明时或构造器中赋值
命名规范驼峰命名法(如studentAge全大写 + 下划线(如MAX_SIZE

六、常量的应用场景

  1. 数学常数:如PIE等。
  2. 配置参数:如数据库连接 URL、超时时间等。
  3. 状态码:如 HTTP 状态码、错误码等。

    public class HttpStatus {
        public static final int OK = 200;
        public static final int NOT_FOUND = 404;
        public static final int SERVER_ERROR = 500;
    }

    4.枚举常量:当一组常量关联时,可用enum更优雅地定义。

    public enum Season {
        SPRING, SUMMER, AUTUMN, WINTER
    }

    七、常量使用示例

    public class ConstantDemo {
        // 静态常量(类常量)
        public static final double GRAVITY = 9.8;
        
        // 成员常量(每个对象可以有不同的值,但初始化后不可变)
        private final String COLOR;
        
        public ConstantDemo(String color) {
            this.COLOR = color; // 成员常量必须在构造器中初始化
        }
        
        public void printInfo() {
            // 局部常量
            final int MAX_SPEED = 120;
            System.out.println("Color: " + COLOR);
            System.out.println("Gravity: " + GRAVITY + " m/s²");
            System.out.println("Max Speed: " + MAX_SPEED + " km/h");
        }
        
        public static void main(String[] args) {
            ConstantDemo obj = new ConstantDemo("Red");
            obj.printInfo();
        }
    }

     

    八、注意事项

    1.常量初始化:成员常量必须在声明时或构造器中初始化。

    2.不可变性:常量的 “不可变” 仅针对引用本身,若引用的是对象(如数组、集合),对象内部的属性仍可修改。

final int[] ARRAY = {1, 2, 3};
ARRAY[0] = 100;  // 合法:修改数组元素
ARRAY = null;    // 非法:重新赋值引用

 3.编译时常量:使用常量表达式初始化的static final变量会在编译时被替换为实际值,提高性能。

static final int COUNT = 10 + 5; // 编译时直接替换为15

合理使用常量可以提高代码的安全性、可读性和可维护性,是 Java 编程中的重要实践。

意见反馈

AI助手

代码编辑器