当前位置: 首页 > news >正文

java中的常量可以不用在声明的时候初始化,c中的必须在声明的时候初始化,可不可以这么理解?

这种理解不完全正确,下面分别说明 Java 和 C 中常量的初始化情况。

Java 中常量的初始化
在 Java 里,使用 final 关键字定义常量时,常量并非都要在声明时初始化,具体情况如下:

类的静态常量
如果 final 修饰的是类的静态常量(即使用 static final 修饰),有两种初始化方式:

声明时初始化:这是最常见的方式,例如:

F:\Java\learning example\src\PointsRewardSystem.java
Apply
public class Constants {
    public static final int MAX_VALUE = 100;
}
静态代码块中初始化:可以在静态代码块里对静态常量进行初始化,示例如下:

F:\Java\learning example\src\PointsRewardSystem.java
Apply
public class Constants {
    public static final int MAX_VALUE;
    static {
        MAX_VALUE = 100;
    }
}
类的实例常量
final 修饰的类实例常量,同样有两种初始化途径:

声明时初始化:

F:\Java\learning example\src\PointsRewardSystem.java
Apply
public class MyClass {
    private final int instanceConstant = 20;
}
构造函数中初始化:可以在类的构造函数里对实例常量进行初始化,示例如下:

F:\Java\learning example\src\PointsRewardSystem.java
Apply
public class MyClass {
    private final int instanceConstant;
    public MyClass(int value) {
        this.instanceConstant = value;
    }
}
局部常量
对于局部常量,在使用之前必须完成初始化,例如:


F:\Java\learning example\src\PointsRewardSystem.java
Apply
public class Main {
    public static void main(String[] args) {
        final int localConstant;
        localConstant = 30;
        System.out.println(localConstant);
    }
}
C 语言中常量的初始化
在 C 语言中,使用 const 关键字定义常量时,一般需要在声明时就完成初始化,例如:


c
Apply
#include <stdio.h>

int main() {
    const int number = 10;
    // const int anotherNumber;  // 错误,未初始化
    // anotherNumber = 20;
    printf("%d\n", number);
    return 0;
}
不过,在 C 语言里,const 更多地表示“只读”,不像 Java 里 final 那样严格的常量语义。

总结
Java 中的常量不一定要在声明时初始化,可根据常量的类型(静态常量、实例常量、局部常量)在不同的位置完成初始化;而 C 语言里使用 const 定义常量时,通常要在声明时就初始化

相关文章:

  • HDMI(High-Definition Multimedia Interface)详解
  • 三分钟读懂微服务
  • UE4学习笔记 FPS游戏制作16 重构FppShooter和RoboteShooter 提出父类Shooter
  • HTML应用指南:利用POST请求获取城市肯德基门店位置信息
  • 【八股文】http怎么建立连接的
  • 破解云端依赖!如何通过Flowise搭建私有化的端到端AI开发环境
  • [250324] Kafka 4.0.0 版本发布:告别 ZooKeeper,拥抱 KRaft!| Wine 10.4 发布!
  • 上海瀛旻信息科技有限公司
  • 总结 Spring 中存储 Bean 的相关注解以及这些注解的用法.
  • python+requests接口自动化测试
  • git使用钩子文件出现错误
  • 《深入剖析 SmartInt 包装类:实现智能整数操作》
  • Netty源码—5.Pipeline和Handler二
  • 31天Python入门——第9天:再学函数
  • 推荐1款简洁、小巧的实用收音机软件,支持手机和电脑
  • 量子计算与人工智能的融合:下一代算力革命
  • 【CGE】社会核算矩阵构建(一):SAM基本结构
  • 【零基础入门unity游戏开发——2D篇】2D物理系统 —— 2D刚体组件(Rigidbody 2d)
  • 计算机网络的分类——按地理范围分类
  • uniapp运行到支付宝开发者工具
  • 招商蛇口:一季度营收约204亿元,净利润约4.45亿元
  • 解密62个“千亿县”:强者恒强,新兴产业助新晋县崛起
  • “ChatGPT严选”横空出世了,“DeepSeek严选”还要等多久?
  • 美国参议院投票通过戴维·珀杜出任美国驻华大使
  • 中使馆:奉劝菲方有关人士不要在台湾问题上挑衅,玩火者必自焚
  • 上海74岁老人宜春旅游时救起落水儿童,“小孩在挣扎容不得多想”