位运算-流程控制

知识点:

  1. 位运算

    • &:按位与,两个数都是1,结果才是1.

      image-20200922220220734

    • |:按位或,两个操作数一个是1,结果就是1.

      image-20200922220419606

    • ^ : 按位异或,两个 操作数相同,结果为0;两个 操作数不同,结果为1;

      image-20200922220600250

    • <<:左移,右侧空位补0,高位移出

      • 正数

      image-20200922220808411

      • 负数

      image-20200922220940857

      注意:左移操作,在不越界的情况下,x << n等同于 x 乘以 2 的 n 次幂

    • :右移,左侧空位补最高位,即符号位。
      image-20200922221422049image-20200922221422043

      注意:右移操作,在不越界的情况下, x >> n 等同于 x 除以 2 的 n 次幂

    • :无符号位移,高位补0

  2. 三目运算符: '条件' ?'表达式1' : '表达式2';条件为true时运行表达式1,条件为false时运行表达式2.

    ​ 条件 的结果是布尔类型,只能是 true or false
    ​ 如果 条件 的结果是 true 则返回 表达式1
    ​ 如果 条件 的结果是 false 则返回 表达式2

  3. 三大流程控制:顺序结构,选择结构,循环结构。

    image-20200922222628860

  4. Scanner

    ​ 创建 Scanner 对象,用于获取控制台输入的流

    Scanner input = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
    

    ​ hasNext() 判断还有没有输入的值,如果有返回 true

    boolean hasNext = input.hasNext();
        if (hasNext) {
    // next() 获取输入到的信息,空格和回车会中断获取
    // String next = input.next();
    // nextBoolean() 将获取到的信息,转换成 boolean 类型
    // boolean b = input.nextBoolean();
    //nextInt()将获取到的信息,装换为int型(nextFloat同样)
    // int b = input.nextInt();
    //获取当前行的输入
    String next = input.nextLine();
    System.out.println("你输入的是:" + next);
    }

    ​ close 为关闭Scanner对象

    input.close();
    
  5. 单分支

    ​ 如果if 里的代码只有一句,可以不写{},但是不推荐这么写

  6. 双分支

    ​ 如果条件为true,执行 代码块1,否则执行 代码块2 if (条件){ // 代码块 1 } else{ // 代码块 2 }

    Scanner input = new Scanner(System.in);
        System.out.println("你要找的对象性别:1. 男性; 2. 女性");
    int gender = input.nextInt();
    if (gender == 1) {
    System.out.println("你是个女生!");
    } else {
    System.out.println("你是个爷们儿!");
    }
  7. switch

    switch(表达式){
                case 表达式1:
    // 代码1
    break;
    case 表达式2:
    // 代码2
    break;
    ...
    default:
    // default代码
    break;
    }
  8. while

    计算1~100的和

    int sum = 0; 
        int num = 1;
    while(num < 101) {
    sum += num++;
    }
    System.out.println("1 ~ 100 的和是:" + sum);

    while条件为true是运行,equals:循环输入,直到输入' f '为止

    Scanner input = new Scanner(System.in);
        System.out.println("输入一个字符串:");
    String str = "";
    boolean flag = true;
    while(flag) {
    String next = input.next();
    if ("f".equals(next)) {
    flag = false;
    }else {
    str += next;
    }
    }
    System.out.println(str);
  9. do-while:

    ​ 先执行循环体,在判断执行条件。至少执行一次,

    ​ 计算1~100

    int sum = 0;
        int num = 1;
    do {
    sum += num;
    num ++;
    }while(num <= 100);
    System.out.println(sum);
  10. for: for(表达式1; 表达式2; 表达式3){ // 循环体 }

    • 1.先执行表达式1 2. 执行表达式2,表达式2结果是一个boolean类型的 3. 如果表达式2结果是true 执行循环体 4. 如果表达式2,结果是false 循环结束 5. 循环体执行完毕后,执行表达式3 6. 表达式3 执行完,执行第2步。

    • 表达式1 只执行一次,所以一般用来初始化数据 表达式2 是循环条件 表达式3 一般是修改循环变量

      计算1~100

          int sum = 0;
          int num = 1;
      for (;num < 10;num++)
      sum += num;
      System.out.println(sum);
  11. 跳出循环的三种方式

    • break:在switch中,当执行到break,整个switch都执行局结束 在循环中,执行到 break,循环结束

    • continue 结束本次循环,进行下次循环

    • retrun 表示返回,return 后边什么都没有表示结束当前方法,返回到方法的调用出如果是main方法表示整个程序结束运行

  12. 循环嵌套:循环之间可以相互嵌套

    ​ 循环嵌套的时候可以给循环命名命名之后可以通过控制语句,如 continue、break来控制循环跳出操作

    方法如下:

    outer: for(){
            inner: for(){
    continue outer;
    break outer;
    }
    }

    continue [循环名称];

    ​ 循环名称不写,默认是当前循环,如果写上循环名称,表示操作指定循环名称循环
    ​ eg: continue outer; 表示结束 outer 的本次循环

标签

评论

this is is footer