学习Java 之流程控制

1.if语句:

if(布尔表达式){
    //if中需要执行的代码
}
  • 注意:if中的代码是否执行,主要是看这里的“布尔表达式”的结果,如果是true则代码执行,如果是false则不执行。
int a = 6;
if(a%2==0){
    System.out.println("a是偶数 :a = "+a);
    //此时会输出  a是偶数 :a = 6;
}

2.if-else语句:

if(布尔表达式){
    //if中需要执行的代码
}
else{
    //else中需要执行的代码
}

  • 注意:if 和 else 形成了一个组合,特点就是如果if中的代码执行了,那么else中的代码就不会执行,如果if中的代码没有执行,那么就是if和else这两个语句中的代码必定有且只有一个会执行。
int a = 9;
if(a%2==0){
    System.out.println("a 是偶数 :a = "+a);
}
else{
    System.out.println("a 是奇数 :a = "+a);
}
//输出:  a 是奇数 :a = 9;

3.if-else if语句:

if(布尔表达式){
    //if中需要执行的代码
}
else if(布尔表达式){
    //else-if中需要执行的代码
}
    else if(布尔表达式){
    //else-if中需要执行的代码
}
...
  • 注意:if和else-if搭配形成一个组合,这里面的else-if可以出现多次

  • 特点:把条件安装if + else-if
    的编写顺序,依次做出判断,然后其中有一个判断成立的,返回true,那么下面的其他判断就不在进行。在这个组合中,只能会有一个判断执行,任意一个执行后其他都不在判断了。当然也有可能所以判断都不成立,都是返回的false,那么这个所以代码都不会执行了。

int a = 10;
if(a%2==0){
    System.out.println("变量a的值为偶数");
}
else if(a%2==1){
    System.out.println("变量a的值为奇数");
}

4.if-else if-else语句:

if(布尔表达式){
    //if中需要执行的代码
}
else if(布尔表达式){
    //else-if中需要执行的代码
}
else if(布尔表达式){
    //else-if中需要执行的代码
}
...
else{
    //else中需要执行的代码
}
  • 特点:如果前面所有的判断都不成立,那么最后一定会执行else中的代码。

5.if语句的简写形式:

int a = (int)(Math.random()*100);
if(a%5==0){
    System.out.println("余数为0");
}
else if(a%5==1){
    System.out.println("余数为1");
}	 
else if(a%5==2){
    System.out.println("余数为2");
}	 
else if(a%5==3){
    System.out.println("余数为3");
}
else{
    System.out.println("余数为4");
}
	
//可以简写为:

int a = (int)(Math.random()*100);

if(a%5==0) System.out.println("余数为0");

else if(a%5==1) System.out.println("余数为1");
	
else if(a%5==2) System.out.println("余数为2");

else if(a%5==3) System.out.println("余数为3");

else System.out.println("余数为4");	
  • 规则:如果if、else-if、else语句中要执行的代码只有一句,那么可以把外面的大括号省去不写。

6.switch-case语句:

switch(var){
    case1:{
        code 1;
        break;
    }

    case2:{
        code 2;
        break;
    }

    case3:{
        code 3;
        break;
    }

    default:{
        code 1;
    }

}
  • 注意:这里的break关键字,表示退出switch 代码;
  • 注意:这里对比的变量var的类型是有要求的,必须是byte、short、int、char这四种,JDK8中也允许String类型的变量做对比(JDK5以后可以是枚举 ,JDK7以后可以是String,不支持long、float、double、boolean四种基本类型);
  • 注意:使用switch来完成的功能,同样可以使用if来完成,但是使用if完成的功能,使用switch不一定能完成。
int mode = 0;//0 1 2 3
switch(mode){
    case 0:{
        System.out.println("模式0开启");    
        break;
    }

    case 1:{
        System.out.println("模式1开启");    
        break;
    }

    case 2:{
        System.out.println("模式2开启");    
        break;
    }
    
    default:{
        System.out.println("默认模式开启");    
        break;
    }
}
  • 注意:假如mode本次的值是0,那么case 0
    这种情况就成立了,然后执行里面的代码,代码执行完,最后执行break,然后退出整个switch语句,也就是说case 1 2
    default这几种情况的代码就不再执行了,同时也不往下判断了。这一切都是因为执行了break。

  • 如果没写break,那么这时候就会变成另外一种情况:例如:

int mode = 0; switch(mode){
	case 0:{
	    System.out.println("模式0开启");    
	    //break;
	}
	
	case 1:{
	    System.out.println("模式1开启");    
	    //break;
	}
	
	case 2:{
	    System.out.println("模式2开启");    
	    //break;
	}
	
	default:{
	    System.out.println("默认模式开启");    
	    break;
	} 
}
//如果没有break,则会输出:
模式0开启
模式1开启
模式2开启
默认模式开启

