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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本章将会介绍 模块和源文件访问级别访问控制语法自定义类型子类常量、变量、属性、下标构造器协议扩展泛型类型别名位运算...
    寒桥阅读 4,396评论 0 2
  • 高级运算符(Advanced Operators) 本文参考自苹果官方文档Advanced Operators本页...
    果啤阅读 5,503评论 1 5
  • 高级运算符 文档地址 作为 基本运算符 的补充,Swift 提供了几个高级运算符执行对数传值进行更加复杂的操作。这...
    hrscy阅读 4,278评论 0 2
  • 1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或...
    哈哈哎呦喂阅读 3,907评论 0 0
  • 自从订阅得到专栏,发现学习社区多了,自己很注重学习,注重时间的流失。再学习社区里也发现了很多优秀人才,读了写的文章...
    啊貴阅读 981评论 0 0