zoukankan      html  css  js  c++  java
  • Javase(&与&&的区别和联系)

    1、相同点

    &和&&都是逻辑与的运算符,当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

    2、不同点

    (1)&&与&的不同点:

    • 如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算;但是,&即使在左边为false的情况下依旧会对右边的式子做出计算。
    • 当&进行运算的数据的类型非布尔型的时候会进行位运算

    (2)&&的运用:

    很多时候我们可能都需要用&&而不是&,例如:在验证用户登录时判定用户名不是null而且不是空字符串:

    username != null &&!username.equals(" ");

    左边判断数据库中是否有该用户名(用户不存在),右边则判断用户的用户名是否为空字符串(用户存在,但是用户名为空字符串)。

    二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常(不先进行username的非空校验而是直接判断username是否是一个字符串,这样就是默认username不为空;而先进行非空校验,如果为空就不会进行是否是空串的校验,就避免了空指针异常的发生)。

    (3)&的运用:位运算符

    当&操作符两边的表达式不是布尔类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x34 & 0x0f的结果为0x04(需要将十六进制转换为二进制,然后逐位进行与运算即可)

    3、null与“”的区别

    null:代表声明了一个空对象,他没有地址,可以赋给任何对象,它是不占用内存的

    “”:代表声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串,也就是说地址没有内容,需要为其分配内存

  • 相关阅读:
    我的第一个NHibernate示例
    Div+CSS实现表格滚动,JS隐藏和显示Div例子
    VUE 生命周期
    sql AND和OR
    vcloak 隐藏表达式
    sql 多表联查
    SQL 语句解析
    jenkins 使用
    sql 排序(order by)
    sql 基础查询
  • 原文地址:https://www.cnblogs.com/zhai1997/p/12520373.html
Copyright © 2011-2022 走看看