请问,下面的代码
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]
好处是便于理解, 便于后来者查看代码
计算后的结果不还是要用个变量接收?