Java 中的编译期常量是什么?使用它有什么风险?

编译期常量指的就是程序在编译时就能确定这个常量的具体值
非编译期常量就是程序在运行时才能确定常量的值,因此也称为运行时常量
定义上来说,声明为final类型的基本类型或String类型并直接赋值(非运算)的变量就是编译期常量,即:

//编译时常量
final int i = 4;
final String str = "dasd";

// 非编译期常量
final String str1 = new String("dasd");


Random rand = new Random(47);
//这个也是非编译期常量,为运行时常量
final int i4 = rand.nextInt(20);

提示:

这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,部署了一个新的jar,但是你的客户端仍然在使用老的值。为了避免这种情况,当你在更新依赖 JAR 文件时,确保重新编译你的程序。这里的更新JAR文件,重新编译程序是为了更新你使用的编译期常量的值!

————————————————
版权声明:本文为CSDN博主「弗兰随风小欢」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32575047/article/details/78846264

原文地址:https://www.cnblogs.com/peter-jun/p/15091508.html