黑马程序员技术交流社区

标题: 逻辑运算符 [打印本页]

作者: Animal    时间: 2015-6-5 22:37
标题: 逻辑运算符
逻辑运算符:
        概述:就是用于连接结果是boolean类型的表达式的。
        表达式:由运算符连接起来的式子。(由变量或者常量组成)
       
        &:逻辑与。并且。有假则假。
        |:逻辑或。或者。有真则真。
        !:逻辑非。以前为假,现在为真,以前为真,现在为假。正对同一个表达式来操作的。
        ^:逻辑异或。        相同为假,不同为真。

        &&:短路与 前边如果出现了false,后边将不再执行。
        ||:短路或 前边如果出现了true,后边将不再执行。

        &&跟&的区别:
                &&是短路与,&是逻辑与。他们的特点都是有假则假。但是,
                短路与的时候,前边的表达式如果出现了false,后边将不再执行。
                逻辑与的时候,所有的表达式都会执行。
        开发常用:
                &&,||,!
位运算符:
        概述:就是用来计算二进制数据的(可以把0看做false,1看做是true)。
        &:按位与         有0则0。
        |: 按位或         有1则1。
        ^: 按位异或  相同为0,不同为1.
        ~: 按位取反  针对所有的二进制位,1变0,0变1。
                                 结果其实相当于该值+1,然后取反。
                00001010  10  按位取反:-11
                1、求它的原码00001010,
                2、求它的反码00001010,
                3、求他的补码00001010。
                4、针对第3步的补码,进行取反操作。11110101
                5、把第四步得到的结果作为补码再来运算,求出它的反码:11110100。
                6、求第5步的原码。
                        11110100
                        10001011
       
        <<:左移。最高位舍弃,右边的空缺位用0补齐。
        >>:右移。看最高位是0,还是1,如果是0,空缺位就用0补齐,如果是1,空缺位就用1补齐。
        >>>:无符号右移。 不管最高位是0还是1,空缺位都用0补齐。
        总结:
                向左移动(增大)或者向右移动(减小),就是增大或者减小2的指定次幂。

        思考:
                1、请用高效的形式写出:2*8  2<<3
                2、交换两个变量。
                        int a = 10;
                        int b = 20;
                第一种做法:用第三方变量来做。(开发用)
                        int temp = a;
                        a = b;
                        b = temp;
                第二种做法:用位异或来做。(面试用)
                        特点:一个数据对同一个数据位异或两次,值不变。
                        a = a^b;   //a=a^b  b的值不发生变化
                        b = a^b;   //b= a^b^b  b=a,a=a^b
                        a = a^b;  // a= a^b^a  a=b;
                第三种做法:
                        仅适用于基本类型(boolean类型除外)。
                        用算术运算符。
                        a = a + b; //a=30,b=20
                        b = a - b; //a=30,b=10,
                        a = a - b; //a=20,b=10



条件运算符:
        格式:
                条件表达式?表达式1:表达式2;
        注意:
                条件表达式的结果必须为boolean类型。
        执行顺序:
                如果条件表达式的结果是true,就执行表达式1,
                如果天健表示的结果是false,就执行表达式2。
                int y = 10;
                int x = y>5?'a':20;
        思考:
                表达式1和表达式2的数据类型必须一样吗?
                不一定。只要包含隐式类型转换就可以。
                推荐:一般写同样的数据类型。

Java中的流程控制语句(结构)
        1、顺序结构:代码是从上往下,从左往右依次逐行来执行的。
        2、选择结构:根据给定的判断或者选择语句从而来决定执行顺序.
                A:判断语句
                        if
                B:选择语句
                        switch-case
        3、循环结构:就是重复的做某件事情。

if语句的第一种形式:
        if(条件表达式)
        {
                语句体;
        }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2