Tag: 编译时常量

最终变量和编译时常量之间的差异

final变量和编译时常量之间有什么区别? 请考虑以下代码 final int a = 5; final int b; b=6; int x=0; switch(x) { case a: //no error case b: //compiler error } 这是什么意思? 何时以及如何为最终变量赋值? 运行时会发生什么以及编译时会发生什么? 我们为什么要给switch一个编译时常量? java的其他结构需要编译时间常量?

编译时常量和变量

Java语言文档说: 如果将基本类型或字符串定义为常量并且在编译时已知该值,则编译器会将代码中的常量名称替换为其值。 这称为编译时常量。 我的理解是,如果我们有一段代码: private final int x = 10; 然后,编译器将用文字10替换代码中每次出现的x 。 但假设常量在运行时初始化: private final int x = getX(); // here getX() returns an integer value at run-time. 与编译时常量相比,是否会出现性能下降(无论可能忽略不计)? 另一个问题是以下代码行: private int y = 10; // here y is not final 编译器以与编译时常量相同的方式处理? 最后,我从答案中理解的是: final static表示编译时常量 just final意味着它是一个常量但在运行时初始化 只是static意味着在运行时初始化 没有final是一个变量,不会被视为常量。 我的理解是否正确?

是否所有编译时常量都内联?

假设我有一个这样的类: class ApplicationDefs{ public static final String configOption1 = “some option”; public static final String configOption2 = “some other option”; public static final String configOption3 = “yet another option”; } 我的应用程序中的许多其他类都使用这些选项。 现在,我想单独更改其中一个选项并仅部署已编译的类。 但是,如果这些领域在消费者类别中排列,这就变得不可能了吗? 是否有任何选项可以禁用编译时常量的内嵌?