java 条件编译_Java条件编译

学习过C语言或者C++语言的同学都知道它们支持条件编译,那么今天我们来学习下在Java语言中如何实现条件编译。Java语言本身没有提供条件编译,但是Java编译器对.java文件编译为.class文件做了优化,下面通过一个例子给大家详细讲解。

下面先给出HelloWorld.java文件:

1 packagecom.test;2

3 /**

4 * Test Demo5 */

6 public classHelloWorld {7

8 public static voidmain(String[] args) {9 if(BuildConfig.FLAG) {10 System.out.println("Hello World");11 } else{12 System.out.println("Java条件编译测试");13 }14 }15

16 }

再来看看BuildConfig.java文件:

packagecom.test;/*** Created by Administrator on 2015/5/24.*/

public final classBuildConfig {public static final boolean FLAG = false;

}

再来看看该.java文件被转化为.class文件的内容:

//

//Source code recreated from a .class file by IntelliJ IDEA//(powered by Fernflower decompiler)//

packagecom.test;public classHelloWorld {publicHelloWorld() {

}public static voidmain(String[] args) {

System.out.println("Java条件编译测试");

}

}

可以知道的是BuildConfig.FLAG永远都为false,if块内的代码当然也不会被执行,这部分代码就不会被编译到.class文件中。

如果FLAG是字符串会怎么样?字符串之间如果使用equals进行比较,在转化为.class文件时不会得到优化。

HelloWorld.java文件:

packagecom.test;/*** Test Demo*/

public classHelloWorld {public static voidmain(String[] args) {if (BuildConfig.FLAG.equals("false")) {

System.out.println("Hello World");

}else{

System.out.println("Java条件编译测试");

}

}

}

HelloWorld.class文件:

//

//Source code recreated from a .class file by IntelliJ IDEA//(powered by Fernflower decompiler)//

packagecom.test;public classHelloWorld {publicHelloWorld() {

}public static voidmain(String[] args) {if("false".equals("false")) {

System.out.println("Hello World");

}else{

System.out.println("Java条件编译测试");

}

}

}

如果真的需要字符串比较,实现条件编译的话可以使用 "=="。

HelloWorld.java文件:

packagecom.test;/*** Test Demo*/

public classHelloWorld {public static voidmain(String[] args) {if (BuildConfig.FLAG == "false") {

System.out.println("Hello World");

}else{

System.out.println("Java条件编译测试");

}

}

}

HelloWorld.class文件:

//

//Source code recreated from a .class file by IntelliJ IDEA//(powered by Fernflower decompiler)//

packagecom.test;public classHelloWorld {publicHelloWorld() {

}public static voidmain(String[] args) {

System.out.println("Hello World");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值