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

2017-09-15  本文已影响0人  MrZhisheng

位运算符
~(按位取反):就是针对这个二进制数据,所有的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语句后不写{}可以运行,但它只能控制后面的第一条语句,如想控制多条,必须加{}。

上一篇下一篇

猜你喜欢

热点阅读