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):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参 ...
随机推荐
- BZOJ2820:YY的GCD——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2820 Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x& ...
- ZOJ2314:Reactor Cooling——题解
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 题目大意:无源汇上下界网络流,问每个管子走多少流量才能满足所有管子的下界 ...
- bzoj2144: 跳跳棋(二分/倍增)
思维好题! 可以发现如果中间的点要跳到两边有两种情况,两边的点要跳到中间最多只有一种情况. 我们用一个节点表示一种状态,那么两边跳到中间的状态就是当前点的父亲,中间的点跳到两边的状态就是这个点的两个儿 ...
- bzoj3232
Description DZY家的后院有一块地,由N行M列的方格组成,格子内种的菜有一定的价值,并且每一条单位长度的格线有一定的费用. DZY喜欢在地里散步.他总是从任意一个格点出发,沿着格线行走直到 ...
- angularJS入门小Demo【简单测试js代码的方法】
1.首先建立一个文件夹 demo, 2.在其中建立一个文本文档,改名为 demo-1.html, 3.把html中要引入的 js 文件拷贝到 demo目录下, 4.然后用 Notepadd++ 编辑刚 ...
- node.js 与java 的主要的区别是什么
node.js 与java都是服务器语言,但是两者存在很大区别:(1)Node.js比Java更快 :node.js开发快,运行的效率也算比较高,但是如果项目大了就容易乱,而且javascript不是 ...
- iphone6 iPhone6 Plus的导航栏等高度
iPhone6 iPhone6 Plus ...
- iOS AFNetworking 2.6.0框架导入报错解决方法
最近手动导入AFNetworking 2.6.0框架时发现Xcode报如下3个错误: 1. Use of undeclared identifier ‘kSecFormatUnknown‘ 2. Us ...
- Connections between cities LCA
Problem Description After World War X, a lot of cities have been seriously damaged, and we need to r ...
- [freemarker篇]02.生成HTML的静态页面
昨天完成了一部分的今天在上次的基础上,完成完成生成HTML静态页面的操作,中间会涉及一点标签的简单使用.今天的代码有一丢丢的对付的感觉!抱歉了,直接就上代码吧!求原谅! 项目结构目录如下: 第一步,新 ...