3-流程控制、随机数、键盘输入

数据类型转换

问:不同数据类型能否一起运算?
答:能

1.1 自动类型转换(隐式)

概念:不同数据类型运算时,数据范围小的数据类型会自动转换成范围大的数据类型
byte->short->int->long->float->double
格式:范围大的数据类型 变量名 = 范围小的数据类型的值;

1.2 强制类型转换(强转)

概念:使用特定格式将数据范围大的值转换成数据范围小的类型
格式:范围小的数据类型 变量名 = (目标类型)范围大的数据值;
注:
1、基本数据类型不建议使用强制类型转换
2、byte、short、char在运算时,会自动转换成int

流程控制

功能含义:就是控制流程.
不管当前的流程被怎么控制,只要脱离控制,程序依然会顺序执行的。流程控制就是为了让它脱离顺序,达到一定目的。

顺序结构

程序的运行步骤与代码的书写顺序一致

分支结构

if、else

  • 单if结构
    if(条件){
        语句a
    }
    语句b
    逻辑:判断条件是否满足,如果满足则执行语句a,再执行语句b;
反之,直接执行语句b。
  • 标准if-else
    if(条件){
        语句a
    }
    else{
        语句b
    }
    语句c
    逻辑:条件满足,执行语句a;反之,执行语句b;语句c无论如何都会执行。  
注:if、else的是互斥的;if、else中必须有一个被执行

注:
当if()不带大括号的时候它就找if下面的第一个分号;里的内容,如果分号前是空那就什么都不执行。对应else也是一样适用的。

    int i = 3;
    if (i < 2)
        System.out.println("S");
    System.out.println("B");
  • 多条件的if-else
    if(条件1){
        语句a
    }
    else if(条件2){
        语句b
    }
    else if(条件3){
        语句c
    }
    ...
    else{
        语句n
    }
    语句m
    逻辑:依次判断每一个条件,当有一个条件满足时,就执行对应代码段中的语句,然后执行语句m;
如果没有任何一个语句满足条件,则执行最后一个else的语句n,然后再执行语句m。
  • 嵌套的if-else条件
    格式:if或者else的代码块中又有if-else继续进行判断

    选择结构

    关键字:switch、case、break、default

    switch(表达式){
    case 值1:
        语句a
        break;
    case 值2:
        语句b
        break;
    case 值3:
        语句c
        break;
    ...
    default:
        语句d
        break;
    }

逻辑:计算表达式的结果,将此结果与case后的值进行对比,如果相同,则执行该case后的语句;
如果没有一个case后的值与表达式的结果相同,则执行default后的语句。

注:

  1. 表达式中可以放置的数据类型有byte、short、int、char、String、枚举
  2. case后值的类型必须表达式的结果类型一致
  3. case后的值必须唯一
  4. default不是必需的,只有没有任何一次case满足且需要有默认结果时才使用;且位置是任意的,一般放在最后
  5. break的作用是结束整个switch-case结构
  6. 当case判断到有满足条件的时候就执行,如果有break就跳出。没有就继续执行,直到有break。当case不满足条件就跳过这个case执行下一个case。

不使用break的穿透性:break会导致立刻中断跳出。只要没有中断就会继续执行下去,那么把default放在最前面,或者放在中间,case执行了一边再回到default,还会从default往下执行下面的case。

在某一个case值与表达式结果匹配时,不写break,程序会顺序的向下执行,知道遇到下一个break,或者知道switch-case结构的末尾

这是计算月份某一年第几月的第几号是这一年的多少天。
倒着取能够把前面的月份都算上,以后有这样的算法,可以这样计算。
    int sum = 0;

    switch (month) {
        case 12:
            sum += 30;
        case 11:
            sum += 31;
        case 10:
            sum += 30;
        case 9:
            sum += 31;
        case 8:
            sum += 30;
        case 7:
            sum += 31;
        case 6:
            sum += 31;
        case 5:
            sum += 30;
        case 4:
            sum += 31;
        case 3:
            sum += 28;
        case 2:
            sum += 31;
        case 1:
            sum += day;
        

----------------------------------------------------------------
    所有满足条件的月份都可以向下执行
    int month = 5;
    if(month >= 1 && month <= 12){
        switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            System.out.println("大");
            break;
        case 2:
        case 4:
        case 6:
        case 9:
        case 11:
            System.out.println("小");
            break;
    }
------------------------------------------------------------------

先执行一边case发现没有满足条件的,之后执行default,然后发现没有break,又把所有的case又执行了一边。
    int score = 44;
    switch (score / 10) {
    default:
        System.out.println("E");
    case 10:
    case 9:
        System.out.println("A");
    case 8:
        System.out.println("B");
    case 7:
        System.out.println("C");
    case 6:
        System.out.println("D");

    }

    输出:
    E
    A
    B
    C
    D

循环结构

  • 在下一篇day4笔记

随机数、键盘输入

键盘输入java.util.Scanner

使用步骤:

  1. 创建Scanner对象
    Scanner sc = new Scanner(System.in);
  2. 调用接收判断输入的方法
    String s = sc.next();接收字符串 ,返回字符串
    int in = sc.nextInt();接收int数据 ,返回int

随机数

使用步骤:

  1. 创建Random对象
    Random r = new Random();
  2. 调用随机整数的方法
    r.nextInt();随机整个int范围内的数
    r.nextInt(int bound);随机到的数据是0~bound-1,包含0,也包含bound-1
    注:随机 [m,n] 公式 nextInt(n-m+1)+m
    Random random = new Random();
    double randomNum = random.nextInt();
    System.out.println(randomNum);

    想要随机一个一个23-44
    double randomNum = random.nextInt(22)+23;//这里面的22是要考虑到0的感受的
    System.out.println(randomNum);

    想要随机的数就是[m-n] 从m-n的随机数
    公式:(n-m+1)+m

额外

  • 对象和接口都是引用数据类型,引用数据类型传递的是地址
  • 所有条件判断的时候,最先做的是判断合法性,之后才判断。这样可以避免无用的条件判断

猜你喜欢

转载自www.cnblogs.com/macht/p/11547444.html