java break语句的三种用法
1、用于switch语句当中,用于终止语句
2、用于跳出循环,此为不带标签的break语句,相当与goto的作用
e.g
while(i<j&&h<k){
if(h<k)
{
....
}
}
while(i<j){
if(h>k) break;
}
在第一种写法中,对条件h<k进行了两次检测,而第二种写法,通过使用break跳出循环,减少了对同一条件的判别次数,避免了重复检测。
注意,在一系列循环嵌套中,break仅仅终止的是最里层的循环
试验代码如下:
for(int i=0;i<=3;i++){
System.out.print("loop"+i+" ");
for(int j=0;j<10;j++){
if(j==3){
break;
}
System.out.print("j="+j+" ");
}
System.out.println();
}
输出:
loop0 j=0 j=1 j=2
loop1 j=0 j=1 j=2
loop2 j=0 j=1 j=2
loop3 j=0 j=1 j=2
3、带标签的break语句
常常用于跳出多层嵌套
注意,在带标签的break语句中,标签必须放在希望跳出的最外层之前,并紧跟一个冒号
e.g
public class Test {
public static void main(String args[]){
read_data:
while(1==1){
if(1==1){
System.out.println("1st");
}
if(1==1){
System.out.println("2nd");
break read_data;
}
if(1==1){
System.out.println("3rd");
}
}
System.out.println("out of loop");
}
}
输出:
1st
2nd
out of loop
e.g:
first:{
System.out.println("first");
second:{
System.out.println("second");
if(1==1){
break first;
}
third:{
System.out.println("third");
}
}
System.out.println("will not be excuted");
}
System.out.println("out of loop");
输出:
first
second
out of loop
对于带标签的break语句而言,只能跳转到包含break语句的那个块的标签上
下列代码是非法的:
first:if(1==1){
System.out.print("................");
}
second:if(1==1){
System.out.print("................");
break first;
}
补充 continue语句:
continue语句将控制转移到最内层循环的首部
while和 do while语句中continue语句直接转移到条件表达式,在for循环中,循环的检验条件被求值。
e.g:
public static void main(String args[]){
int count;
int n;
int sum=0;
Scanner i=new Scanner(System.in);
for(count=1;count<=3;count++){
System.out.println("enter a number,-1 to quit:");
n=i.nextInt();
if(n<0)
{
System.out.println("sum="+sum);
continue;
}
sum+=n;
System.out.println("sum="+sum);
}
}
输出:
enter a number,-1 to quit:
1
sum=1
enter a number,-1 to quit:
-1
sum=1
enter a number,-1 to quit:
1
sum=2
当输入为负时,continue语句直接跳到count++语句
continue语句也可以使用标签:
e.g
public static void main(String args[]) {
outer: for (int i=0; i<10; i++) {
for(int j=0; j<10; j++) {
if(j > i) {
System.out.println();
continue outer; }
System.out.print(" " + (i * j)); }}
System.out.println();
}
输出:
0
0 1
0 2 4
0 3 6 9
0 4 8 12 16
0 5 10 15 20 25
0 6 12 18 24 30 36
0 7 14 21 28 35 42 49
0 8 16 24 32 40 48 56 64
0 9 18 27 36 45 54 63 72 81
return语句:
return语句将程序控制返回到调用它的方法
e.g:
public static void main(String args[]) {
for(int i=0;i<10;i++){
System.out.println("i="+i+" ");
for(int j=0;j<10;j++)
{
if(1==1){
return;
}
System.out.println("j="+j+" ");
}
}
}
输出:
i=0
return 用来是正在执行的分支程序返回到它的调用方法上,在此,main函数的调用方法是java运行系统,所以执行到return;处,程序控制将被传递到它的调用者,所以后面的代码将都不被执行。
java break语句的三种用法的更多相关文章
- java中 this 的三种用法
Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...
- JAVA中this的三种用法的详解
this关键字必须放在非静态方法里面 this关键字代表自身,在程序中主要的使用用途有以下几个方面: ? 使用this关键字引用成员变量 ? 使用this关键字在自身构造方法内部引用其它构造方法 ? ...
- java中 this 关键字的三种用法
Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...
- java的break,另一种用法(多层循环嵌套)
break的另一种用法: 1.跳出外循环 outer:for(int j=0;i<4;j++){//outer随便定义的一个标签 for(int i=0;i<10;i++){ if(i== ...
- (转)Java结束线程的三种方法
背景:面试过程中问到结束线程的方法和线程池shutdown shutdownnow区别以及底层的实现,当时答的并不好. Java结束线程的三种方法 线程属于一次性消耗品,在执行完run()方法之后线程 ...
- java多线程中的三种特性
java多线程中的三种特性 原子性(Atomicity) 原子性是指在一个操作中就是cpu不可以在中途暂停然后再调度,既不被中断操作,要不执行完成,要不就不执行. 如果一个操作时原子性的,那么多线程并 ...
- Java结束线程的三种方法(爱奇艺面试)
线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的.例如在程序中使用线程进行So ...
- java调用python的几种用法(看这篇就够了)
java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...
随机推荐
- 抓包工具PowerSniff-0.1
做这个程序的意图是wireshark插件编写复杂(虽然也支持lua),而轻量级的工具如smartsniff,minisniff不支持插件化数据分析,各种工具用下来或多或少不顺手.以前写的外挂也都是手工 ...
- 一些鲜为人知却非常实用的数据结构 - Haippy
原文:http://www.udpwork.com/item/9932.html 作为程序猿(媛),你必须熟知一些常见的数据结构,比如栈.队列.字符串.链表.二叉树.哈希,但是除了这些常见的数据结构以 ...
- Java开发常用Linux命令
1.查找文件 find / -name filename.txt根据名称查找/目录下的filename.txt文件. find . -name "*.xml"递归查找所有的xml文 ...
- 复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题)
复制到剪贴板的JS实现--ZeroClipboard (兼解决IE下兼容问题) 相信绝大多数人都遇到过这样的功能实现,“复制”或者“复制到剪贴板”这样的功能.但是由于各大浏览器的实现方案不一样,导致几 ...
- json_encode和json_decode
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}' ...
- 【uTenux实验】邮箱
邮箱是一个通过在系统(共享)内存空间传递消息来实现同步和通信的对象.uTenux中每个邮箱都包含一个用来发送消息的消息队列和一个用于等待接收消息的任务队列,其使用邮箱功能的消息内容放置在发送方和接收方 ...
- Spark RDD类源码阅读
每天进步一点点~开搞~ abstract class RDD[T: ClassTag]( //@transient 注解表示将字段标记为瞬态的 @transient private var _sc: ...
- bootstrap-导航条
<body style="padding-top:50px"> <!-- navbar 导航条的基础样式 nav navbar-nav 导航条里菜单的固定样式组合 ...
- 数据库的索引和填充因子fillfactor
索引分为聚簇索引和非聚簇索引 1.聚簇索引/聚集索引 聚簇索引的顺序就是数据的物理存储顺序,对于一个表来说,只有一个聚簇索引 create unique clustered index id_inde ...
- Linux下如何修改ip地址
在Linux的系统下如何才能修改IP信息 以前总是用ifconfig修改,重启后总是得重做.如果修改配置文件,就不用那么麻烦了- A.修改ip地址 即时生效: # ifconfig eth0 192. ...