xie2022228 2010-09-13 16:10
浏览 129
已采纳

二进制运算

请问,下面的代码
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 这样写比直接赋值有什么好处吗?

  • 写回答

4条回答 默认 最新

  • yznkaixin 2010-09-13 23:11
    关注

    问题补充:
    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 还是会存储它们的结果值的。

    不用纠结的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试