选择结构语句

选择结构语句
选择结构之if语句
if语句格式1
if(关系表达式){
    
    语句体;
}
执行流程:
    先判断关系表达式看其结果是true还是false;
    如果是true就执行语句体;
    如果是false就不执行语句体
注意事项:
    1)关系表达式无论简单还是复杂,结果都是boolean类型;
    例:
        int a = 3;
        int b = 4;
        if(a = b){
            System.out.println("a和b相等") ;
        }     
   		 报错:错误: 不兼容的类型: int无法转换为boolean
          报错原因分析:因为表达式结果的boolean型,而a = b 是将b的值赋给了a,而a留下来判断,且a的值是int型,所以报错
       如果是:
            boolean bool = true ;
            boolean bool2 = true ;
            if(bool = bool2){
                System.out.println("bool和bool2的值相等");
            }  //就不会报错:输出结果如下   
                    //E:\Java\firstStage\studyNotes\date_12_27_选择结构语句\code>java IfDemo
                    //bool和bool2的值相等
    2if后面的左大括号的地方不能有分号(;);分号表示语句结束,那么此时的if条件判断就没有意义,后面{}得内容就表示局部代码块,限定局部变量的生命周期。
if语句格式2
if(关系表达式){
    语句体1;
}else{
    语句体2;
}
执行流程:
    先判断关系表达式看其结果是true还是false;
    如果是true就执行语句体1;
    如果是false就执行语句体2。
应用:
    判断两个数据是否相同;
    输出两个数中较大的值;
    奇数和偶数的判断
if...else...和三元运算符:都是根据判断条件后,给出两个结果,二者相似,在某些情况下可以相互转换
    区别:
    1)三目运算符都可以使用if...else...语句改进,但反之,不一定
	2)当if语句控制的语句体是一条输出语句时,就不能用三元运算符转换。因为三元运算符是一个运算符,它只能操作具体的数据结果值,必须要有一个结果返回,而输出语句不能作为一个返回结果
        例:判断是奇数还是偶数
        //if...else...语句
        if(x % 2 == 0){
			System.out.println("这个数据是偶数") ;
		}else{
			System.out.println("这个数据是奇数") ;
		}
		//三目运算符,只能用下面方法,表达式1、2不能是语句
        String str = (x % 2==0)? "偶数":"奇数" ;//三目运算符输出不了语句,可以输出字符串
        System.out.println(str) ;

if语句格式3
if(关系表达式1){
    语句体1;
}else if(关系表达式2){
    语句体2;
}
...
  else{
      语句体n;
  }
执行流程:
        首先判断关系表达式1看其结果是true还是false
        如果是true就执行语句体1
        如果是false就继续判断关系表达式2看其结果是true还是false
        如果是true就执行语句体2
        如果是false就继续判断关系表达式…看其结果是true还是false
        …
        如果没有任何关系表达式为true,就执行语句体n。
需要注意的是,在判断某些条件时,我们要对
    1)错误数据:比如:根据月份判断季节,如果输入负数,我们应该加上对超出范围内的数据的判断,都属于"非法数据"2)正确数据:范围内的数据;
    3)边界数据:临界值。
    例:键盘录入一个月份的值,判断季节(不考虑特殊的月份值)
					3,4,5   春季
					6,7,8   夏季
					9,10,11 秋季
					12,1,2  冬季
    //导包
    import java.util.Scanner ;
    class IfTest2{
        public static void main(String[] args){
            //创建键盘录入对象
            Scanner sc  = new Scanner(System.in) ;
            //提示输入数据
            System.out.println("请您输入月份的值:") ;
            int month = sc.nextInt() ;
            //条件判断
            if(month >12 || month <= 0){
                System.out.println("对不起,地球没有该月份!") ;
            }else if(month>=3 && month<=5){
                System.out.println("当前是春季") ;
            }else if(month>=6 && month<=8){
                System.out.println("当前是夏季") ;
            }else if(month>= 9 && month <=11){
                System.out.println("当前是秋季") ;
            }else{
                System.out.println("冬季!") ;
            }
        }
    }
输出结果:
    E:\Java\firstStage\studyNotes\date_12_27_选择结构语句\code>java IfTest
    请您输入月份的值:
    12
    冬季!
选择结构之switch语句
switch(表达式){
    case1:
        语句体1;
        break;
    case2:
        语句体2;
        break;
     ...
     default:
        语句体n;
        break;
}
执行流程:
    1)判断表达式值和case的值是否相等,如果匹配,执行语句体1break结束;
    2)如果case1不匹配,继续和case后面的值2进行比较,如果匹配,执行语句体2break结束;
    ...
    n)如果上面的case的值和switch中表达式的结果都不匹配,那么执行default语句,然后程序默认到末尾结束,break结束
注意事项:
    1case后面的值只能是常量,不能是变量,且多个case后的值不能出现相同的;
    2case语句中的break必须带上,否则会造成:"case穿透"现象(解释:如果某个case已经匹配了,此时如果没有break,那么就继续往下执行,但不与下面的case值进行比较,只执行语句体,直至遇到breakswitch才结束)(视需求,可以利用case穿透完成一些需求,如输入月份,输出对应的季节)
    3switch的结束条件是:
    		a)语句break结束;
    		b)程序默认执行到末尾。
    4default语句可以在语句中的任何位置,不影响程序的执行流程(default的执行:当前case中都没有匹配的话,执行default)
    5default可以省略吗?可以省略。一般不建议。除非判断的值是固定的。(单选题)break可以省略吗?可以省略,一般不建议。否则结果可能不是你想要的

面试题:
switch中的表达式,它可以是什么样的数据类型呢?
	基本的能够使用的数据类型:
			byte,short,char,int
			JDK5以后,可以跟枚举 (enum)
			JDK7以后,可以是String类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值