• 静思
  • 吴言片语
    • 吴言
    • 片语
    • 杂七杂八
  • 死于青春
    • 一路走好
  • 乌合麒麟
  • 纪念
    • 5.12
    • 3.23
  • GitHub
    • A List of Post-mortems
    • The Art of Command Line
  • 关于
    • Privacy Policy

程序员的信仰

金鳞岂是池中物,一遇风云便化龙

HOME » static与final变量

static与final变量

2005 年 4 月 11 日 @ 下午 8:12 by Jay | 被踩了 2,373 脚

TOC

Toggle
  • 一、illegal forward refrence
  • 二、static块

一、illegal forward refrence

前天写一个类时遇到一个很眼生的编译错误(问题简化后):

public final class Constants{
    public static int VAR2 = VAR1 + 1;
    public static int VAR1 = 1;
}

编译时出错(第2行):

illegal forward refrence

仔细一想,是因为VAR2引用的VAR1在VAR2之后定义,看来在Java中定义static变量时应遵循“声明先于使用”的原则。

二、static块

还是上一个类,VAR1和VAR2定义成final,值存在一个properties文件中,在使用前必须将值load进来:

System.getProperties().load(new FileInputStream("constants.properties"));

于是将上面的代码放在static块中:

public final class Constants{
    static{
        System.getProperties().load(new FileInputStream("constants.properties"));
    }

    public static final int VAR2 = System.getProperties().getProperty("var2");
    public static final int VAR1 = System.getProperties().getProperty("var1");
}

但在运行时VAR1和VAR2没有被赋值,debug后发现static块根本没有执行。于是顿悟:final变量在编译时便被编译器计算、赋值,因此在运行时没有必要执行static块。


-- EOF --

除非注明(如“转载”、“[zz]”等),本博文章皆为原创内容,转载时请注明: 「转载自程序员的信仰©」
本文链接地址:static与final变量

分享

  • 点击分享到 Facebook (在新窗口中打开) Facebook
  • 点击以分享到 X(在新窗口中打开) X
  • 更多
  • 点击分享到Reddit(在新窗口中打开) Reddit
  • 点击分享到Telegram(在新窗口中打开) Telegram
  • 点击以在 Mastodon 上共享(在新窗口中打开) Mastodon

赞过:

赞 正在加载……

相关

Today on history:

【2016】再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~
【2007】四月还真TM飘雪了
Posted in: 技术生活 Tagged: java, 悟
← 有新手表了
原型模式(Prototype) →

android (9) apple (20) augmentum (9) Beijing (21) bt (8) career (28) coding (38) firefox (10) google (36) hibernate (11) ibm (11) iphone (10) java (93) linux (16) m$ (26) mac (58) macos (27) nazca (9) olympics (8) oo (8) playstation (10) rip (8) Shanghai (39) spring (9) tips (45) tommy emmanuel (8) ubuntu (12) usa (23) windows (9) 北航 (17) 博客 (29) 吐槽 (8) 周末 (9) 和谐社会 (26) 小资 (11) 愤青 (40) 方言 (10) 朋友 (77) 歌词 (8) 烟酒不分家 (18) 爱国 (19) 爱情 (8) 犯二 (15) 破解 (8) 足球 (11)

烫手山芋

  • 再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~ - 被踩了 27,836 脚
  • 生活,就是一个期待跟着一个期待 - 被踩了 21,393 脚
  • 星巴克饮品缩写大全(Starbucks Drink ID Codes)[zz] - 被踩了 18,491 脚
  • 从一个全角冒号说一下我为什么不感冒iOS - 被踩了 14,429 脚
  • 有关Character.isLetter()和Character.isLetterOrDigit() - 被踩了 13,629 脚

刚拍的砖

  • leo 发表在《再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~》
  • 花 发表在《再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~》
  • 无名氏 发表在《从一个全角冒号说一下我为什么不感冒iOS》
  • Jay 发表在《Mac OS geek级问题》
  • Wei Wang 发表在《再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~》

随便看看

  • In the Dark [Shelley Harland]12 年 ago
  • 记:参加2015 GITC全球互联网技术大会9 年 ago
  • 今年桃花比较乱18 年 ago
  • static与final变量9 年 ago
  • 悼李公5 年 ago

文以类聚

光阴似箭

其他操作

  • 登录
  • 条目 feed
  • 评论 feed
  • WordPress.org

Copyright © 2025 程序员的信仰.

Jay's Omega WordPress Theme by Jay

 

正在加载评论...
 

    %d