//这是因为在最后的default语句才break结束,所以会执行到default中的break语句
  • 这种情况,就是因为代码中没有写break的原因

7.for循环:

for(初始变量;循环条件判断;改变初始变量){
	循环代码
}
  • 直到某一次改变初始变量之后,循环条件变为false,那么这个循环就停止了。
  • 执行流程:
    执行初始化变量
    执行循环条件判断
    如果条件不成立(false)
    循环结束
    如果条件成立(true)
    执行循环代码
    改变初始化变量
    循环条件判断
    如果是判断结果是true
    再次执行循环
    如果是判断结果是false
    循环结束
  • for循环的一些使用方式:
//for循环的常用写法
for(int i=0;i<10;i++){
	System.out.println("hello world");
}

//初始化变量和改变变量的值,是可以写到其他地方的
//这个最后的效果和上面的for循环是一样的
int i = 0;
for(;i<10;){
	System.out.println("hello world");
	i++;
}

//这是一个死循环代码,for的小括号中,只有俩个分号
for(;;){
	System.out.println("hello world");
}

//for循环的大括号中,如果只有一句代码,那么可以把大括号省去不写
for(;;) System.out.println("hello world");

8.while循环:

while(循环条件){
    //循环代码
}
  • 特点:while和for的不同之处在于,for循环需要我们自己控制循环的次数,while循环则不需要控制循环次数
//循环不断的生成[0,9]随机数,直到生成随机数为5的时候,那么就停止这个循环。
int num = -1;
while(num!=5){
    num = (int)(Math.random()*10);
    System.out.println("num = "+num);
}

如果使用for完成上面同样的功能:

方式1:

int num = -1;
for(;;){
	num = (int)(Math.random()*10);
	System.out.println("num = "+num);
	if(num==5){
		break;
	}
}

方式2:

int num = -1;
for(;num!=5;){
	num = (int)(Math.random()*10);
	System.out.println("num = "+num);
}

方式3:

int num = (int)(Math.random()*10);
for(;num!=5;num = (int)(Math.random()*10)){
	System.out.println("num = "+num);
}
System.out.println("num = "+num);

9. do-while循环:

do-while循环和while循环很类似,只是do-while需要先执行循环体中的代码,然后再进行条件判断,是否可以进行一下次循环。

do{
	循环代码
}while(条件判断);

例如:

public void test1(){		
	int a;
	do{
		a = (int)(Math.random()*10);
		System.out.println("a = "+a);
	}while(a!=5);//不会输出5
}

public void test2(){	
	int result = 0;
	int i = 1;
	do{
		result+=i;
		i++;
	}while(i<=100);
	System.out.println("result = "+result);	//输出result=100 后结束	
}

10.break 和 continue 关键字:

break和continue都可以使用在for循环、while、do-while循环中,同时break还可以在switch中使用。

  • break 的意思退出,结束当前的循环或switch代码。
for(int i=0;i<10;i++){
	System.out.println("i = "+i);
	if(i==5){
		break;//i=5,循环结束,输出:0,1,2,3,4
	}
}
  • continue 的意思是结束本次循环,让循环直接进入下一次的运行。
    例如,一个for循环,需要循环10次,在循环第三次的时候,如果满足了个条件,那么我们可以使用continue来结束第三次循环,并且让循环直接进入到第四运行中。
for(int i=0;i<10;i++){	
	if(i==3){
		continue;//i=3,跳过,直接i++,输出:0,1,2,4,5,6,7,8,9
	}
	System.out.println("i = "+i);//不会输出i = 3
}

11.在嵌套循环中使用break 和 continue:

//break:
for(int i=0;i<3;i++){
	for(int j=0;j<5;j++){
		System.out.println("i="+i+"=========");
		if(j==2){
			break;
			System.out.println("j="+j);
			//当j=2时候循环本轮结束
		}		 
	}
}

输出结果:
i=0=========
j=0
j=1
i=1=========
j=0
j=1
i=2=========
j=0
j=1

//continue
for(int i=0;i<3;i++){
	for(int j=0;j<5;j++){
		System.out.println("i="+i+"=========");
		if(j==2){
			continue;
			System.out.println("j="+j);
			//当j=2时候循环本轮结束
		}		 
	}
}

输出结果:
i=0=========
j=0
j=1
j=3
j=4
i=1=========
j=0
j=1
j=3
j=4
i=2=========
j=0
j=1
j=3
j=4

  • 注意,默认情况下,在嵌套循环中,break和continue只能默认对当前循环其作用。

break 和 continue 异同:

  • 相同点:break和continue都可以使用在for循环、while、do-while循环中;break和continue只能默认对当前循环其作用。
  • 不同点1:break还可以在switch中使用,break 的意思退出,结束当前的循环或switch代码。
  • 不同的2:continue 的意思是结束本次循环,让循环直接进入下一次的运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值