⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16.doc.html

📁 java语言规范
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<p>
<a name="26168"></a>
<h2>16.2    Definite Assignment and Statements</h2>
<a name="26169"></a>
<h3>16.2.1    Empty Statements</h3>
<ul><a name="26170"></a>
<li><i>V</i><i></i> is definitely assigned after an empty statement iff it is definitely assigned before the empty statement.
</ul><a name="26171"></a>
<h3>16.2.2    Blocks</h3>
<ul><a name="26172"></a>
<li><i>V</i><i></i> is definitely assigned after an empty block iff it is definitely assigned before the empty block.
<a name="26173"></a>
<li><i>V</i><i></i> is definitely assigned after a nonempty block iff it is definitely assigned after the last statement in the block.
<a name="26174"></a>
<li><i>V</i><i></i> is definitely assigned before the first statement of the block iff it is definitely assigned before the block.
<a name="26175"></a>
<li><i>V</i><i></i> is definitely assigned before any other statement <i>S</i><i></i> of the block iff it is definitely assigned after the statement immediately preceding <i>S</i><i></i> in the block.
</ul><a name="26177"></a>
<h3>16.2.3    Local Variable Declaration Statements</h3>
<ul><a name="26178"></a>
<li><i>V</i><i></i> is definitely assigned after a local variable declaration statement that contains no initializers iff it is definitely assigned before the local variable declaration statement.
<a name="26179"></a>
<li><i>V</i><i></i> is definitely assigned after a local variable declaration statement that contains initializers iff either it is definitely assigned after the last initializer expression in the local variable declaration statement or the last initializer expression in the declaration is in the declarator that declares <i>V</i>.
<a name="26180"></a>
<li><i>V</i><i></i> is definitely assigned before the first initializer expression iff it is definitely assigned before the local variable declaration statement.
<a name="26181"></a>
<li><i>V</i><i></i> is definitely assigned before any other initializer expression <i>e </i>iff either it is definitely assigned after the initializer expression immediately preceding <i>e </i>in the local variable declaration statement or the initializer expression immediately preceding <i>e </i>in the local variable declaration statement is in the declarator that declares <i>V</i>.
</ul><a name="26182"></a>
<h3>16.2.4    Labeled Statements</h3>
<ul><a name="26183"></a>
<li><i>V</i><i></i> is definitely assigned after a labeled statement <i>L</i><code>:</code><i>S</i><i></i> (where <i>L</i> is a label) iff <i>V</i><i></i> is definitely assigned after <i>S</i><i></i> and <i>V</i><i></i> is definitely assigned before every <code>break</code> statement that may exit the labeled statement <i>L</i><code>:</code><i>S</i>.
<a name="26184"></a>
<li><i>V</i><i></i> is definitely assigned before <i>S</i><i></i> iff <i>V</i><i></i> is definitely assigned before <i>L</i><code>:</code><i>S</i>.
</ul><a name="26185"></a>
<h3>16.2.5    Expression Statements</h3>
<ul><a name="26186"></a>
<li><i>V</i><i></i> is definitely assigned after an expression statement <i>e</i><code>;</code> iff it is definitely assigned after <i>e</i>.
<a name="26187"></a>
<li><i>V</i><i></i> is definitely assigned before <i>e</i> iff it is definitely assigned before <i>e</i><code>;</code>.
</ul><a name="26188"></a>
<h3>16.2.6    <code>if</code> Statements</h3>
<ul><a name="26189"></a>
<li><i>V</i><i></i> is definitely assigned after <code>if</code> <code>(</code><i>e</i><code>)</code> <i>S</i><i></i> iff <i>V</i><i></i> is definitely assigned after <i>S</i><i></i> and <i>V</i><i></i> is definitely assigned after <i>e</i> when false.
<a name="26190"></a>
<li><i>V</i><i></i> is definitely assigned before <i>e</i> iff <i>V</i><i></i> is definitely assigned before <code>if</code> <code>(</code><i>e</i><code>)</code> <i>S</i>. <i>V</i><i></i> &#32;is definitely assigned before <i>S</i><i></i> iff <i>V</i><i></i> is definitely assigned after <i>e</i> when true.
<a name="26191"></a>
<li><i>V</i><i></i> is definitely assigned after <code>if</code> <code>(</code><i>e</i><code>)</code> <i>S</i><i></i> <code>else</code> <i>T</i><em></em> iff <i>V</i><i></i> is definitely assigned after <i>S</i><i></i> and <i>V</i><i></i> is definitely assigned after <i>T</i>.
<a name="26192"></a>
<li><i>V</i><i></i> is definitely assigned before <i>e </i>iff <i>V</i><i></i> is definitely assigned before <code>if</code> <code>(</code><i>e</i><code>)</code> <i>S</i><i></i> <code>else</code> <i>T</i>. <i>V</i><i></i> is definitely assigned before <i>S</i><i></i> iff <i>V</i><i></i> is definitely assigned after <i>e</i> when true. <i>V</i><i></i> is definitely assigned before <i>T</i><em></em> iff <i>V</i><i></i> is definitely assigned after <i>e</i> when false.
</ul><a name="26193"></a>
<h3>16.2.7    <code>switch</code> Statements</h3>
<ul><a name="26194"></a>
<li><i>V</i><i></i> is definitely assigned after a <code>switch</code> statement iff both of the following are true:
<ul>
<a name="26195"></a>
<li>Either the <code>switch</code> block is empty or <i>V</i><i></i> is definitely assigned after the last statement of the <code>switch</code> block.
<a name="26196"></a>
<li><i>V</i><i></i> is definitely assigned before every <code>break</code> statement that may exit the <code>switch</code> statement.
</ul>
<a name="26197"></a>
<li><i>V</i><i></i> is definitely assigned before the switch expression iff <i>V</i><i></i> is definitely assigned before the <code>switch</code> statement.
<a name="26198"></a>
<li><i>V</i><i></i> is definitely assigned before a statement or local variable declaration statement <i>S</i><i></i> in the switch block iff at least one of the following is true:
<ul>
<a name="26199"></a>
<li><i>V</i><i></i> is definitely assigned after the switch expression.
<a name="26200"></a>
<li><i>S</i><i></i> is not labeled by a <code>case</code> or <code>default</code> label and <i>V</i><i></i> is definitely assigned after the preceding statement.
</ul>
</ul><a name="44047"></a>
<h3>16.2.8    <code>while</code> Statements</h3>
<ul><a name="44048"></a>
<li><i>V</i><i></i> is definitely assigned after <code>while</code> <code>(</code><i>e</i><code>)</code> <i>S</i><i></i> iff <i>V</i><i></i> is definitely assigned after <i>e</i> when false and <i>V</i><i></i> is definitely assigned before every <code>break</code> statement that may exit the <code>while</code> statement.
<a name="26203"></a>
<li><i>V</i><i></i> is definitely assigned before <i>e</i> iff <i>V</i><i></i> is definitely assigned before the <code>while</code> statement.
<a name="26204"></a>
<li><i>V</i><i></i> is definitely assigned before <i>S</i><i></i> iff <i>V</i><i></i> is definitely assigned after <i>e</i> when true.
</ul><a name="26205"></a>
<h3>16.2.9    <code>do</code> Statements</h3>
<ul><a name="26206"></a>
<li><i>V</i><i></i> is definitely assigned after <code>do</code> <i>S</i><i></i> <code>while</code> <code>(</code><i>e</i><code>);</code> iff <i>V</i><i></i> is definitely assigned after <i>e</i> when false and <i>V</i><i></i> is definitely assigned before every <code>break</code> statement that may exit the <code>do</code> statement.
<a name="26207"></a>
<li><i>V</i><i></i> is definitely assigned before <i>S</i><i></i> iff <i>V</i><i></i> is definitely assigned before the <code>do</code> statement.
<a name="26208"></a>
<li><i>V</i><i></i> is definitely assigned before <i>e</i> iff <i>V</i><i></i> is definitely assigned after <i>S</i><i></i> and <i>V</i><i></i> is definitely assigned before every <code>continue</code> statement that may exit the body of the <code>do</code> statement.
</ul><a name="26209"></a>
<h3>16.2.10    <code>for</code> Statements</h3>
<ul><a name="26210"></a>
<li><i>V</i><i></i> is definitely assigned after a <code>for</code> statement iff both of the following are true:
<ul>
<a name="26211"></a>
<li>Either a condition expression is not present or <i>V</i><i></i> is definitely assigned after the condition expression when false.
<a name="26212"></a>
<li><i>V</i><i></i> is definitely assigned before every <code>break</code> statement that may exit the <code>for </code>statement.
</ul>
<a name="26213"></a>
<li><i>V</i><i></i> is definitely assigned before the initialization part of the <code>for</code> statement iff <i>V</i><i></i> is definitely assigned before the <code>for</code> statement.
<a name="26214"></a>
<li><i>V</i><i></i> is definitely assigned before the condition part of the <code>for</code> statement iff <i>V</i><i></i> is definitely assigned after the initialization part of the <code>for</code> statement.
<a name="26215"></a>
<li><i>V</i><i></i> is definitely assigned before the contained statement iff either of the following is true:
<ul>
<a name="26216"></a>
<li>A condition expression is present and <i>V</i><i></i> is definitely assigned after the condition expression when true.
<a name="26217"></a>
<li>No condition expression is present and <i>V</i><i></i> is definitely assigned after the initialization part of the <code>for</code> statement.
</ul>
<a name="26218"></a>
<li><i>V</i><i></i> is definitely assigned before the incrementation part of the <code>for</code> statement iff <i>V</i><i></i> is definitely assigned after the contained statement and <i>V</i><i></i> is definitely assigned before every <code>continue</code> statement that may exit the body of the <code>for</code> statement.
</ul><a name="26219"></a>
<h4>16.2.10.1    Initialization Part</h4>
<ul><a name="26220"></a>
<li>If the initialization part of the <code>for</code> statement is a local variable declaration statement, the rules of <a href="16.doc.html#26177">&#167;16.2.3</a> apply.
<a name="26224"></a>
<li>Otherwise, if the initialization part is empty, then <i>V</i><i></i> is definitely assigned after the initialization part iff <i>V</i><i></i> is definitely assigned before the initialization part.
<a name="26225"></a>
<li>Otherwise, three rules apply:
<ul>
<a name="26226"></a>
<li><i>V</i><i></i> is definitely assigned after the initialization part iff <i>V</i><i></i> is definitely assigned after the last expression statement in the initialization part.
<a name="26227"></a>
<li><i>V</i><i></i> is definitely assigned before the first expression statement in the initialization part iff <i>V</i><i></i> is definitely assigned before the initialization part.
<a name="26228"></a>
<li><i>V</i><i></i> is definitely assigned before an expression statement <i>E</i> other than the first in the initialization part iff <i>V</i><i></i> is definitely assigned after the expression statement immediately preceding <i>E</i>.
</ul>
</ul><a name="26229"></a>
<h4>16.2.10.2    Incrementation Part</h4>
<ul><a name="26230"></a>
<li>If the incrementation part of the <code>for</code> statement is empty, then <i>V</i><i></i> is definitely assigned after the incrementation part iff <i>V</i><i></i> is definitely assigned before the incrementation part.
<a name="26231"></a>
<li>Otherwise, three rules apply:
<ul>
<a name="26232"></a>
<li><i>V</i><i></i> is definitely assigned after the incrementation part iff <i>V</i><i></i> is definitely assigned after the last expression statement in the incrementation part.
<a name="26233"></a>
<li><i>V</i><i></i> is definitely assigned before the first expression statement in the incrementation part iff <i>V</i><i></i> is definitely assigned before the incrementation part.
<a name="26234"></a>
<li><i>V</i><i></i> is definitely assigned before an expression statement <i>E</i> other than the first in the incrementation part iff <i>V</i><i></i> is definitely assigned after the expression statement immediately preceding <i>E</i>.
</ul>
</ul><a name="26235"></a>
<h3>16.2.11    <code>break</code>, <code>continue</code>, <code>return</code>, and <code>throw</code> Statements</h3>
<ul><a name="26236"></a>
<li>By convention, we say that <i>V</i><i></i> is definitely assigned after any <code>break</code>, <code>continue</code>, <code>return</code>, or <code>throw</code> statement. The notion that a variable is "definitely assigned after" a statement or expression really means "is definitely assigned after the statement or expression completes normally". Because a <code>break</code>, <code>continue</code>, <code>return</code>, or <code>throw</code> statement never completes normally, it vacuously satisfies this notion.
<a name="26237"></a>
<li>In a <code>return</code> statement with an expression or a <code>throw</code> statement, <i>V</i><i></i> is definitely assigned before the expression iff <i>V</i><i></i> is definitely assigned before the <code>return</code> or <code>throw</code> statement.
</ul><a name="26238"></a>
<h3>16.2.12    <code>synchronized</code> Statements</h3>
<ul><a name="26239"></a>
<li><i>V</i><i></i> is definitely assigned after <code>synchronized</code> <code>(</code><i>e</i><code>)</code> <i>S</i><i></i> iff <i>V</i><i></i> is definitely assigned after <i>S</i>.
<a name="26240"></a>
<li><i>V</i><i></i> is definitely assigned before <i>e</i> iff <i>V</i><i></i> is definitely assigned before the statement <code>synchronized</code> <code>(</code><i>e</i><code>)</code> <i>S</i>.
<a name="26241"></a>
<li><i>V</i><i></i> is definitely assigned before <i>S</i><i></i> iff <i>V</i><i></i> is definitely assigned after <i>e</i>.
</ul><a name="26242"></a>
<h3>16.2.13    <code>try</code> Statements</h3>
<ul><a name="26243"></a>
<li><i>V</i><i></i> is definitely assigned after a <code>try</code> statement iff one of the following is true:
<ul>
<a name="26244"></a>
<li><i>V</i><i></i> is definitely assigned after the try block and <i>V</i><i></i> is definitely assigned after every catch block in the try statement.
<a name="26245"></a>
<li>The <code>try</code> statement has a <code>finally</code> block and <i>V</i><i></i> is definitely assigned after the <code>finally</code> block.
</ul>
<a name="26246"></a>
<li><i>V</i><i></i> is definitely assigned before the <code>try</code> block iff <i>V</i><i></i> is definitely assigned before the <code>try</code> statement.
<a name="26247"></a>
<li><i>V</i><i></i> is definitely assigned before a <code>catch</code> block iff <i>V</i><i></i> is definitely assigned before the <code>try</code> statement.
</ul><a name="53689"></a>
<i>V</i><i></i> is definitely assigned before a <code>finally</code> block iff <i>V</i><i></i> is definitely assigned before 
the <code>try</code> statement.
<p>

<hr>
<!-- This inserts footnotes--><p>
<a href="index.html">Contents</a> | <a href="15.doc.html">Prev</a> | <a href="17.doc.html">Next</a> | <a href="j.index.doc1.html">Index</a>
<p>
<font size=-1>Java Language Specification (HTML generated by Suzette Pelouch on February 24, 1998)<br>
<i><a href="jcopyright.doc.html">Copyright &#169 1996 Sun Microsystems, Inc.</a>
All rights reserved</i>
<br>
Please send any comments or corrections to <a href="mailto:doug.kramer@sun.com">doug.kramer@sun.com</a>
</font>
</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -