zoukankan      html  css  js  c++  java
  • 9 &和&&的区别

    &运算符有两种用法

    1 按位与&

    在解释按位与&之前,我们先了解一个知识:程序中的所有数在计算机内存中都是以二进制的形式存储的,位运算就是直接对内存中整数的二进制位进行操作。

    按位与&:是Java中位运算符的一种,它的意思是对二进制进行&运算,只有1&1时结果才是1,其它均为0。

    举例说明

    十进制数 十进制结果 十进制数对应的二进制数
    12   0 0 0 0 1 1 0 0
    5   0 0 0 0 0 1 0 1
    按位与&【1&1为1,否则为0】 4 0 0 0 0 0 1 0 0

    2 逻辑与&

    当符号两边都为true时,结果才为true;

    当符号左边为false时,它依然会执行符号右边的表达式,最终返回false。

    注意:很多时候我们可能需要用的是&&而不是&,比如:username != null && !username.equals(""),如果第一个条件为false,就不能再调用equals方法,要不然会报空指针异常的。

    &&运算符是短路与

    当符号两边都为true时,结果才为true;

    当符号左边为false时,它不会在执行符号右边的表达式,直接返回false。

    /**
     * 逻辑&和&&练习
     */
    public class T {
        public static void main(String[] args) {
    
            boolean f1 = true;
            f1 = false;
            int num1 = 10;
            if(f1 & (num1++ > 0)) {
                System.out.println("true");
            } else {
                System.out.println("false");
            }
            System.out.println(num1);
    
            boolean f2 = true;
            f2 = false;
            int num2 = 10;
            if(f2 && (num2++ > 0)) {
                System.out.println("true");
            } else {
                System.out.println("false");
            }
            System.out.println(num2);
        }
    }

    结果为:

    false

    11

    false

    10

    说明: f1为false,逻辑&依然执行了num1++的操作;f2为false,短路与&&不在执行后边的代码


    Java中运算符的分类

    算术运算符

    赋值运算符

    比较运算符

    逻辑运算符

    位运算符

    三目运算符

  • 相关阅读:
    POJ 1691 Painting a Board(状态压缩DP)
    POJ 1946 Cow Cycling(抽象背包, 多阶段DP)
    Leetcode: Best Time to Buy and Sell Stock I, II
    Leetcode: Valid Palindrome
    POJ 1946 Cow Cycling
    POJ 1661 Help Jimmy(递推DP)
    POJ 1160 Post Office(区间DP)
    POJ 2486 apple tree
    Android播放器框架分析之AwesomePlaye
    【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位...
  • 原文地址:https://www.cnblogs.com/xilichenbokeyuan/p/14150837.html
Copyright © 2011-2022 走看看