java布尔值进行and和or逻辑运算原理
先看看如下代码:
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,则跳过括号内的代码进行下面的代码.
java布尔值进行and和or逻辑运算原理的更多相关文章
- java 布尔值一种赋值方法
在研读jmeter的代码时发现一个很常见的布尔值赋值方式,记录下来备忘: public static void main(String[] args) { // TODO Auto-generated ...
- java 学习第二篇关系运算符和布尔值
关系运算符,顾名思义.用来看什么关系.(也就是用来比较) 看下表 JAVA 关系运算符 a=6,b=5 关系运算符 举例 值 解释 > a>b true a大于b < a<b ...
- JavaScript基础数组_布尔值_逻辑运算等(2)
day51 参考:https://www.cnblogs.com/liwenzhou/p/8004649.html 布尔值(Boolean) 区别于Python,true和false都是小写. var ...
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...
- Java是值传递还是引用传递?
Java的值传递和引用传递在面试中一般都会都被涉及到,今天我们就来聊聊这个问题.这个问题一般是相对函数而言的,也就是Java中所说的方法参数,那么我们先来回顾一下在程序设计语言中有关参数传递给方法的两 ...
- 堆栈详解 + 彻底理解Java的值传递和引用传递
本文旨在用最通俗的语言讲述最枯燥的基本知识 学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨 ...
- Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...
- Python数据类型-01.数字和布尔值
本节主要介绍Python中的基础知识中的数据类型,数字和布尔值 介绍几个知识点:1)内置函数print()的用法,直接打印括号里面的内容,或者print后跟多个输出,以逗号分隔.2)内置函数type( ...
- 正经学C#_布尔运算[布尔值与其布尔运算符]:《c#入门经典》
前面几个章节简述了 C#中得常用得算术运算符.这一章节说布尔值与其布尔运算符. 布尔值在c#中表示方式是 bool类型,这个类型可以储存两个值,true或者false,或者真或者假,可以说0或者1. ...
随机推荐
- .NET的DTO映射工具AutoMapper
.NET的DTO映射工具AutoMapper 原文:https://github.com/AutoMapper/AutoMapper/wiki/Getting-started 参考:http://ww ...
- View & ViewData
ViewData 似乎没啥好说的,一个向 View 传送数据的字典. ----------------------------------------------------------------- ...
- 在linux中如何调试C语言程序
在Linux下面可以使用下面几种形式对C语言进行调试: 1 gdb gdb program 这是最原始的调试方法,若非熟悉命令行,这种方式其实是比较麿人的.有兴趣的可以参考一些我之前的博文.http: ...
- 启用密码管理之前创建的用户连接Oracle报ORA-28002处理一则
处理方法其实很简单.只要: alter user <username> identified by <same password>; 这个操作后,恢复正常了 下面作个 ...
- Confluence, JIRA, Fisheye
[tools]迁移Confluence, JIRA, Fisheye [背景] 原先的Confluence, JIRA, Fisheye都部署在一台服务器(192.168.200.203)上,导致 ...
- Linux系统编程:客户端-服务器用FIFO进行通信
先放下代码 回来在解释 头文件: clientinfo.h struct CLIENTINFO{ ]; int leftarg; int rightarg; char op; }; typedef ...
- 模仿c的字符转整数函数 atoi
#include<stdio.h> , KInvalid}; int g_nStatus = KValid; long StrToIntCore(char *str,bool minus) ...
- ASP.NET MVC 使用MSBuild部署的几个注意事项
ASP.NET MVC 使用MSBuild部署的几个注意事项 做新项目,当时参考NopCommerce的结构,后台Nop.Admin是一个独立的Area Web Site,但部署的时候发现,使用一键发 ...
- Android简单发送邮件(可带附件)
项目中遇到了一个发送邮件的功能,在网上查了很多,资料也很多.这里就不一一介绍了,只是写出我使用的方案(最简单的) Intent email = new Intent(android.content.I ...
- [转]Top 10 DTrace scripts for Mac OS X
org link: http://dtrace.org/blogs/brendan/2011/10/10/top-10-dtrace-scripts-for-mac-os-x/ Top 10 DTra ...