二进制运算

请问,下面的代码
public static final byte QUEUE_TYPE = 0x01;
public static final byte TOPIC_TYPE = 0x02;
public static final byte TEMP_MASK = 0x04;
public static final byte TEMP_TOPIC_TYPE = TOPIC_TYPE | TEMP_MASK;
public static final byte TEMP_QUEUE_TYPE = QUEUE_TYPE | TEMP_MASK;

TEMP_TOPIC_TYPE和TEMP_QUEUE_TYPE 这样写比直接赋值有什么好处吗?

问题补充:
cuiran 写道
计算后的结果不还是要用个变量接收?

假如计算后的结果是3,直接写=3不就结了?

其实这个问题的理解就是要理解为什么这个地方要用常量了。

public static final byte QUEUE_TYPE = 0x01;
public static final byte TOPIC_TYPE = 0x02;

public static final byte TEMP_TOPIC_TYPE = TOPIC_TYPE | TEMP_MASK;

假如说以后QUEUE_TYPE 或者 TOPIC_TYPE 变了,如果你这里直接写结果值,那是不是
TEMP_TOPIC_TYPE 也要跟着变呢?

TEMP_TOPIC_TYPE就是为了表达TOPIC_TYPE | TEMP_MASK 这个关系的。
就算 TOPIC_TYPE 或者 TEMP_MASK 变了,那么TEMP_TOPIC_TYPE 就不用改了。

这个主要还是代码风格上,主要是担心以后会手工的改。虽然说final运行时不可改。但是业务变了还是会手工改的。

再说运行效率上,也一样的,存储上TEMP_TOPIC_TYPE 还是会存储它们的结果值的。

不用纠结的。

这有个关于运算符的你可以看看

[url]http://blog.csdn.net/lengchun10/archive/2009/04/24/4107222.aspx[/url]

好处是便于理解, 便于后来者查看代码

计算后的结果不还是要用个变量接收?