java中&和&& | 和||的区别
我想很多人在学习java的时候,或者其他语言(如:C#,.Net等)都会遇到
&和&&
然而,如果你没有真正的理解他们的意思,这会给你思路上面带来很大的麻烦
在这篇blog中,当你看完了以后,你会发现,很容易就把他们给区分开了
下面是我的demo

1 /**
2 *
3 */
4 package com.b510.test;
5
6 /**
7 * @author Jone Hongten
8 * @create date:2013-11-2
9 * @version 1.0
10 */
11 public class Test {
12
13 public static void main(String[] args) {
14 String str = null;
15 if(str != null && !"".equals(str)){
16 //do something
17 }
18 if(str != null & !"".equals(str)){
19 //do something
20 }
21 }
22 }

我们现在可能有一些模糊不清,现在我们先看看&和&&的电路问题:
对于:&&
if(str != null && !"".equals(str))
当: str != null 的时候,接下来才会去执行: !"".equals(str)
如果: str != null为false,那么这个时候,程序是处于短路的情况,则,!"".equals(str) 是不会执行的。
但是对于:&
if(str != null & !"".equals(str))
不管: str != null 的结果如何(即true,false),程序都会执行: !"".equal(str)
电路问题总结:
对于:& -- > 不管怎样,都会执行"&"符号左右两边的程序
对于:&& -- > 只有当符号"&&"左边程序为真(true)后,才会执行符号"&&"右边的程序。
下面来说说运算规则:
对于:& -- > 只要左右两边有一个为false,则为false;只有全部都为true的时候,结果为true
对于:&& -- > 只要符号左边为false,则结果为false;当左右都为true时,则结果为true
| 和 || 其实是和上面的意思是一样的
| -- > 只要左右两边有一个为false,则为false;只有全部都为true的时候,结果为true
||-- > 只要符号左边为false,则结果为false;当左右都为true时,则结果为true
java中&和&& | 和||的区别的更多相关文章
- java中ArrayList 、LinkList区别
转自:http://blog.csdn.net/wuchuanpingstone/article/details/6678653 个人建议:以下这篇文章,是从例子说明的方式,解释ArrayList.L ...
- java 中 ==和equals 的区别
Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolea ...
- java中equals和==的区别 (转)
java中equals和==的区别 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引 ...
- 【转】Java中equals和==的区别
[转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boole ...
- java中a++与++a区别
java中a++与++a区别 a++与++a的区别,如果单独使用没有任何区别,如果在运算中就有区别了,a++是先运算在赋值,而++a是先赋值在运算!! 先看a++的代码哦 class demo1 { ...
- c#与java中byte字节的区别及转换方法
原文:c#与java中byte字节的区别及转换方法 在java中 byte的范围在 [-128,127] 在C#中 byte的范围在 [0,255] 所以 java程序与C#程序 进行数据传输的时 ...
- java中==与equel的区别
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地 ...
- Java中的“&”和“&&”的区别
Java中的"&"和"&&"的区别 1."&"是位运算符,"&&"是逻辑 ...
- java中PriorityBlockingQueue 和DelayedWorkQueue 区别
java中PriorityBlockingQueue 和DelayedWorkQueue 区别
- Java-杂项: Java中Array和ArrayList区别
ylbtech-Java-杂项: Java中Array和ArrayList区别 1.返回顶部 1. 1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”. 2)Array( ...
随机推荐
- JVM学习--(八)java堆分析
上一节介绍了针对JVM的监控工具,包括JPS可以查看当前所有的java进程,jstack查看线程栈可以帮助你分析是否有死锁等情况,jmap可以导出java堆文件在MAT工具上进行分析等等.这些工具都非 ...
- Eclipse两种部署web项目方法
一).首先使用J2EE的Eclipse的Servers(可以从show view中取出). 1).通过Eclipse建立一个Dynamic Web Project 2).通过Servers视图来创建一 ...
- truffle 安装以及基本指令
1. linux下安装方式 $ npm install -g truffle 环境要求: NodeJS 5.0+ Windows,Linux,或Mac OS X 2. 创建工程: $ mkdir te ...
- dll附加依赖项查看——dumpbin 命令
VS自带工具 查看程序或动态链接库需要的动态链接库 dumpbin /dependents d:\test.exe 查看动态链接库的输出函数 dumpbin /exports d:\libmysq ...
- websocket通信 实现java模拟一个client与webclient通信
发文原由: 熟悉socket通信的同学,对于socket模拟server与client,实现相互通信, 或者使用websocket与java模拟的websocket服务器通信(比如一个聊天室),对于这 ...
- java 操作Excel表格
对于Excel表格的解析.生成,java在 org.apache.poi 包中已经封装好了,使用比较简单. 解析Excel: 首先将File文件转成InputStream InputStream in ...
- printf("Hello 2018!");
月考 has Boom! 要全心准备期末考试,到年前是不能再看Blog了 新年加油!!! 不要感冒 :joy:
- java之Spring(AOP)前奏-动态代理设计模式(下)
在上一章我们看到了,新增的三种类都能实现对原始功能类进行添加功能的事务处理,这三种类就是一个代理. 但是这种代理是写死的,怎样实现对任意接口添加自定义的代理呢? 我们先来看一下之前的代理实现: pub ...
- 循环神经网络(RNN)--学习笔记
一.基本概念 RNN针对的数据是时序数据.RNN它解决了前馈神经网络,无法体现数据时序关系的缺点.在RNN网络中,不仅同一个隐含层的节点可以相互连接,同时隐含层的输入不仅来源于输入层的输入还包括了上一 ...
- HTML知识点总结
HTML知识点总结 一.需要熟悉的基本快捷键 ctrl+c 复制 ctrl+v 粘贴 ctrl+x 剪切 ctrl+tab ...