Java 标签的使用 – 热爱改变生活
我的GitHub GitHub |     登录
  • If you can't fly, then run; if you can't run, then walk; if you can't walk, then crawl
  • but whatever you do, you have to keep moving forward。
  • “你骗得了我有什么用,这是你自己的人生”
  • 曾有伤心之地,入梦如听 此歌

Java 标签的使用

Thinking Java sinvader 1870℃ 0评论

常用方法

int i = 0;
System.out.println("start");
for (; true; i++) {
    if (i == 5) {
	 break;
    }
    system.out.println(i);
}
System.out.println("finish");

输出如下:

start
0
1
2
3
4
finish

int i = 0;
System.out.println("start");
for (; i < = 12; i++) {
	if (i == 10) {
		continue;
	}
	System.out.println(i);
}
System.out.println("finish");

输出结果:

start
0
1
2
3
4
5
6
7
8
9
11
12
finish

东西很简单,从上面我们可以看出来:

  • break,直接退出当前循环(根据输出结果中没有 5 以及 5 之后的来想)
  • continue,退出本次循环,继续当前循环的下次循环(跟你输出结果中没有 10 来想想)

使用标签

标签就是后面跟有冒号的标识符,学过 C 的应该知道 C 的 goto 语句,就是运行到 goto 的时候直接跳转到标签所在的位置继续执行。

在 Java 中,取消了 goto 语句,但是保留了标签来进行跳转。来看一段 Thinking Java 书中的代码:

int i = 0;
outer: // Can't have statements here
for (; true;) { // infinite loop
	inner: // Can't have statements here
	for (; i < 10; i++) {
		print("i = " + i);
		if (i == 2) {
			print("continue");
			continue;
		}
		if (i == 3) {
			print("break");
			i++; // Otherwise i never
					// gets incremented.
			break;
		}
		if (i == 7) {
			print("continue outer");
			i++; // Otherwise i never
					// gets incremented.
			continue outer;
		}
		if (i == 8) {
			print("break outer");
			break outer;
		}
		for (int k = 0; k < 5; k++) {
			if (k == 3) {
				print("continue inner");
				continue inner;
			}
		}
		}
}
System.out.println("finish");

对照着输出结果我们来看看它是如何来运行的。

输出结果:

i = 0
continue inner
i = 1
continue inner
i = 2
continue
i = 3
break
i = 4
continue inner
i = 5
continue inner
i = 6
continue inner
i = 7
continue outer
i = 8
break outer
finish

可以看到外部的那个 for 语句是一个无限循环,直接进去之后,到第二层循环,循环的条件为 i<10,每次运行完成 i++。现在我们刚刚进入,i 还是默认的 0,先输出一个当前的 i 的值。然后开始依次和 2,3,7,8 进行对比,发现不相等之后,执行下面的 for 语句,这些都简单,就不仔细说了。

当 i=2 了,与 2 进行判断的时候为 true,执行 continue,终止本次循环(如果没有终止本次循环的话,continue inner 也是应该出现的吧)

当 i=3 了,看到了 break,那么退出当前离他最近的循环,但是因为它还在第一层循环里,所以他有开始继续从 i=4 开始往下执行

当 i=7 了,执行了 continue outer,根据 continue 的德行,它还得继续往下执行,所以它又进入了第一层循环,然后第二层循环。。。

当 i=8 了,执行了 break outer,break 比 continue 有骨气多了,好马不吃回头草,我出来就不进去了,所以直接跳过循环,到了程序的下一句,输出 finish

看懂了上面的这些,第三层 for 里面的 continue inner 就应该懂了

然后,如果我把第三层 for 里面的 continue inner 换成 break inner 呢?break 你硬气,不吃回头草是不是?

看输出:

i = 0
continue inner


生活所迫,原谅它吧

原谅他了吧,然后再来说说为什么有的 continue 或者 break 语句前面有的加了 i++,有的没有加。

在 for 循环中,只有到达 for 循环的末尾的时候。才会执行 for 循环中的 step。所以如果没有执行到 for 循环的末尾,是不会执行 i++操作的。

对于 break 来说,当程序看到 break 的时候,会直接退出当前循环,所以并没有执行 i++,为了避免下次 i 还是同样的值,我们要手动给他的值来加 1

而对于 continue 来说,会退出当前的本次循环,是会执行到循环末尾的,所以不用手动给 i 来加 1

对于 continue xxx 来说,看到这个之后就直接跳到标签的地方去执行了,那么它也就不会执行到循环的末尾。所以我们也要手动给他的值来加 1.

¥ 有帮助么?打赏一下~

转载请注明:热爱改变生活.cn » Java 标签的使用


本博客只要没有注明“转”,那么均为原创。 转载请注明链接:sumile.cn » Java 标签的使用

喜欢 (0)
发表我的评论
取消评论
表情

如需邮件形式接收回复,请注册登录

Hi,你需要填写昵称和邮箱~

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址