java中define_Java中的#define

评论空间太小,所以这里有一些关于static final的使用方面的更多信息。 正如我在对Andrzej的回答的评论中所说的,只有原始string和string以文字的forms直接编译到代码中。 为了演示这一点,请尝试以下操作:

您可以通过创build三个类(在单独的文件中)来看到这一点:

public class DisplayValue { private String value; public DisplayValue(String value) { this.value = value; } public String toString() { return value; } } public class Constants { public static final int INT_VALUE = 0; public static final DisplayValue VALUE = new DisplayValue("A"); } public class Test { public static void main(String[] args) { System.out.println("Int = " + Constants.INT_VALUE); System.out.println("Value = " + Constants.VALUE); } }

编译这些并运行testing,打印:

Int = 0

值= A

现在,改变Constants为每个不同的值,只是编译类Constants 。 当您再次执行Test (不重新编译类文件)时,仍然会打印旧值INT_VALUE而不是VALUE。 例如:

public class Constants { public static final int INT_VALUE = 2; public static final DisplayValue VALUE = new DisplayValue("X"); }

运行testing,不用重新编译Test.java :

Int = 0

值= X

请注意,任何其他使用static finaltypes都将保留作为参考。

与C / C ++#if / #endif类似,一个常量字面量或通过static final定义的,在常规的Java if条件中使用并计算为false将导致编译器去除if块中语句的字节码(他们不会被生成)。

private static final boolean DEBUG = false; if (DEBUG) { ...code here... }

“… code here …”中的代码不会被编译到字节码中。 但是,如果您将DEBUG更改为true ,则会是。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值