初识JAVA04:if、switch定值判断、for、while、do…while

流程控制语句

java中的语句结构

​ 顺序结构:从上到下依次执行

​ 选择结构|分支结构:满足条件才会去执行对应的代码

​ 循环结构:重复的执行一些代码

选择结构

​ if语句

​ switch语句

if语句

单选泽|单分支

if(表达式){
​				语句体;}

​ 执行流程:
​ 1.计算表达式,得到一个boolean结果
​ 2.如果结果为true,执行{}中的语句体
​ 3.如果结果为false,就不执行直接跳过if结构

双选择|双分支

if(表达式1){
​				语句体1;}else{
​				语句体2;}

​ 执行流程:
​ 1.计算表达式1,得到一个boolean结果
​ 2.如果结果为true,执行{}中的语句体1
​ 3.如果结果为false,执行{}中的语句体2

多选择|多分支

if(表达式1){
​				语句体1;}else if(表达式2){
​				语句体2;}else if(表达式3){
​				语句体3;}....else{
​				如果以上的if条件都不满足就执行这个语句体n
​			}

注意:
​ 使用多选择与多个单选择之间区别 : 1)语义化结构 2)执行判断次数 3)执行语句体次数

​ 当{}中的语句体只有一句时候,前后的{}可以省略

public class Demo{
    public static void main(String[] args){
        int a=5,b=10;
        if(a>b){
            System.out.println("a比b大");
        }else if(a==b){
            System.out.println("a等于b");
        }else{
            System.out.println("a比b小");
        }
        
    }
}

switch定值判断

switch(表达式){case1:
​			语句体1;break;case2:
​			语句体2;break;case3:
​			语句体3;break;....default:  --> 接盘侠
​			语句体n;break;}

表达式 : 一般为一个 变量或者一个表达式

表达式的类型: byte,short,int,char,枚举(jdk5新增),String(jdk7)

case : 后面接一个定值【byte,short,int,char,枚举(jdk5新增),String(jdk7)】,不能是区间,使用定值与表达式的结果进行判断,相等执行后面对应的语句体,不相等继续向下判断。判断boolean类型的数值可以将boolean类型的数值用其他类型数值代替,例如true使用int类型的0代替,例如false使用int类型的1代替。

break : 结束switch语句

防止case穿透问题,如果没有break;,那么执行完当前分支后会顺序执行该分支下的语句

default : 默认的

​ 如果以上的case后的值与表达式的结果都不相等时候,执行default后的代码

​ 位置可变,可以在switch语句{}的任意位置

if与switch与条件运算符之间的区别:
​ 条件运算符: 根据条件做判断 运算符 结构简单,受限制->判断条件单一,直接根据判断条件获取结果,肯定会得到一个结果

​ 结构复杂使用if或者switch

​ if-> 定值判断,区间判断

​ switch->定值判断

​ 能用switch的都能if,能用if不一定能用switch

​ 建议: 简单合适结构可以条件运算符,复杂的,定值的可以使用switch->都可以使用if

public class Demo{
    public static void main(String[] args){
        int a = 5,b = 10;
        switch(a){		//switch()括号里面的变量类型可以是byte,short,int,char,枚举(jdk5新增),String(jdk7)
            case 5 :
                System.out.println("我是a");		//变量a的值为5所以会输出我是a
                break;
            case 10 :
                System.out.println("我是b");
                break;
            default:
                System.out.println("无");
                break;
        }
    }
}

循环结构

控制一些代码重复执行多次

for循环

while循环

do…while循环

for循环

​ 次数循环,确定区间范围,确定变量变化的情况,进一步确定要循环的次数

for(条件初始化;条件判断;条件变化){

​		重复执行的语句;}

​ 条件初始化: 声明一个变量并且第一次赋值 i

​ 条件判断 : 对变量i的值的判断->结果为boolean的值

​ 条件变化 : 变量i自身值的改变

​ 执行流程:

​ 1.条件初始化,得到一个变量i

​ 2.条件判断的结果->boolean

​ 3.true->执行{}中的代码->false结束循环

​ 4.条件变化

​ 重复执行第2,3,4步骤

