`
budairenqin
  • 浏览: 201825 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于条件编译

阅读更多
被初始化为编译期常量的 static final 变量的引用,在编译时被解析为常量值的一个本地拷贝,这恰好让java能实现条件编译
看例子:
public class Example {
    public static void main(String[] args) {
        if (Debug.debug) {
            System.out.println("Debug is true");
        }
    }
}

class Debug {
    static final boolean debug = true;
}

我们看看Example类的main方法的字节码:
(使用命令 javap -c Example)
public static void main(java.lang.String[]);
    Code:
       0: getstatic     #16                 // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #22                 // String Debug is true
       5: invokevirtual #24                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return

我们看到,压根没有关于if (Debug.debug)这条语句的处理,这个时候如果重新编译Debug 类而不重新编译 Example 类的话,运行Example类时一样会输出Debug信息

再看看 static final boolean debug = false; 时的结果
Example类的main方法的字节码:
(使用命令 javap -c Example)
  public static void main(java.lang.String[]);
    Code:
       0: return

这回甚至连println()相关的调用指令都省下了
分享到:
评论

相关推荐

    条件编译应用举例.zip

    6. 重要说明.txt:这个文件很关键,它可能包含有关如何理解和运行压缩包内文件的重要提示,或者是关于条件编译的解释和注意事项。例如,如何定义或启用特定的宏,以及这些宏在代码中的作用。 在实际编程中,条件...

    DELPHI定义的条件编译的全部说明

    ### DELPHI定义的条件编译的全部说明 #### 一、引言 在Delphi编程语言中,条件编译是一种强大的工具,它允许开发者根据特定条件决定代码段是否会被编译进最终的可执行文件中。这对于创建适应不同平台、版本控制、...

    c语言预处理和条件编译

    ### C语言预处理和条件编译 #### 预处理 预处理是C语言程序编译过程中的第一个阶段,它负责处理源代码中的预处理器指令。预处理器指令以`#`字符开头,这些指令告诉预处理器如何处理接下来的代码。 ##### 头文件...

    c语言条件编译详解

    ### C语言条件编译详解 #### 一、预处理与条件编译的引入 C语言的条件编译是一种强大的工具,允许程序员根据不同的条件选择性地编译代码的一部分。这在开发多平台软件、调试、优化以及配置特定功能时特别有用。...

    c++条件编译详解

    ### C++条件编译详解 #### 一、条件编译概述 条件编译是一种在编译阶段根据不同的条件选择性地编译代码片段的技术。它主要用于优化编译过程,提高程序运行效率,以及针对不同环境定制编译结果。C++中的条件编译...

    条件编译的作用

    条件编译的作用 条件编译是C语言中的一种机制,用于根据不同的条件对代码进行选择性编译。通过使用#ifdef指示符,我们可以区隔一些与特定头文件、程序库和其他文件版本有关的代码。 #ifdef指示符的作用是:当宏...

    c语言条件编译精讲

    ### C语言条件编译精讲 #### 条件编译概念 条件编译是一种编程技巧,主要用于控制程序中某些部分是否被编译。通过这种方式,程序员可以在不同的开发环境、平台或者根据不同的需求,灵活地调整代码的行为,而无需...

    308-条件编译应用举例(51单片机C语言实例Proteus仿真和代码)

    308-条件编译应用举例(51单片机C语言实例Proteus仿真和代码)308-条件编译应用举例(51单片机C语言实例Proteus仿真和代码)308-条件编译应用举例(51单片机C语言实例Proteus仿真和代码)308-条件编译应用举例(51单片机...

    清除c/c++代码中条件编译部分的程序,帮助阅读源代码,生成好的tags

    网上众多的开源C/C++代码,因为跨平台的需要,参杂了许多的条件编译语句,对阅读源代码造成了不方便,而且用ctags等工具生成源代码的tags文件时会有些妨碍,本工具就是用来预处理这些条件编译的,将未定义的区域自动...

    c c++ 条件编译及其他

    条件编译是C和C++编程中的一种重要技术,它允许程序员根据特定的条件决定编译器应当处理哪些代码段。这种技术主要依赖于预处理指令,这些指令在实际编译之前由预处理器处理。 预处理器是C/C++编译过程的一部分,它...

    深入条件编译(学习嵌入式)

    ### 深入条件编译(学习嵌入式) #### 条件编译概述 条件编译是在编译阶段根据特定条件选择性地编译源代码的一种机制。它主要用于提高程序的灵活性、适应性和可移植性,特别是在嵌入式开发领域,通过条件编译可以...

    c语言条件编译指令用法

    C语言的条件编译指令是程序开发中一种强大的工具,它允许程序员根据特定的条件决定哪些代码块应该被编译,哪些应该被忽略。条件编译主要由三个核心功能组成:代换、包含文件和条件式编译。 首先,代换(Token ...

    IE中的条件编译

    描述中提到的博客链接可能提供了关于如何在实际项目中使用条件编译的详细示例和最佳实践。遗憾的是,由于没有直接访问这个链接的能力,我们无法提供更具体的细节。但是,条件编译通常用于解决以下问题: 1. CSS兼容...

    最新单片机仿真 条件编译应用举例

    最新单片机仿真 条件编译应用举例最新单片机仿真 条件编译应用举例最新单片机仿真 条件编译应用举例最新单片机仿真 条件编译应用举例最新单片机仿真 条件编译应用举例最新单片机仿真 条件编译应用举例最新单片机仿真...

    介绍c语言中条件编译相关的预编译指令

    C语言中条件编译相关的预编译指令 C语言中条件编译是根据实际定义宏(某类条件)进行代码静态编译的手段。可根据表达式的值或某个特定宏是否被定义来确定编译条件。下面将详细介绍条件编译中使用的预编译指令。 一...

    单片机C语言实例--308-条件编译应用举例.zip

    本实例——“308-条件编译应用举例”旨在讲解如何利用C语言的条件编译功能来优化和适应不同的硬件平台或编译环境。条件编译是一种预处理指令,它允许程序员根据特定的宏定义来决定哪些代码段应该被编译,哪些应该被...

    单片机基础c语言之条件编译.rar_单片机基础c语言之条件编译

    条件编译是C语言中的一种高级特性,它允许程序员根据特定的条件来选择性地编译代码段,这对于在不同环境或目标平台下构建软件非常有用。下面将详细介绍条件编译的概念、用途以及如何在C语言中实现。 条件编译是通过...

    C语言预处理命令的条件编译

    在C语言编程中,预处理命令是编译之前由预处理器处理的特殊指令,用于完成包含文件、定义宏以及条件编译等操作。C语言预处理器不具备编译器内置的诸如条件包含代码等高级功能,因此开发者需要借助预处理命令来实现...

    def 条件编译处理工具

    条件编译处理工具是软件开发过程中非常重要的辅助手段,它允许开发者根据特定的条件或目标平台来选择性地编译代码部分。这个“def 条件编译处理工具”作为一个编程语言无关的插件,旨在解决多平台、多模态发布的问题...

Global site tag (gtag.js) - Google Analytics