博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础面试题:说说&和&&的区别
阅读量:6721 次
发布时间:2019-06-25

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

&与&&都是逻辑与

不同的是&左右两边的判断都要进行,而&&是短路与,当&&左边条件为假则不用再判断右边条件,所以效率更高

例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长

&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。

package com.swift;public class And_Test {    public static void main(String[] args) {        /*         * &  和 &&         */        String str=null;        if(str != null & !str.equals("")) {            System.out.println("有异常了,因为str没有开辟空间");        }    }}

按位与

package com.swift;public class And_Test {    public static void main(String[] args) {        /*         * &  和 &&         */        String str=null;        if(str != null && !str.equals("")) {            System.out.println("有异常?");        }        System.out.println(Integer.toHexString(0x3a + 0x45));        System.out.println(Integer.toHexString(0x31 & 0x0f));    }}

 

转载于:https://www.cnblogs.com/qingyundian/p/8325197.html

你可能感兴趣的文章
mybatis第三天 小结
查看>>
phoneGap插件开发-多参数和返回值
查看>>
检测Gps和网络定位权限
查看>>
maven中使用springboot返回jsp和json数据
查看>>
GRASP设计模式
查看>>
利用ISA发布Outlook Anywhere邮件客户端
查看>>
IDEA Maven 中添加 Jetty插件
查看>>
双向循环链表
查看>>
总有一条适合你|程序猿的女朋友
查看>>
学习方法分享--强哥
查看>>
我的友情链接
查看>>
自动生成公钥并自动写入到特定服务器脚本
查看>>
jsp基础语法【03】_page指令
查看>>
iOS 往工程里添加自定义字体
查看>>
Express cookie-parser
查看>>
scp命令
查看>>
MySQL数据库性能优化之存储引擎选择
查看>>
前端面试大全(一)
查看>>
类加载过程的原理分析
查看>>
Day1_HTML_排版标签
查看>>