都可以用于结束循环你知道break,continue,return之间的区别吗?

在 Java 中,breakcontinuereturn 是三个不同的关键字,它们在程序中的作用和使用场景有着不同的目的。为了区分它们之间的异同,我们就来根据它们的各自的使用场景来分析它们之间的异同吧。

break

首先我们都知道编程语言都是使用英文来进行编程的(当然也有易语言使用英文编程),所以作为一个关键字的前,它还是一个英文单词。所以我们先来看看它的单词含义:

image.png

我们可以看到:

  1. 打破
  2. 终止
  3. 中断

所以我们可以知道,它是一个「终止」操作。可以用来终止循环,终止switch语句。

 

java

复制代码

for(int i=0;i<100;++i){ if(i==5){ break; } System.out.println(i); }

执行以上代码,输出

 

txt

复制代码

0 1 2 3 4

当i=5时,满足条件进入if语句,执行break。中断了这个循环操作。

 

java

复制代码

public static void main(String[] args) { int val = 10; int num = 0; switch (val) { case (5): num = 5; case (10): num = 10; case (20): num = 20; default: num = 100; } System.out.println(num); }

以上会输出什么?给你3秒钟回答,1,2,3。 答案是

 

txt

复制代码

100

是不是和你想的不一样,为什么不是10?其实num的值是存在了一个变化过程:

  1. 首先num初始化赋值为0。
  2. 接着val==10符合条件,num赋值为10。
  3. 接着进入default条件,num赋值为100.

是不是代码自己设计的和自己想的不一样。本来想的用if表达是下面这样

 

java

复制代码

public static void main(String[] args) { int val = 10; int num = 0; if (val == 5) { num = 5; } else if (val == 10) { num = 10; } else if (val == 20) { num = 20; } else { num = 100; } }

那么问题出在哪呢?其实就出在了每个case操作最后少了一个break,switch和以上不一样的是如果没有break进行中断那么只要每个case条件为true就都会进入。而不是第一个符合了就不会继续后面的case条件比较了。

 

java

复制代码

public static void main(String[] args) { int val = 10; int num = 0; switch (val) { case (5): num = 5; break; case (10): num = 10; break; case (20): num = 20; break; default: num = 100; } System.out.println(num); }

输出

 

txt

复制代码

10

switch用的相对于if还是比较少的,所以大家一定要记得使用break。要不然一时半会意识不到这个情况,不要问我为什么知道。。。

continue

image.png

continue含义为:继续。那么是继续什么呢?continue也是用于循环中的,也是”结束“循环,不过结束的是当前此次循环。而break是结束之后的所有循环。

 

java

复制代码

for(int i=0;i<10;++i){ if(i%2==0){ continue; } System.out.println(i); }

输出

 

txt

复制代码

1 3 5 7 9

根据代码和英文含义来说:是结束当前这次符合条件的循环(后面的循环体中的代码不会再执行,条件为:i为偶数),而继续后面的循环。用于跳过循环体中余下的代码,直接进入下一次循环的迭代。

如果以上代码换成break,那么就只会输出1就结束了。这就是它和break之间的区别了。

return

image.png

return的含义其实很好理解就是:返回。

是Java中用于返回方法的返回值所用的关键字。当方法为void时,return可以被省略。否则不能被省略,也不能通过编译。这是return的主要用法。

不过在一些情况下return和break之间的作用是一样的。

 

java

复制代码

public static void main(String[] args) { for (int i = 0; i < 10; ++i) { if (i == 5) { return; } System.out.println(i); } }

 

java

复制代码

public static void main(String[] args) { for (int i = 0; i < 10; ++i) { if (i == 5) { break; } System.out.println(i); } }

两者的输出都为

 

txt

复制代码

0 1 2 3 4

那么它们之间的区别是什么呢,除了上面描述return的职能之外。最大的区别就是break是只能结束于当前循环体。

 

java

复制代码

public static void main(String[] args) { for (int i = 0; i < 10; ++i) { for (int j=0;j<3;++j){ if(j==2){ return; } System.out.print(i+":"+j+"\t"); } System.out.println(); } }

输出

 

txt

复制代码

0:0 0:1 1:0 1:1 2:0 2:1 3:0 3:1 4:0 4:1 5:0 5:1 6:0 6:1 7:0 7:1 8:0 8:1 9:0 9:1

每次循环只要内存循环j==2时,就结束内存循环中断了当前循环体,接着循环外层。而return则不一样

 

java

复制代码

public static void main(String[] args) { for (int i = 0; i < 10; ++i) { for (int j=0;j<3;++j){ if(j==2){ return; } System.out.print(i+":"+j+"\t"); } System.out.println(); } }

输出

 

txt

复制代码

0:0 0:1

return是直接结束了整个方法,在jvm虚拟机中直接把这个栈帧给pop出去了。

总结

  1. break、continue、return都可以结束循环。不过存在差异。
  2. break是中断循环,是包含了之后的循环。而continue则是符合条件的循环,后面的循环还会进行判断运行。
  3. break中断的是当前的循环体,即最近的循环体。在方法返回类型为void时,单层循环中break和return的作用是一样的。但是存在多重循环体则作用不一样,return是直接结束了当前方法。将这个栈帧给弹出去了。

本文偏向基础,不过越基础的东西我们就要更牢牢的掌握。莫以”知“小而不为~

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值