java 虚拟机之 boolean 类型
2016-05-15 21:37
369 查看
在一个开源项目中,看到如下的代码,思索了一会,大悟:
boolean hasHeartBeat = false;
hasHeartBeat |= (entry.getEntryType() == EntryType.HEARTBEAT);
这段代码就是 比较两者的类型是否相等;
但为何这样设计呢?因为这样做,效率是杠杠的!
其深处原因在于:Java 虚拟机中没有提供 boolean 专用的字节码指令,但其却使用了 Java 虚拟机中的 int 数据类型来代替。a|=b 恒等于 a = a|b ;
并且,位运算的效率是不能质疑的。比如在消息中间件 RocketMQ 进行 CRC32 校验时,直接进行位运算,没有调用其它方法。当然啦!在高并发中间件中,经常看到位运算!
附上各种位运算的绝技:
http://www.52ij.com/jishu/102.html
boolean hasHeartBeat = false;
hasHeartBeat |= (entry.getEntryType() == EntryType.HEARTBEAT);
这段代码就是 比较两者的类型是否相等;
但为何这样设计呢?因为这样做,效率是杠杠的!
其深处原因在于:Java 虚拟机中没有提供 boolean 专用的字节码指令,但其却使用了 Java 虚拟机中的 int 数据类型来代替。a|=b 恒等于 a = a|b ;
并且,位运算的效率是不能质疑的。比如在消息中间件 RocketMQ 进行 CRC32 校验时,直接进行位运算,没有调用其它方法。当然啦!在高并发中间件中,经常看到位运算!
附上各种位运算的绝技:
http://www.52ij.com/jishu/102.html
相关文章推荐
- java Jedis使用示例
- Java基础排序算法堆排序
- 大话设计模式java版--抽象工厂模式
- springmvc之hibernate整合
- Struts2简单构建
- Javaworkers团队第一周项目总结
- Java我的高效编程之环境搭建
- java多态运行时实现
- Java并发-同步器Semaphore,CountDownLatch
- 软件一定存在修改的余地——《大话Java性能优化》
- Java大牛养成记(7)——后台权限拦截器
- spring aop笔记
- cookie、session和java过滤器
- Spring依赖注入及IOC控制反转
- java垃圾收集器
- Java编程思想[二]操作符
- [JAVA][RCP] Eclipse4/RCP/Lifecycle
- struts2学习笔记
- struts2学习笔记
- ant无法构建源码包含中文的项目--KeyWord:ant,中文,乱码