博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中&与&&的区别
阅读量:4219 次
发布时间:2019-05-26

本文共 1456 字,大约阅读时间需要 4 分钟。

&既是逻辑运算符,又是位运算符,当&作为逻辑运算符时属于非短路型,而&&只是短路型逻辑运算符

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。

 

下面举个例子

public class Test{

     public static void main(String[] args){

         int a=3,b=4;                                      //声明两个变量

         boolean flag;                                   

         flag=(a>2)&&(b++>2);                      //"&&"运算符左侧运算结果为true,右侧表达式被运算(b>4也是true)

         System.out.println("flag="+flag);      //输出结果:flag=true 

         System.out.println("b="+b);             // 输出结果:b=5

         b=4;                                                //重置变量b的值

         flag=(a>5)&&(b++)>2);                    //"&&"运算符左侧运算结果为false,右侧表达式不被运算

         System.out.println("flag="+flag);      //输出结果:flag=false 

         System.out.println("b="+b);             // 输出结果:b=4

     }

}

 

public class Test{

     public static void main(String[] args){

         int a=3,b=4;                                      //声明两个变量

         boolean flag;                                   

         flag=(a>2)&(b++>2);                      //"&"运算符左侧运算结果为true,右侧表达式被运算(b>4也是true)

         System.out.println("flag="+flag);      //输出结果:flag=true 

         System.out.println("b="+b);             // 输出结果:b=5

         b=4;                                                //重置变量b的值

         flag=(a>5)&(b++)>2);                    //"&"运算符左侧运算结果为false,右侧表达式仍然被运算

         System.out.println("flag="+flag);      //输出结果:flag=false 

         System.out.println("b="+b);             // 输出结果:b=5

     }

}

 

&&和||用法一样,&和|用法一样

public class test

{
  public static void main(String [] args)
   {
     int month=8;//声明变量month,并赋8
     int day=1;//声明变量day,值为1
     if((month==8)||(++day<15))
        System.out.println("Month="+month+"Day="+day);
     if((month==8)|(++day<15))
        System.out.println("Month="+month+"Day="+day);
    }
} //End
执行的结果是:
Month=8 Day=1
Month=8 Day=2

转载地址:http://lylmi.baihongyu.com/

你可能感兴趣的文章
机器学习中核函数(Kernel)的理解与Kernel-SVM原理解析
查看>>
SVM参数详解
查看>>
漫谈 Clustering (1): k-means
查看>>
零基础学SVM—Support Vector Machine(一)
查看>>
C/C++log日志库比较
查看>>
open与fopen对比
查看>>
vsprintf解析
查看>>
C 语言的可变参数表函数的设计
查看>>
测试linux下 fprintf fwrite write mmap 等写文件的速度
查看>>
#, ##, args...以及__VAR_ARGS__宏定义解析
查看>>
文件描述符fd和文件指针File* fp的区别和转换
查看>>
C语言文件操作详解
查看>>
C语言详解 FILE文件操作
查看>>
磁盘I/O那些事
查看>>
Linux下的IO监控与分析
查看>>
ZeroMQ
查看>>
ZeroMQ编译安装使用教程
查看>>
Linux配置ntp时间服务器(全)
查看>>
Linux Wireless架构总结
查看>>
带宽与延时知识整理
查看>>