-
Notifications
You must be signed in to change notification settings - Fork 420
Expand file tree
/
Copy pathControlFlow.html
More file actions
144 lines (118 loc) · 7.83 KB
/
ControlFlow.html
File metadata and controls
144 lines (118 loc) · 7.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>第 4 章 流程控制</title><link rel="stylesheet" type="text/css" href="../docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="home" href="../index.html" title="Netkiller Java 手札(版)" /><link rel="up" href="index.html" title="部分 I. Java 21" /><link rel="prev" href="type/java.boolean.html" title="3.13. 布尔型 Boolean" /><link rel="next" href="class/index.html" title="第 5 章 面向对象" /></head><body><a xmlns="" href="//www.netkiller.cn/">Home</a> | <a xmlns="" href="//netkiller.github.io/">简体中文</a> | <a xmlns="" href="http://netkiller.sourceforge.net/">繁体中文</a> | <a xmlns="" href="/journal/index.html">杂文</a>
| <a xmlns="" href="https://github.com/netkiller">Github</a> | <a xmlns="" href="https://zhuanlan.zhihu.com/netkiller">知乎专栏</a> | <a xmlns="" href="https://www.facebook.com/bg7nyt">Facebook</a> | <a xmlns="" href="http://cn.linkedin.com/in/netkiller/">Linkedin</a> | <a xmlns="" href="https://www.youtube.com/user/bg7nyt/videos">Youtube</a> | <a xmlns="" href="//www.netkiller.cn/home/donations.html">打赏(Donations)</a> | <a xmlns="" href="//www.netkiller.cn/home/about.html">About</a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">第 4 章 流程控制</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="type/java.boolean.html">上一页</a> </td><th width="60%" align="center">部分 I. Java 21</th><td width="20%" align="right"> <a accesskey="n" href="class/index.html">下一页</a></td></tr></table><hr /></div><table xmlns=""><tr><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&repo=netkiller.github.io&type=watch&count=true&size=large" height="30" width="170" frameborder="0" scrolling="0" style="width:170px; height: 30px;" allowTransparency="true"></iframe></td><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&repo=netkiller.github.io&type=fork&count=true&size=large" height="30" width="170" frameborder="0" scrolling="0" style="width:170px; height: 30px;" allowTransparency="true"></iframe></td><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&type=follow&count=true&size=large" height="30" width="240" frameborder="0" scrolling="0" style="width:240px; height: 30px;" allowTransparency="true"></iframe></td><td></td><td><a href="https://zhuanlan.zhihu.com/netkiller"><img src="/images/logo/zhihu-card-default.svg" height="25" /></a></td><td valign="middle"><a href="https://zhuanlan.zhihu.com/netkiller">知乎专栏</a></td><td></td><td></td><td></td><td></td></tr></table><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="ControlFlow"></a>第 4 章 流程控制</h2></div></div></div><div class="toc"><p><strong>目录</strong></p><dl class="toc"><dt><span class="section"><a href="ControlFlow.html#id814">4.1. Switch</a></span></dt><dd><dl><dt><span class="section"><a href="ControlFlow.html#id813">4.1.1. yield</a></span></dt></dl></dd></dl></div>
<div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id814"></a>4.1. Switch</h2></div></div></div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="id813"></a>4.1.1. yield</h3></div></div></div>
<pre class="programlisting">
package cn.netkiller.demo;
public class DemoSwitch {
public DemoSwitch() {
}
public static void main(String[] args) {
var number = 4;
var operation = "平方";
var result = switch (operation) {
case "立方" -> {
yield number * number * number;
}
case "平方" -> {
yield number * number;
}
default -> number;
};
System.out.println(result);
}
}
</pre>
<p>不必为break每个 case 块定义一个语句,我们可以简单地使用箭头语法</p>
<pre class="programlisting">
int money = 3;
String cn = switch (money) {
case 1 -> "壹";
case 2 -> "贰";
case 3 -> "叁";
case 4 -> "肆";
case 5 -> "伍";
case 6 -> "陆";
case 7 -> "柒";
case 8 -> "捌";
case 9 -> "玖";
case 10 -> "拾";
default -> "零";
};
System.out.println(cn);
</pre>
<pre class="programlisting">
package cn.netkiller.test;
public class Test {
public static void main(String[] args) {
withSwitchExpression(Fruit.APPLE);
withReturnValue(Fruit.AVOCADO);
withYield(Fruit.VEGETABLES);
}
private static void withSwitchExpression(Fruit fruit) {
switch (fruit) {
case APPLE, PEAR -> System.out.println("普通水果");
case MANGO, AVOCADO -> System.out.println("进口水果");
default -> System.out.println("未知水果");
}
}
private static void withReturnValue(Fruit fruit) {
System.out.println(switch (fruit) {
case APPLE, PEAR -> "普通水果";
case MANGO, AVOCADO -> "进口水果";
default -> "未知水果";
});
}
private static void withYield(Fruit fruit) {
String text = switch (fruit) {
case APPLE, PEAR, MANGO, AVOCADO -> {
System.out.println("水果: " + fruit);
yield "水果: " + fruit;
}
case VEGETABLES -> {
System.out.println("蔬菜: " + fruit);
yield "蔬菜:" + fruit;
}
default -> {
yield "未知食物";
}
};
System.out.println(text);
}
public enum Fruit {
APPLE, PEAR, MANGO, AVOCADO, VEGETABLES
}
}
</pre>
</div>
</div>
</div><script xmlns="" type="text/javascript" id="clustrmaps" src="//cdn.clustrmaps.com/map_v2.js?u=r5HG&d=9mi5r_kkDC8uxG8HuY3p4-2qgeeVypAK9vMD-2P6BYM"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="type/java.boolean.html">上一页</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">上一级</a></td><td width="40%" align="right"> <a accesskey="n" href="class/index.html">下一页</a></td></tr><tr><td width="40%" align="left" valign="top">3.13. 布尔型 Boolean </td><td width="20%" align="center"><a accesskey="h" href="../index.html">起始页</a></td><td width="40%" align="right" valign="top"> 第 5 章 面向对象</td></tr></table></div><script xmlns="">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-11694057-1', 'auto');
ga('send', 'pageview');
</script><script xmlns="" async="async">
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?93967759a51cda79e49bf4e34d0b0f2c";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><script xmlns="" async="async">
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script></body></html>