public class Demo{
    public static void main(String[] args){
        int sum = 0;
        for(int i = 1;i<=100;i++){		//for()中声明的变量只在for循环中有效,当i>100时结束循环
            sum += i;
        }
        System.out.println("1-100的和为:"+sum);
    }
}
//return:必须放在方法中
//return的主要作用有两点:
//1.返回方法指定类型值
//2.用于方法结束的标志,return 后面的语句不会被执行
public class Test001 {
    public static void main(String[] args) {
        int i;
        System.out.println("return语句之前"+getInfo());
        for (i = 0; i < 5; i++) {
            if(i==3){
                return;//无返回类型,用于方法的结束
            }
            System.out.println(String.format("i=%d",i));
        }
        //return 之后的语句将不会被执行
        System.out.println("return语句之后"+getInfo());
    }
    public static int getInfo(){
        return 1;//有返回类型,返回方法指定类型的返回值

    }}

注意:

​ 循环结构中,如果{}中的语句体只有一句,前后的{}可以省略

​ 循环体重可以使用循环的条件变量i,可以不使用

​ for循环是循环结构中最常用的循环结构

for(;;){
    //死循环,条件一直为true
}

while循环

while 条件循环

条件初始化;

while(条件判断){

​	重复执行的语句体;

​	条件变化;

}

注意 : 循环之间都可以相互转换

public class Demo{
    public static void main(String[] args){
        int i = 1,sum = 0;		//while循环需要先在循环外声明好参与循环的变量
        while(i<=100){
            sum += i;
            i++;
        }
        System.out.println("i的值为"+i);
        System.out.println("1-100的和为:"+sum);
    }
}
while(true){
	//死循环,条件一直为true
}

总结

for( ; ; ) 比 while(true) 好

​ 原因:(底层完全不同)

​ “死循环”有两种写法:for(;;)和while(true),两者有啥区别,为啥源码中多数是for( ; ; )这种形式的,

编译前编译后
while (1);mov eax,1
test eax,eax
je foo+23h
jmp foo+18h
编译前编译后
for (;;);jmp foo+23h

​ 对比之下,for (;;)指令少,不占用寄存器,而且没有判断跳转,比while (1)好

​ 也就是说两者在在宏观上完全一样的逻辑,但是底层完全不一样,for相对于来说更加简洁明了

do…while循环

条件初始化;

do{

​	重复执行的语句;

​	条件变化;

}while(判断条件);

do…while与while之间的区别就是:
do…while无论是否满足条件都至少执行一次
while满足条件执行不满足不执行

注意:
在使用while或者do…while循环的时候,不要丢掉条件变化

public class Demo{
    public static void main(String[] args){
        int i = 1,sum = 0;		//do...while循环需要先在方法中声明好参与循环的变量
        do{
            sum += i;
            i++;
        }while(i<=100);
        System.out.println("i的值为"+i);	//do...while和while循环的区别为,do...while不管条件满足还是不满足至少会执行一次
        System.out.println("1-100的和为:"+sum);
    }
}

break和continue

break与continue
break:
作用 : 终止 结束
应用场景 : switch语句 循环中
continue :
作用 : 跳过当前这一次循环,直接进入到下一次循环
应用场景 : 循环中

public class Demo{
    public static void main(String[] args){
    	int sum = 0;
        for(int i=1;i<=3;i++){
            if(i==1){
                break;
            }
            sum++;
        }
        System.out.println("for循环中加break:"+sum);
        
        sum = 0;	//初始化sum
        for(int i=1;i<=3;i++){
            if(i==1){
                continue;		//当i等于1的时候跳过此次循环,本次不在执行continue;语句后for循环中的语句
            }
            sum++;
        }
        System.out.println("for循环中加continue:"+sum);
        
        sum = 0;
        switch(sum){
            case 0 :
                System.out.println("这是第一个选项");	//当case中没有break;时,会发生case穿透,程序会继续执行下一个case中的代码
            case 1 :
                System.out.println("这是第二个选项");
                break;								//当遇到break;时,会停止switch中代码的执行,结束switch选择
            case 2 :
                System.out.println("这是第三个选项");
                break;
            default:
                System.out.println("这是第缺省选项");
                break;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值