一、js中的常量与java中的常量对比学习

23 阅读2分钟

JavaScript 中的 const

在 JavaScript 中,使用 const 声明变量时必须立即初始化(赋值),不能只声明不赋值:

const a = 10;     // ✅ 正确
const b;          // ❌ 错误:SyntaxError: Missing initializer in const declaration

Java 中的常量定义

在 Java 中,定义常量有以下几种方式:

1. 基本常量定义(局部常量)

final int MAX_VALUE = 100;
final double PI = 3.14159;

2. 类常量(static final)

public class Constants {
    // 类常量,必须在声明时或静态代码块中初始化
    public static final String APP_NAME = "MyApp";
    private static final int MAX_USERS;
    
    // 静态代码块中初始化
    static {
        MAX_USERS = 1000;
    }
}

3. 实例常量(对象常量)

public class Circle {
    // 实例常量,必须在声明时或构造方法中初始化
    private final double radius;
    private final String color;
    
    public Circle(double radius) {
        this.radius = radius;  // 构造方法中初始化
        this.color = "Red";    // 构造方法中初始化
    }
    
    // 错误示例:如果在构造方法中不初始化final变量,会编译错误
    public Circle() {
        // this.radius 未初始化 - 编译错误
    }
}

4. 数组和集合常量

// 数组引用是常量,但数组内容可以修改
final int[] NUMBERS = {1, 2, 3};
NUMBERS[0] = 10;  // ✅ 可以修改数组元素
// NUMBERS = new int[5];  // ❌ 不能重新赋值

// 创建不可变集合
final List<String> NAMES = Collections.unmodifiableList(
    Arrays.asList("Alice", "Bob", "Charlie")
);

主要区别

特性JavaScript constJava final
初始化要求必须声明时初始化可在声明时或构造方法/静态块中初始化
作用范围块级作用域取决于声明位置
对象内容可变性对象内容可修改对象内容可修改(除非特别处理)
重新赋值完全禁止引用不可重新指向其他对象

最佳实践建议

  1. Java 常量命名规范
// 常量通常使用全大写,单词间用下划线分隔
public static final int MAX_CONNECTIONS = 100;
public static final String DATABASE_URL = "jdbc:mysql://localhost:3306/db";
  1. 创建真正的不可变对象
// 使用 Collections.unmodifiableXXX 创建不可变集合
private static final List<String> COUNTRIES = 
    Collections.unmodifiableList(Arrays.asList("USA", "China", "Japan"));

// 或使用Java 9+的List.of()
private static final List<String> CITIES = List.of("Beijing", "Tokyo", "London");
  1. 接口常量(现在不推荐):
// 旧的方式(接口只应定义行为,不应定义常量)
public interface OldConstants {
    int MAX_SIZE = 100;  // 默认为 public static final
}

// 推荐使用专门的常量类
public final class AppConstants {
    private AppConstants() {}  // 防止实例化
    
    public static final int TIMEOUT = 5000;
    public static final String APP_VERSION = "1.0.0";
}

在对比js学习java中......