先看看如下代码:

public class Test {

    public static void test() {
boolean a = true;
boolean b = false;
if (a | b) {
System.out.println("|");
}
if (a & b) {
System.out.println("&");
}
}
public static void main(String[] args){
test();
} }

输出: |

| 和 &运算符是 or和and逻辑运算

1 | 0 == 1

1 & 0 == 0

我们来看一下test方法的字节码

      0: iconst_1
1: istore_0
2: iconst_0
3: istore_1
4: iload_0
5: iload_1
6: ior
7: ifeq 18
10: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
13: ldc #3 // String |
15: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
18: iload_0
19: iload_1
20: iand
21: ifeq 32
24: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
27: ldc #5 // String &
29: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
32: return

我们注意0-3的字节码

0:将常量1入栈

1:将1赋值给第一个变量(a)

2:将常量0入栈

3:将0赋值给第二个变量(b)

所以布尔值的逻辑运算就是整型01的逻辑运算

7:ifeq 18 表示

if()里面判断的是逻辑运算的结果是否等于0,如果等于0,则跳过括号内的代码进行下面的代码.

最新文章

  1. Ubuntu16.04 LTS下apt安装WireShark
  2. RobotFrameWork(六)控制流之For循环
  3. UIScrollView在AutoLayout下的滚动问题
  4. (转载)iOS开发历程书籍推荐
  5. JQ学习(一)
  6. 各种主流数据库的比较(所以说我觉得Oracle这个keng?入的不错?)
  7. chrome 在home下生成 libpeerconnection.log
  8. 装tortoiseSVN时遇到的坑
  9. document.styleSheets
  10. 微型 Python Web 框架 Bottle - Heroin blog
  11. [置顶] Android开发实战记录(三)---HelloWorld
  12. BZOJ 2301 Problem b(莫比乌斯反演+分块优化)
  13. navicat的简单使用
  14. C语言作业--函数
  15. GET和POST两种基本请求方法的区别
  16. win10怎么进入和退出安全模式?
  17. python基础第一天 3.27
  18. 迷宫-BFS
  19. java学习之路--集合基础之List和Set部分
  20. 2017年3月1日09:45:39 css选择器,session数据取不到

热门文章

  1. ASP.NET4.0新特性
  2. SQL点滴19—T-SQL中的透视和逆透视
  3. bzoj 1799: [Ahoi2009]self 类似的分布 解读
  4. Erlang运行时的错误
  5. PhpStorm创建Drupal模块项目开发教程(4)
  6. 苹果公司的新的编程语言 Swift 高级语言(十五)--协议
  7. Grunt使用入门
  8. SQL Server 2005中设置Reporting Services发布web报表的匿名访问
  9. jquery调用wcf案例
  10. glibc-2.19 之 strlen 实现