Java学习笔记——分支语句(if、switch)

分支语句

1.三种程序基本结构
2.if语句
3.switch语句

第一节:程序基本结构

  1. 顺序结构
  2. 选择结构
  3. 循环结构

1.1 顺序结构

程序从上到下一行一行的执行代码,没有判断和中转。

1.2 选择结构

有选择性的执行或者跳过指定代码

1.3 循环结构

重复执行一段代码,直到条件不成立。

Java的选择结构使用选择语句来实现:

1 if语句

2 switch语句

第二节:if语句

if语句有四种使用形式:

  • if(条件){…}
  • if(条件){…}else{…}
  • if(条件){…}else if(条件){…}else{…}
  • if(条件){ if(条件){…} } else {…}
    2.1 简单if语句

if ( 条件 ) {

    //代码块 

}

示例1:java成绩如果大于60,奖励一颗糖

    //简单的if语句:
    //成绩如果大于60   给奖励
    int score = 10;
    if(score>60){
        System.out.println("给颗糖");
    }   

示例2:Java成绩大于98分,而且Html成绩大于80分,老师奖励他;或者Java成绩等于100分,Html成绩大于70分,老师也可以奖励他。

if((score1 >98 && score2 > 80 ) || ( score1 == 100 && score2 > 70 )){
    //奖励
}

2.2 if-else语句

if ( 条件 ) {

    //代码块1  

}else{

   //代码块2 

}

示例1:如果是男生就永远18岁,否则永远16岁。

        // 如果是男生   就永远18岁
        // 如果是 女生  永远16岁        
        char c = '女';
        if(c == '男'){// boolean 结果是true  执行if中   否则执行else中的
            System.out.println("永远18岁");
        }else{
            System.out.println("永远16岁");
        }

上机练习1:买彩票

如果体彩中了500万,我买车、买房、非洲旅游

如果没中,继续买。

public static void main(String[] args){
        //1创建input对象
        Scanner input=new Scanner(System.in);
        //2提示
        System.out.println("中500万吗?Y/N");
        String answer=input.next();
        //3判断
        if(answer.equals("y")){  //字符串的判断使用equals方法 
            System.out.println("买房、买车、欧洲旅游...");    
        }else{
            System.out.println("继续买....");
        }   
    }

注意:字符串的判断使用equals方法

上机练习2:输入四位数字的会员号的百位数字等于产生的随机数字即为幸运会员,提示恭喜您中奖了,否则没中奖。

提示: int random=(int)(Math.random()*10); //随机数

注意:Math.random();产生0-1之间的一个数字,含0不含1

public static void main(String[] args){
        //创建Input对象
        Scanner input=new Scanner(System.in);
        //提示
        System.out.println("请输入四位的会员号:");
        int member=input.nextInt();

        //百位
        int bai=member/100%10;
        int ran=(int)(Math.random()*10);   //Math.random();产生0-1之间的一个数字,含0不含1 
        if(bai==ran){
            System.out.println("中奖了....旅游去吧");
        }else{
            System.out.println("好好干活...");
        }
    }

2.3 多重if语句

if ( 条件1) {

 //代码块1  

}

else if (条件2) {

 //代码块2 

}

else {

 //代码块3 

}

示例1:如果成绩大于90并且是男生就送个女朋友,成绩大于90并且是女生送个男朋友,否则…

    char c = '女';
    int score = 10; 
    if(score>90 && c=='男'){
            System.out.println("给送个女朋友");   
    }else if(score>90 && c=='女'){
            System.out.println("给送个男朋友");
    }else{
            System.out.println("啥都没有,自己买");
    }

上机练习 1:

我想买车,买什么车决定于我在银行有多少存款

如果我的存款超过500万,我就买保时捷

否则,如果我的存款超过100万,我就买宝马

否则, 如果我的存款超过50万,我就买帕萨特

否则, 如果我的存款超过10万,我就买qq

否则, 如果我的存款10万以下 ,我买捷安特

