A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiaweizhang 中级黑马   /  2015-9-18 10:27  /  329 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、算数运算符:

        +        加       
       
        -        减

        *        乘               
       
        /        除---求商数

        %        模---求余数       
       
        i++        后加---先赋值后运算

        i--        后减---先赋值后运算       

        ++i        前加---先运算后赋值

        --i        前减---先运算后赋值
       
二、赋值运算符:
       
        =        赋值                int num = 10; String name = "张三";
        +=        赋值运算        num += 10;        等同于 num = num + 10;
        -=        赋值运算        num -= 10;        等同于 num = num - 10;
        *=        赋值运算        num *= 10;        等同于 num = num * 10;       
        /=        赋值运算        num /= 10;        等同于 num = num / 10;
        %=        赋值运算        num %= 10;        等同于 num = num % 10;

三、比较运算符:结果返回真或假(true or false)
       
        ==        相等于

        !=        不等于

        <        小于

        >        大于

        <=        小于等于

        >=        大于等于
       
代码:        if(num > 10){        //如果num > 10 返回true,执行代码块的语句
           System.out.println(" hello word");
        }

四、逻辑运算符:结果返回 true or false
       
        &        AND(与)                两边条件为true,结果为true  同时满足两个条件 if(num > 10 & num < 20)

        |        OR(或)                一边条件为true,结果为true  满足一个条件
       
        ∧        XOR(异或)        两边条件为true,结果为false  if(num > 10 ^ num < 20)

        !        NOT(非)                判断结果取反        if(!(num > 10))

        &&        AND(短路与)        两边条件为true,结果为true,如果一边条件不满足,则不会执行右边条件,与 & 的区别就是,&还会继续执行右边的判断

        ||        AND(短路或)        一边条件为true,结果为true,如果一边条件不满足,则不会执行右边条件,与 | 的区别就是,| 还会继续执行右边的判断


五、位运算符:对二进制数的运算算法 可开发加密算法
       
        <<        左移                3 << 2 表示 3左移2位,这是一个二进制操作的过程,可以看作是 3×2的2次方 = 12 的运算,移n位就×2的n次方,左移数变大
       
        >>        右移                6 >> 1 表示 6右移1位,可看做 6/2的1次方,6/4 = 1,移n位就/2的n次方,右移数变小

        >>>        无符号右移        无符号右移跟右移是一个意思,不同的是 >>> 无论最高位时什么,右移之后都补0,>> 的话最高位是几,空位就补几

        举例:
                0000-0000 0000-0000 0000-0000 0000-0110   --->右移前    6
                  0000-0000 0000-0000 0000-0000 0000-0110 --->右移2位   6 >> 2
                     0000-0000 0000-0000 0000-0000 0000-0001   --->右移2位后 1

                1111-1111 1111-1111 0000-0000 0000-1100         右移后最高位补1,无符号右移的话最高位还是补0

        &        与运算                6 & 3 = 2 ,两个二进制的比较,1&1=1 1&0=0 0&0=0        最后得出二进制

                                                例:
                                                           1 1 0        ---  6
                                                       & 0 1 1        --- &3
                                                        -------       
                                                        0 1 0        ---  1

        |        或运算                6 | 5 = 7,二进制比较,1|1=1 1|0=1 0|0=0

                                               例:
                                                           1 1 0        ---  6
                                                       | 1 0 1        --- |5
                                                        -------       
                                                        1 1 1        ---  7

       
        ∧        异或运算        6^5 = 3, 6^5^5 = 6 ,二进制比较:1^1=0 1^0=1 0^0=0,一个数异或同一个数两次,结果还是原来那个数(加密解密算法)

                                                例:
                                                           1 1 0        ---  6
                                                       ^ 1 0 1        --- ^5
                                                        -------       
                                                        0 1 1        ---  3

       
        ~        反码运算        ~6 = -7,反码运算就是取反操作,反码6 就是6的二进制取反,结果就等于-7
                                根据补码运算法:数字+1再加符号位就等于结果 6+1=7加符号位取反 =-7 负数同理                 
       
                                例:
                                    0000-0000 0000-0000 0000-0000 0000-0110 = 6               
                                    1111-1111 1111-1111 1111-1111 1111-1001 = -7   --- 取反

六、三元运算符:简化if else 代码

        (条件表达式)?表达式1:表达式2;       
       
        int num1 = 10;
        int num2 = 20;
        int maxNum = (num1 > num2) ? num1: num2;   //num1和num2比较,大的值赋给maxNum;

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马