continue,break,return和finally的用法和实例说明

continue,break和return大家再熟悉不过了,今天主要对这三个关键字的使用细节和三者之间的区别进行一个简单的总结。

continue和break最常用也是最基础的,所以在这里就不去列举代码实例进行说明了。
continue的作用:如果你在循环语句内使用continue,当执行到continue时,本次循环结束进行下一次的循环,而continue后的的代码将不会被执行。
break的作用:主要有两种用法一是结束循环体,二是在switch中结束case。不过这里要特殊说明的是带标签的break,虽然不是很常用,不过大家可以了解一下。
public class Test
{
	public static void main(String[] args){
	{
	back:for(int i = 0;i < 5;i++){
	if (i == 2)
	{System.out.println("break");
	break back;
	}
	}
	System.out.println("end");}
	}
}

运行结果:break

  end

再来看下面这段代码

public class Test
{
	public static void main(String[] args){
	back:{
	for(int i = 0;i < 5;i++){
	if (i == 2)
	{System.out.println("break");
	break back;
	}
	}
	System.out.println("end");}
	}
}
运行结果:break


接下来重点说说return,return可以返回值也可以返回空值,一直对return空值有所疑问,于是做了一个实验。

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("begin");
		func1();
		System.out.println("end");
	} 
	public static void func1(){
		System.out.println("func1 begin");
		for(int i=0;i<5;i++){
			if(i==2){
				return;
			}
			System.out.println("i="+i);
		}
		System.out.println("func1 end");
	}
}
运行结果:begin
  func1 begin
  i=0
  i=1
  end

当执行到return;的时候返回到了函数被调用的地方。

还有一个疑问就是return和finally块中的代码谁先执行,来看下面的代码

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("begin");
		int j=func1();
		System.out.println("j="+j);
		System.out.println("end");
	} 
	public static int func1(){
		System.out.println("func1 begin");
		try{
			for(int i=0;i<5;i++){
			if(i==2){
				return i;
			}
			System.out.println("i="+i);
			}
		}catch (Exception e) {
			// TODO: handle exception
			System.out.println("catch");
		}finally{
			System.out.println("finally");
		}
		System.out.println("func1 end");
		return -1;
	}
运行结果:begin
  func1 begin
  i=0
  i=1
  finally

  j=2
  end
通过以上结果来看finally中的语句先于return来执行的。

最后给大家看一个很有意思的情况

public int func(){
        while (isTrue()) return 4;
    }
 boolean isTrue(){
    return true;
  }
以上代码会报错。

public int func(){
        while (isTrue())
return 4;
return 0;
    }
 boolean isTrue(){
    return true;
  }
这样就不会报错。

原因是编译器并不知道isTrue()返回的值是什么,所以它不知道当isTrue()为假时该怎么处理。


转帖请注明出处 http://blog.youkuaiyun.com/MichaelFeng726 谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值