美文网首页
003-运算符&程序流程控制语句-笔记

003-运算符&程序流程控制语句-笔记

作者: MrZhisheng | 来源:发表于2017-09-15 19:54 被阅读0次

    位运算符
    ~(按位取反):就是针对这个二进制数据,所有的0变1,1变0.
    比如:

    public class OperatorDemo1 {
        public static void main(String[] args) {
            int a = 3;
            int b = 4;
            System.out.println(a & b);//0
            System.out.println(a | b);//7
            System.out.println(a ^ b);//7
            System.out.println(~b);//-5
        }
    }
    
    

    b:00000000 00000000 00000000 00000100
    ~按位取反,得
    (补码) 11111111 11111111 11111111 11111011
    (反码) 11111111 11111111 11111111 11111010
    (原码) 10000000 00000000 00000000 00000101
    即为-5

    "<<" 左移:左边高位舍弃,右边空出来的用0补齐。
    ">>" 右移:如果最高位是0,左边被移空的位就填入0;如果最高位是1,左边被移空的位就填入1。
    ">>>" 无符号右移
    向左移动或向右移动,其实就是把数据增大或缩小2的制定次幂。

    public class OperatorDemo2{
        public static void main(String[] args) {
            
            //<<左移
            System.out.println(16<<2);
            //16*2^2 = 64
            
            //>>右移
            System.out.println(16>>2);
            
            //>>>无符号右移
            System.out.println(16>>>2);
        }
    }
    

    练习1:请用最高效率写出2乘以8这个式子。

    public class OperatorDemo3 {
        public static void main(String[] args) {
            System.out.println(2<<3);
        }
    }
    /*output:
      16
    */
    

    练习2:请把两个数据交换,int a = 10,int b =20。

    public class OperatorDemo4 {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
            int temp = a;
            a = b;
            b = temp;
            System.out.println(" a = " + a);
            System.out.println(" b = " + b);
        }
    }
    /*output:
       a = 20
       b = 10
    */
    

    练习2第二种方法:
    使用^(位运算符)
    特点:一个数据对同一个数据^(位运算两次),数据不变。

    public class OperatorDemo5 {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
            a = a ^ b;
            b = a ^ b;//a ^ b ^ b = a
            a = a ^ b;//a ^ a ^ b = b
            System.out.println(a + "***" + b);
        }
    }
    /*output:
       a = 20
       b = 10
    */
    

    条件运算符(三元运算符)
    表达式:

    (条件表达式)?表达式1:表达式2;
    
    //注意:条件表达式说明这里将来只能是结果为true或false的表达式。
    

    如果表达式为true,则表达式1为结果;
    如果表达式为false,则表达式2为结果。

    public class OperatorDemo6 {
        public static void main(String[] args) {
            int x = 100;
            int y = (x > 50) ? 100 : 200;
            System.out.println(y);//output:100
            
            //复杂点
            int z = (x > 200) ? (y <40 ? 100 : 200) : (y > 100 ? 300 : 400);
            System.out.println(z);//output:400
        }
    }
    

    流程控制语句

    • 顺序结构
    • 选择结构
    • 循环结构

    选择结构:if语句
    格式一:

    if (条件表达式) {
        语句体
    }
    //如果条件表达式返回值为true,则执行语句体;false则什么都不做。
    

    可不可以不写{}呢?我们试一下:

    public class IfDemo {
        public static void main(String[] args) {
            int x = 20;
            if (x > 100)
                System.out.println("Hello");
                System.out.println("World");
        }
    }
    /*
    output:World
    */
    

    运行结果证明if语句后不写{}可以运行,但它只能控制后面的第一条语句,如想控制多条,必须加{}。

    相关文章

      网友评论

          本文标题:003-运算符&程序流程控制语句-笔记

          本文链接:https://www.haomeiwen.com/subject/etidsxtx.html