• asp.net 逻辑操作符与(&&),或(||),非(!)


    逻辑操作符与(&&),或(||),非(!)能根据参数的关系返回布尔值

    public class bool{

    public static void main(string [] args){

    random rand=new random(47);

    int i=rand.nextint(100);

    int j=rand.nextint(100);

    system.out.println(“i=” + i);

    system.out.println(“j=” + j);

    system.out.println(“i > j is” +( i>j));

    system.out.println(“i < j is” +( i<j));

    system.out.println(“i > =j is” +( i>=j));

    system.out.println(“i <=j is” +( i<=j));

    system.out.println(“i ==j is” +( i==j));

    system.out.println(“i !=j is” +( i!=j));

    system.out.println(“(i <10) && (j<10) is” +((i <10) && (j<10)));

    system.out.println(“(i <10) || (j<10) is” +((i <10) ||(j<10)));

    }

    }

    输出

    i=58

    j=55

    i>j is true

    i<j is false

    i>= j is true

    i<=j is false

    i==j is false

    i!=j is true

    (i <10) && (j<10) is false

    (i <10) ||(j<10) isfalse

    与或非操作只能应用于布尔值,如果在应该是string值的地方使用了boolean的话,布尔值会自动转换成适当的形式。

    应注意的是在程序上对浮点数的比较是非常严格的。

    条件操作符

    operator
    use
    description

    &&
    op1 && op2
    当op1和op2都是true时,返回true ;如果op1的值是false,则不运算右边的操作数

    ||
    op1 || op2
    当op1和op2有一个是true时,返回true;如果op1的值是true,则不运算右边的操作数

    !
    ! op
    当op是false时,返回true;当op是true时,返回false

    &
    op(www.111cn.net)1 & op2
    运算op1和op2;如果op1和op2都是布尔值,而且都等于true,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位与操作

    |
    op1 | op2
    运算op1和op2;如果op1和op2都是布尔值,而且有一个等于true,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位或操作

    ^
    op1 ^ op2
    运算op1和op2;如果op1和op2不同,即如果有一个是true,另一个不是,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位异或操作

    短路
    当使用逻辑操作符的时候会遇到一种短路状况。既一但能够明确无误地确定整个表达式的值,就不再计算表达式余下的部分了。因此,整个逻辑表达式靠后的部分有可能不再计算。下面的例子展示了短路现象

    public class shortcircuit{

    static boolean test1(int val){

    system.out.println(“test1(“+val+”)”);

    system.out.println(“result:”+(val<1));

    return val<1

    }

    static boolean test2(int val){

    system.out.println(“test1(“+val+”)”);

    system.out.println(“result:”+(val<2));

    return val<2

    }

    static boolean test3(int val){

    system.out.println(“test1(“+val+”)”);

    system.out.println(“result:”+(val<3));

    return val<3

    }

    public static void main(string [] args){

    boolean b=test1(0)&&test2(2)&&test3(2);

    system.out.println(“expression is “ + b);

    }

    }

    输出

    test1(0)

    result:true

    test(2)

    result:false

    expression is false

    由于调用了3个方法你会很自然的觉得3个方法应该都被运行,但实际上输出并非这样,因为在第二次测试产生一个false结果。由于这意味着整个表达式肯定为false,所以没必要继续计算剩余的表达式,那样只是浪费。“短路“一次正来源于此。实际上,逻辑上所有的逻辑表达式都有一部分不必计算,那将获得性能的提升。
    from:http://www.111cn.net/net/net/37363.htm

  • 相关阅读:
    插入数据Oracle异常ORA-01502: 索引或这类索引的分区处于不可用状态
    关于分布式系统的数据一致性问题
    C#网络编程系列文章之Socket实现异步TCP服务器
    大型网站架构与分布式架构
    序列化表单为json
    学习wcf
    C# 知识梳理
    Java前端控制器模式
    Java策略模式
    Java责任链模式
  • 原文地址:https://www.cnblogs.com/alibai/p/4104557.html
Copyright © 2020-2023  润新知