java中的逻辑运算符,以及&与&&的区别,|与||的区别
原创,转载请留言联系
逻辑运算符:
| & | 与 | false&true=false;true&true=true;false&false=false | 必须两个都是true才返回true |
| | | 或 | false&true=true;true&true=true;false&false=false | 有一个是true就返回true |
| ^ | 异或 | false^true=true;true&true=false;false^false=false | 两个必须不一样才返回true |
| ! | 非 | !true=false;!false=true | 取反,本来是true的返回false,本来是false的返回true |
&与&&的区别
先来看一个例子:
public class OperatorDemo {
public static void main(String[] args){
int a = 1;
int b = 2;
int c = 3;
System.out.println((a>b)&(b>c));
System.out.println((a>b)&&(b>c));
}
}
# 输出结果:
false
false
看似两个用法都是一样。实际还是有所区别。
public class OperatorDemo {
public static void main(String[] args){
int a = 10;
int b = 20;
int c = 30;
System.out.println((++a>b)&(++b>c));
System.out.println(a);
System.out.println(b);
}
}
# 输出:
false
11
21
但是:
public class OperatorDemo {
public static void main(String[] args){
int a = 10;
int b = 20;
int c = 30;
System.out.println((++a>b)&&(++b>c));
System.out.println(a);
System.out.println(b);
}
}
# 输出结果:
false
11
20
为什么结果不一样了呢?
原因是这样的,我们都只带,&和&&都是必须双方都为true时才会返回true。
用&&时,如果第一个是false,那么就不会执行第二个条件了,直接返回false了。
而&会把两边都执行完。
所以,效率上肯定是&&比较高。
|与||的区别
|与||其实和&与&&的原理一样。
|和||都是有一方为ture是就返回true。
用||时,如果第一个是true,那么就不会执行第二个条件了,直接返回true了。
而|会把两边都执行完。
所以,效率上肯定是||比较高。
java中的逻辑运算符,以及&与&&的区别,|与||的区别的更多相关文章
- <Java中的继承和组合之间的联系和区别>
//Java中的继承和组合之间的联系和区别 //本例是继承 class Animal { private void beat() { System.out.println("心胀跳动...& ...
- Java中的逻辑运算符短路效应
在Java中逻辑运算符&& 和 ||,它们都存在短路效应. 对于a && b,只有当a和b同时为true时,整个表达式才为true(在java中,首先运算表达式a,如果 ...
- Java中 a+=b 和 a=a+b 有什么区别?
今天舍友突然问我"在java中 a+=b 和a=a+b 有什么区别",说这是一道面试题.当时就不假思索的回答:"一样啊",然后他说有位面试者也回答说一样,所以被 ...
- java中super()和this()、super和this的区别
1.super()和this()区别: super():调用父类无形参的构造方法: super(形参):调用父类中某个带形参的构造方法: this(形参):调用本类中另一种形式的构造方法: 注意:放在 ...
- 慕课网-安卓工程师初养成-3-6 Java中的逻辑运算符
来源: http://www.imooc.com/code/1301 逻辑运算符主要用于进行逻辑运算.Java 中常用的逻辑运算符如下表所示: 我们可以从“投票选举”的角度理解逻辑运算符: 1. 与: ...
- Java中String直接赋字符串和new String的区别
解析Java中的String对象的数据类型 1. String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ...
- Java中的String,StringBuilder,StringBuffer三者的区别
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
- Java中的String,StringBuilder,StringBuffer三者的区别(转载)
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
- Java中BufferedReader、InputStreamReader、Scanner和System.in区别
Java中获取键盘输入值的方法以前写算法都是C/C++写的,现在用Java写,虽然算法是独立于语言的,但是Java从键盘获取输入确实有些不一样.在C/C++中我们可以用scanf和cin来获取用户从键 ...
- java中的值传递和引用传递有什么区别呀?
值传递: (形式参数类型是基本数据类型和String):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参 ...
随机推荐
- BZOJ1070:[SCOI2007]修车——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1070 https://www.luogu.org/problemnew/show/P2053#sub ...
- 基于jQuery UI的调色板插件推荐colorpicker
1.下载地址 点击网页最下端Download,即可下载 2.使用方法 本插件是基于jQuery UI,所以应该先行下载jQuery UI,当然jQuery也必不可少 引入和初始化 引入js文件 & ...
- c# 合并两个有序数组
, , , , , }; , , , }; ArrayList lists = new ArrayList(); ArrayList temp = new ArrayList(); lists.Add ...
- Codeforces 351B Jeff and Furik 概率 | DP
B. Jeff and Furik time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- 51Nod 1381 硬币游戏 | 概率(数学期望)
Input 第一行给出一个整数T,表示有T组数据(1<=T<=10000). 第2行到T+1,每行给出一个整数R.(0< R <= 10,000,000,000) Output ...
- bzoj 1731: [Usaco2005 dec]Layout 排队布局 ——差分约束
Description 当排队等候喂食时,奶牛喜欢和它们的朋友站得靠近些.FJ有N(2<=N<=1000)头奶牛,编号从1到N,沿一条直线站着等候喂食.奶牛排在队伍中的顺序和它们的编号是相 ...
- 大聊Python----进程和线程
什么是线程? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. ...
- Angular2.0 基础: User Input
1.Angular 2.0 中的变量 对输入值的获取,我们可以通过$event 来获取,也可以通过变量来获取. template: ` <input (keyup)="onKey($e ...
- pandas中DataFrame使用
切片选择 #显示第一行数据print(df.head(1)) #显示倒数三行数据 print(df.tail(3)) loc df.loc[row_index,col_index] 注意loc是根 ...
- Java8的Lambda表达式简介
先阐述一下JSR(Java Specification Requests)规范,即Java语言的规范提案.是向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求 ...