注意:在多重语句中,如果是区间判断,大的区间在前面,小的区间在后面

2.4 嵌套if语句

if(条件1) {

  if(条件2) {

          代码块1

  } else {

          代码块2

  }

} else {

  代码块3

}

示例:如果成绩大于90 如果是男生 送个女朋友, 如果是女生送个男朋友

    // 如果成绩大于90   如果是男生    如果是女生
        int score = 10;
        if(score>90){
            if(c=='男'){
                System.out.println("给送个女朋友");
            }else{
                System.out.println("给送个男朋友");
            }
        }

2.5 特殊的if语句(不推荐使用)

        //  特殊形式
        // 必须要求   if 或者 else 语句中只能有一条语句
            if(score>60)
                System.out.println("好学生");
            else
                System.out.println("给送个女朋友");   

上机练习1:输入四个季节:如果春天,输出“春暖花开”,如果是夏天,输出“夏日炎炎”,如果是秋天,则输出”秋高气爽”,如果是冬天,则输出”安静祥和”。

// 1
import java.util.Scanner;

class  Demo8
{
    public static void main(String[] args) 
    {

        //  == 判断基本数据类型内容是否相等
        // 引用数据类型  ==  判断内存地址 
        // 判断内容  String 类型 判断内容 equals

        Scanner sc = new Scanner(System.in);
        String str = sc.next();

    //  boolean falg= str.equals("春天");
       if(str.equals("春天")){
            System.out.println("春暖花开");
        }else if(str.equals("夏天") ){
            System.out.println("夏日炎炎");
        }else if(str.equals("秋天")){
            System.out.println("秋高气爽");
        }else if(str.equals("冬天")){
            System.out.println("安静祥和"); 
        }
    }
   }

第三节: switch语句

3.1 switch语法规则

  1. 表达式expr的值必须是下述几种类型之一:

    byte、short、int、char、enum(枚举);java7之后可以是String。
    
  2. case子句中的值const 必须是常量值(或final的变量),case中的值不能是一个范围

  3. 所有case子句中的值应是不同的,否则会编译出错;
  4. default子句是可选的(不是必须的)
  5. break语句用来在执行完一个case分支后使程序跳出switch语句块;否则会继续执行下去

3.2语法格式

   switch(表达式expr){
        case const1:
            statement1;
            break;
        case const2:
            statement2;
            break;
            … …
        case constN:
            statementN;
            break;
        default:
            statement_dafault;
            break;
    } 

3.3 执行顺序:

1 判断有没有满足 case 的情况,如果满足则执行,如果所有的 case 都不满足需求的时候  执行default中的内容
2 break 帮助跳出switch 语句, 如果执行过程中 没有遇到break 继续向下执行直到遇到break为止

3.4 练习:

练习一: 简单实现switch语句

       int i = 1;
       switch(i){
            case 1:
                System.out.println("Hello World!");
                break;
            case 2:
                System.out.println("Hello World!2");
            case 3:
                System.out.println("Hello World3");
                break;
            default:
                System.out.println("Haaaa");
                break;
        }

练习二: 判断 春夏秋冬

Scanner sc = new Scanner(System.in);
        String str = sc.next();
        switch(str){
            case "春天":
                System.out.println("春暖花开");
                break;
            case "夏天":
                System.out.println("闷热");
                break;
            case "秋天":
                System.out.println("秋高气爽");
                break;
            case "冬天":
                System.out.println("滴水成冰");
                break;
            default:
                System.out.println("火星的");
                break;
        }

练习三: 需求: 利用switch实现一个计算器操作

        Scanner  sc = new Scanner(System.in);
        System.out.println("请输入第一个操作数:");
        int a = sc.nextInt();
        System.out.println("请输入运算符");
        String str = sc.next();
        System.out.println("请输入第二个操作数:");
        int b = sc.nextInt();
        switch(str){
            case "+":
                System.out.println(a+"+"+b+"="+(a+b));
                break;
            case "-":
                System.out.println(a+"-"+b+"="+(a-b));
                break;
            case "*":
                System.out.println(a+""+b+"="+(ab));
                break;
            case "/":
                System.out.println(a+"/"+b+"="+(a/b));
                break;
            case "%":
                System.out.println(a+"%"+b+"="+(a%b));
                break;
            }

