Desting_Zheung 2021-02-02 10:31 采纳率: 0%
浏览 17

static final修饰的域一定是编译期常量

Java思想中有下面一些代码和文字:

注意,根据惯例,既是static又是final的域(即编译期常量)将用大写表示,并使用下划线分隔各个单词
 

...

private static Random rand =new Random(47);

static final int INT_5 = rand.nextInt(20);

...

请注意,带有恒定初始值(即,编译期常量)的final static基本类型全用大写字母命名,并且字与字之间用下划线隔开(这就像C常量一样,C常量是这一命名传统的发源地)

我们不能因为某数据是final的就认为在编译时可以知道它的值。在运行时使用随机生成的数值来初始化i4和INT_5就说明了这一点。

他这些说法不前后矛盾吗?先说有static final修饰的就是编译期常量,后说带有恒定初始值就是编译期常量,如果这两种说法都是满足的,确实“static final int INT_5 = rand.nextInt(20);”的常量名可以写成"INT_5",然后他又说“我们不能因为某数据是final的就认为在编译时可以知道它的值”,这怎么理解?求大佬赐教 🙏

  • 写回答

1条回答 默认 最新

  • 追风的少年L_J 2021-02-02 11:04
    关注

    这个问题就好比你的常量是一个List,只是这个引用不能被替换了吧,你还是能操作这个List往里面添加数据的,但是你要重新赋值一个引用给到这个变量是不行的哦.

    评论

报告相同问题?

悬赏问题

  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息