一、引言
    选择语句要用到条件。条件就是布尔表达式。
二、Boolean数据类型
    1、比较运算符,Java提供六种比较运算符,用于比较数值,也可以对字符进行比较。
        运算符 名称 结果
       

< 
  小于 
true or false 

        <= 
  小于等于 
true or false 

        > 
  大于 
true or false 

        >= 
  大于等于 
true or false 

        == 
  等于 
true or false 

        != 
  不等于 
true or false


    2、布尔变量
        具有布尔值的变量称为布尔变量。
    3、boolean数据类型
        boolean数据类型用于声明布尔型变量。
    4、布尔直接量
        true和false。
三、一个简单的数学学习工具
四、if语句
    Java有几种类型的选择语句:单向if语句、双向if语句、嵌套if语句、switch语句和条件表达式。
    单向if语句
    1、语法:
        if(布尔表达式) {
            语句(组);
        }
    2、流程图:
        布尔表达式?真?语句(组)?结束;
                            ?假?结束;
    3、注意:
        1)、布尔表达式应该用括号扩住;
        2)、如果花括号内只有一条语句,则可以省略花括号。
五、猜生日
    bk位为整数1,就出现在setk中。
六、双向if语句
    1、语法:
   

if(布尔表达式) { 

            布尔表达式为真时执行的语句(组); 

        } 

        else { 

            布尔表达式为假时执行的语句(组); 

        }


    2、流程图:
        布尔表达式?真?条件为真时执行的语句(组)?结束;
                            ?假?条件为假时执行的语句(组)?结束;
    3、注意:如果花括号中只有一条语句,那就可以省略花括号。
七、嵌套的if语句
    if或if…else语句中可以是其他的if或if…else语句。外层if语句里的内层if语句称为嵌套的。
    内层if语句还可以包含其他if语句,事实上对嵌套的深度没有限制。
八、选择语句中的常见错误
    1、忘记必要的括号
        如果块中只有一条语句,就可以忽略花括号。但是,当需要用花括号将多条语句括在一起时,忘记花括号是一个常见的程序设计错误。
    2、在if行出现错误的分号
        它既不是编译错误也不是运行错误,而是一个逻辑错误。等价于一个带空块的代码。
        当使用下行块风格时,经常会出现这个错误。所以使用行尾块风格可帮助防止出现此类错误。
    3、对布尔值的冗余测试
    4、悬空else出现歧义
九、一个改进的数学学习工具
    Math.random(),返回一个双精度的随机值d且满足0.0<=d<1.0。
十、计算身体质量指数
十一、计算税款
十二、逻辑运算符
    运算符 名称 说明
    ! 非 逻辑非
    && 与 逻辑与
    || 或 逻辑或
    ^ 异或 逻辑异或
    1、警告:
        数学角度:
        

1 <= numberOfDaysInAMonth <= 31


        Java角度:
         

(1 <= numberOfDaysInAMonth) && (numberOfDaysInAMonth <= 31)


    2、注意:
        1)、一个布尔型值变量不能转换为其他类型的值,其他类型的值也不能转换为布尔类型值。
        2)、德模佛定理:
     

!(condition1 && condition2) 和 !condition1 || !condition2 是一样的。 

            !(condition1 || condition2) 和 !condition1 && !condition2 是一样的。


        3)、&&又称为条件与运算符或短路与运算符,而||称为条件或运算符或短路或运算符。
十三、判断闰年
 

isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)


十四、彩票
 

if (guess == lottery) {} 

    else if (guessDigit2 == lotteryDigit1 &&  

    guessDigit1 == lotteryDigit2) {} 

    else if (guessDigit1 == lotteryDigit1 ||  

    guessDigit1 == lotteryDigit2 ||  

    guessDigit2 == lotteryDigit1 ||  

    guessDigit2 == lotteryDigit2) {} 

    else {}


十五、Switch语句
    1、完整语法:
 

Switch(witch表达式) { 

            case 值1:语句(组)1; 

                break;  

            case 值2:语句(组)2; 

                break;  

            … 

            case 值N:语句(组)Nv; 

                break;  

            default:默认情况下执行的语句(组); 

        }


    2、switch语句遵从下述规则:
        1)、switch表达式必须能计算出一个char、byte、short或int型值,并且必须总是要用括号扩住。
        2)、value1,…,valueNv必须与switch表达式的值具有相同的数据类型,且是常量表达式。
        3)、当switch表达式的值与case语句的值相匹配时,执行从该case开始的语句,直到遇到一个break语句或到达该switch语句的末端。
        4)、关键字break是可选的。break语句会立即终止整个switch语句。
        5)、default是可选的,用来指定没有一个指定的case与switch表达式匹配时应该采取的操作。
        6)、case语句是顺序检测的。
十六、条件表达式
    1、语法:
     

boolean-expression ? expression1 : expression2;(布尔表达式?表达式1:表达式2)


        三目运算符
十七、格式化控制台输出
    printf方法的语法:
     

System.out.printf(fromat, item1,item2,…,itemk);


        这里的format是指一个子串和格式化标示符组成的字符串。
        格式标示符指定每个条目应该如何显示,条目可以是数值、字符、字符串或布尔值。
        一个标示符是以百分号(%)开头的转换码
    常用的标示符:
        标示符 输出
        %b 布尔值
        %c 字符
        %d 十进制整数
        %f 浮点数
        %e 标准科学计数法形式的数
        %s 字符串
     

exp: 

        int count = 1; 

        double amount = 1.0; 

        System.out.printf(‘%d%f’,count,amount);


    可以在标示符中指定宽度和精度。
        指定宽度和精度的例子
        举例 输出
        %5c 输出字符并在这个字符条目前面加4个空格
        %6b 输出boolean值,在false前面加一个空格,在true前面加两个空格。
        %5d 输出整数条目,宽度至少为5。如果该条目的数字位数小于5,就在前面加空格。如果该条目的位数大于5,则自动增加宽度。
        %10.2f 输出的浮点数宽度至少为10,包括小数点和小数点后两位。这样,给小数点前分配了7位。
        如果该项小数点的位数小于7,就在数字前面加空格。如果该项小数点前的位数大于7,则自动增加宽度。
        %10.2e 输出的浮点条目的宽度至少为10,包括小数点,小数点后两位和指数部分。如果该科学计数法显示的数字小于10,就给数前加空格。
        %12s 输出的字符串宽度至少为12。如果该字符串条目小于12个字符,就在该条目前加空格。如果该字符串条目多于12个字符,则自动增加宽度。
    默认情况下,输出是右对齐的。可以在标示符中放一个负号(-),表明该条目在特定区域中的输出是左对齐的。
十八、运算符的优先级和结合方向
    运算符的优先级
        优先级 运算符
        最高级 var++ 和 var-- (后置运算符)
        +, - (一元加号和一元减号), ++var and --var (前置运算符)
        (type) (类型转换)
        ! (非)
        *, /, % (乘法、除法和求余运算)
        +, - (二元加法和减法)
        <, <=, >, >= (比较运算符)
        ==, != (相等运算符)
        ^ (异或)
        && (条件与 )
        || (条件或)
        最低级 =, +=, -=, *=, /=, %= (赋值运算符)
    结合方向
        如果相邻运算符的优先级相同,则结合方向决定它们的执行顺序。
        除了赋值运算符之外,所有的二元运算符都是左结合的。
        赋值运算符是右结合的。
十九、(GUI)确认对话框
    下面的语句创建一个确认对话框:
     

int option = JOptionPane.showConfirmDialog(null,”Continue”);