3.5 特殊用法 :case穿透

case穿透: 产生这种现象的原因:由于某个case语句中缺少或者漏写break语句所导致的结果.

// 需求:  打印输出指定的月份的天数

        Scanner sc = new Scanner(System.in);

        int month = sc.nextInt();

        switch(month){

            case 1: 

            case 3:             

            case 5:             

            case 7:             

            case 8:             

            case 10:                

            case 12:

                System.out.println("31天");

                break;

            case 2:

                System.out.println("28天");

                break;

            case 4:             

            case 6:             

            case 9:             

            case 11:

                System.out.println("30天");

                break;      

        }

        System.out.println("Hello World!");

    }

多重if和switch的区别

1 都可以处理多分支情况

2 多重if适合做区间判断,switch适合等值判断

总结

1 程序三种基本结构

顺序结构

选择结构

循环结构

java 选择结构:

if

    使用形式

    if(条件){....}

    if(条件){...} else{...}

    if(条件){...} else if(条件){...}else if(条件){...} else{...}

    if(条件){   ...  if(条件){...} } else{...}



switch :等值判断

    switch(变量表达式){

        case 常量1:

            ....

            break;

        case 常量2:

            ....

            break;

    }

变量类型:byte short int char String 枚举

case 常量不能重复 

default 可以省略

break 不要省略,如果省略会出现case穿透

回顾

一、变量的分类——按照数据类型来分:
1.基本数据类型(8种):
1)数值型:
        *整型:byte(-128~127) short int long
        *浮点型: float double
2)字符型:char char类型占的是一个字符=两个字节=十六位
3)布尔型:boolean 注意,布尔类型的变量只有两种值:true false
2.引用数据类型:类、接口、数组、枚举
注意:除了基本数据类型以外的数据类型都是引用数据类型.

二、数据类型转换:
发生的场景:不同类型的变量之间进行运算
数据类型的转换分为两种:
1)自动类型转换:byte short char ==>int==>long==>float==>double
    注意:a.当byte short char 之间进行运算时结果属于int型;
        b.boolean类型不可以转换为其它的数据类型。   
2)强制类型转换:将容量大的数据类型强制转换成容量小的数据类型,必须使用"(目标数据类型)"符号;
    格式是:小的数据类型 = (小的数据类型)大的数据类型。
    注意:强转后会造成精度的损失(丢失),丢的是高位。
三、算术运算符:+ - * / % ++ --
  1.取模:% 取余数,结果的符号取决于被模数的符号。
  2.++:让变量的值自增1
     1)前++:++在变量的前面,先自增1,后运算
     2)后++:++在变量的后面,先运算,再自增1
  3.--:让变量的值自减1
     1)前--:--在变量的前面,先自减1,再运算
     2)后--:--在变量的后面,先运算,再自减1
四、赋值运算符: = += -= *= /= %=
五、比较运算符:== < > <= >= !=
六、逻辑运算符: & && | || ! ^ (运算符两端是条件表达式)
  1.逻辑与和短路与的区别: &  &&
     1)逻辑与:& 无论左端是否为false,右端都会执行。
     2)短路与:&& 只要左端是false,则右端不执行,结果都为false。
  2.逻辑或和短路或的区别:|  ||
     1)逻辑或:| 无论左端是否为true,右端都会执行。
     2)短路或:|| 只要左端是true,则右端不执行,结果都为true。
     注意:在日常开发中,我们建议使用短语与、短路或。

面试题

1.switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
    switch可以作用在所有基本类型上,jdk1.8之后,可以作用在String上。
2.switch中default的位置是否必须出现在最后?
    不一定

你可能感兴趣的:(Java基础)