return, break and continue
最近学习多线程看到了一个描述不太准确的地方,让我对return break continue个语句的不同开始详细了解了一番,之前只是知道怎么使用,不是很深入研究,基本遇到了跳出就用return来解决全部问题。
代码:
public class Test {
public static void main(String[] args) {
try {
Mythread mythread=new Mythread();
mythread.start();
Thread.sleep(1000);
mythread.interrupt();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} class Mythread extends Thread{
public void run(){
super.run();
for(int i=0;i<500000;i++){
if(this.interrupted()){ //判断线程是否停止
System.out.println("STOP!!");
break;
}
System.out.println("i= "+(i+1));
}
System.out.println("END!!!");
}
}
在看这段代码的时候是这样解释的:虽然停止了线程,但是如果for之后还有语句,还是会继续运行的。让我错误的理解为在这里使用break的时候会线程先退出了,然后又重启了。显然这样的理解是不对的,应该是break只是退出了这个for循环语句,线程继续执行直到这个方法结束。
首先,return:
return这个语句是作为返回的语句,将函数或者方法的值返回给主调函数,然后改函数执行结束。
比如:
for(int i=0;i<500000;i++){
if(i==1){
System.out.println("STOP!!");
return 0;
}
System.out.println("i= "+(i+1));
}
这里返回值为0,当i的值为1的时候输出了STOP并且这个函数/方法的返回值为0,然后这个函数就停止执行,return语句直接跳出就跳出了函数,包括函数中的方法。
之后就是 break
break一般作为条件分之或者循环的跳出语句,使程序跳出循环执行之后的继续执行之后的程序。
比如第一个程序中使用的break,程序的for循环遇到线程停止的结果的时候会执行break语句,然后跳出这个for循环,之后继续执行这个方法中之后的语句,知道之后的代码运行完成之后。
最后一个是continue语句
这个语句我使用的很少,基本没有用到过,这个语句就是跳过循环一次继续执行这个,这个应该很好想了。
=========================================
return, break and continue的更多相关文章
- return break 和continue在for循环中的不同作用
平时自己经常在函数里见到return,在switch语句中使用break,而continue则用的不多. 其实这三者都能在for循环中发挥不同的作用,让代码更加灵活. 先说return return是 ...
- break、continue、return
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 浅谈break 、continue、return,goto四种语句的区别。
浅谈break .continue.return三种语句的区别: break,continue,return这三个具有跳转功能的语句在c语言中经常被用到,近期身边有些小伙伴总是把它们的用法搞乱,在这里 ...
- return、break、continue的区别
一.定义 return:语句用于终止当前方法运行,返回到调用该方法的语句处.如有返回值,则在return后面提供相应的返回值. break:其主要用于循环语句和switch语句,其作用均是强行终止语句 ...
- php exit、return、break、continue之间的差别,具体介绍
相信大家在php开发中有几个经常使用的停止程序和循环的keyword的误区( exit.return.break.continue) exit 退出全部脚本,是个函数 return 语言结构的使用方法 ...
- 在jquery中each循环中,要用return false代替break,return true代替continue。
在jquery中each循环中,要用return false代替break,return true代替continue. $.each(data, function (n, value) { if(v ...
- C++中 return,break,continue的用法
引用:https://blog.csdn.net/smf0504/article/details/51315835 https://blog.csdn.net/ting_junhui/article/ ...
- return、break和continue
return.break和continue 这三个关键字有一个共同点,那就是读能让后面的语句不执行,不同的地方就是挑的距离不一样. return很强大,如果一个函数中有一个return,并且执行了,那 ...
- break、continue以及return的区别
break.continue以及return的区别如下: 1.break break用于完全结束一个循环,跳出循环体,不再执行下面的代码.对于多层循环嵌套,如果break语句出现在嵌套循环中的内循环时 ...
随机推荐
- Scala 中使用 akka system 的 scheduler 的例子
这是在scala控制台直接执行的例子. import akka.actor._ import scala.concurrent.duration._ import scala.concurrent ...
- 终于解决了贴吧手机版的一个重大BUG
终于解决了贴吧手机版的一个重大BUG 别诧异虽然同一个域名,但是,PC 和手机打开完全不一样的体验 http://tieba.yunxunmi.com/ 吃点夜校准备做梦去!! 发现 我云贴吧 一个 ...
- (转)搞个这样的APP要多久?心酸啊。
这是一个“如有雷同,纯属巧合”的故事,外加一些废话,大家请勿对号入座.开始了…… 我有些尴尬地拿着水杯,正对面坐着来访的王总,他是在别处打拼的人,这几年据说收获颇丰,见移动互联网如火如荼,自然也想着要 ...
- 【HADR】常见的问题
[hadrpri@oc0644314035 ~]$ db2 start hadr on db org as primary SQL1768N Unable to start HADR. Reason ...
- maven 根据profile,resources,filters来区分部署环境
项目过程中,在不同的阶段,分别需要部署开发环境,测试环境,线上环境.如果都用一套配置文件,很容易弄乱,所以维持多套配置文件很有必要. maven提供了一组属性以供开发人员灵活搭配,可以根据环境来打包, ...
- shiro学习笔记_0400_自定义realm实现身份认证
自定义Realm实现身份认证 先来看下Realm的类继承关系: Realm接口有三个方法,最重要的是第三个方法: a) String getName():返回此realm的名字 b) boolean ...
- DotNetCore跨平台~autofac属性的自动注入
回到目录 在使用autofac这个DI工具时,我们一般使用的是构造方法注入,而dotnetcore的标准框架里也集成了构造方法注入,而属性注入在一些场景下,表现的更为灵活,像java的spring框架 ...
- Java 中 String 的常用方法(二)
本文介绍剩下的一些常用的 String 中的方法. 1.replace 方法 .replaceFirst 方法和 replaceAll 方法 replace(char oldChar, char ne ...
- Windows Azure上的大数据服务: HDInsight的介绍
这个视频介绍了目前非常流行的大数据处理框架Hadoop的Windows Azure上的实现:HDInsight,以及利用MapReduce来对大数据进行分析,利用Hive进行查询,利用客户端Power ...
- python实例:快速找出多个字典中的公共键
1.生成随机字典 # 从abcdefg 中随机取出 3-6个,作为key, 1-4 的随机数作为 value s1 = {x : randint(1, 4) for x in sample('abcd ...