zoukankan      html  css  js  c++  java
  • java中&与&&的区别

    我想很多人在学习java的时候,或者面试时都会遇到

    &和&&

    然而,如果你没有真正的理解他们的意思,这会给你思路上面带来很大的麻烦

    在这篇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,则结果为true

  • 相关阅读:
    Redis简单实践-分布式锁
    Redis基础数据结构
    Redis介绍
    MakeGenericType方法,运行时传入泛型T参数,动态生成泛型类
    Visual Studio 2017 Ctrl+单击键会跳转到定义的设置
    10 分钟 创建分布式微服务
    nodejs 中自定义事件
    我是这么给娃娃取名的(使用 node.js )
    使用 Fiddler 上传微信公众账号 自定义菜单
    drf_yasg 简单使用
  • 原文地址:https://www.cnblogs.com/yingjie2222/p/6006518.html
Copyright © 2011-2022 走看看