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

📄 tij0045.html

📁 学习java的经典书籍
💻 HTML
📖 第 1 页 / 共 5 页
字号:
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>:</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><I>statement</I></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>;</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>break;</B></FONT><P><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>case</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><I>integral-value4
</I></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>:</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><I>statement</I></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>;</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>break;</B></FONT><P><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>case</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><I>
integral-value5
</I></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>:</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><I>statement</I></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>;</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>break;</B></FONT><P><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>
         // ...
</B></FONT><P><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>default:</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><I>statement</I></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>;</B></FONT><P><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>}</B></FONT><P></DIV><DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><I>Integral-selector</I></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
is an expression that produces an integral value. The 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>switch</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
compares the result of 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><I>integral-selector</I></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
to each
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><I>
integral-value
</I></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">.
If it finds a match, the corresponding 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><I>statement</I></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
(simple or compound) executes. If no match occurs, the 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>default</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
<A NAME="Index257"></A></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><I>statement</I></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
executes.
</FONT><P></DIV><DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">You
will notice in the above definition that each 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>case<A NAME="Index258"></A></B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
ends with a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>break</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">,
which causes execution to jump to the end of the 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>switch</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
body. This is the conventional way to build a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>switch</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
statement, but the 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>break</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
is optional. If it is missing, the code for the following case statements
execute until a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>break</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
is encountered. Although you don&#8217;t usually want this kind of behavior, it
can be useful to an experienced programmer. Note the last statement, for the 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>default</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">,
doesn&#8217;t have a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>break</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
because the execution just falls through to where the 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>break</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
would have taken it anyway. You could put a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>break</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
at the end of the 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>default</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
statement with no harm if you considered it important for style&#8217;s sake.
</FONT><P></DIV><DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">The
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>switch</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
statement is a clean way to implement multi-way selection (i.e., selecting from
among a number of different execution paths), but it requires a selector that
evaluates to an integral value such as 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>int</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
or 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>char</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">.
If you want to use, for example, a string or a floating-point number as a
selector, it won&#8217;t work in a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>switch</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
statement. For non-integral types, you must use a series of 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>if</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
statements.
</FONT><P></DIV><DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">Here&#8217;s
an example that creates letters randomly and determines whether they&#8217;re
vowels or consonants:
</FONT><P></DIV>

<font color="#990000"><PRE><font color="#009900">//: VowelsAndConsonants.java</font>
<font color="#009900">// Demonstrates the switch statement</font>

<font color="#0000ff">public</font> <font color="#0000ff">class</font> VowelsAndConsonants {
  <font color="#0000ff">public</font> <font color="#0000ff">static</font> <font color="#0000ff">void</font> main(String[] args) {
    <font color="#0000ff">for</font>(<font color="#0000ff">int</font> i = 0; i &lt; 100; i++) {
      <font color="#0000ff">char</font> c = (<font color="#0000ff">char</font>)(Math.random() * 26 + 'a');
      System.out.print(c + ": ");
      <font color="#0000ff">switch</font>(c) {
      <font color="#0000ff">case</font> 'a':
      <font color="#0000ff">case</font> 'e':
      <font color="#0000ff">case</font> 'i':
      <font color="#0000ff">case</font> 'o':
      <font color="#0000ff">case</font> 'u':
                System.out.println("vowel");
                <font color="#0000ff">break</font>;
      <font color="#0000ff">case</font> 'y':
      <font color="#0000ff">case</font> 'w':
                System.out.println(
                  "Sometimes a vowel");
                <font color="#0000ff">break</font>;
      <font color="#0000ff">default</font>:
                System.out.println("consonant");
      }
    }
  }
} <font color="#009900">///:~ </PRE></font></font><DIV ALIGN=LEFT><P></DIV><DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">Since
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>Math.random(&#160;)</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
generates a value between 0 and 1, you need only multiply it by the upper bound
of the range of numbers you want to produce (26 for the letters in the
alphabet) and add an offset to establish the lower bound. 
</FONT><P></DIV><DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">Although
it appears you&#8217;re switching on a character here, the 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>switch</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
statement is actually using the integral value of the character. The
singly-quoted characters in the 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>case</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
statements also produce integral values that are used for comparison.
</FONT><P></DIV><DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">Notice
how the 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>case</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">s
can be &#8220;stacked&#8221; on top of each other to provide multiple matches
for a particular piece of code. You should also be aware that it&#8217;s
essential to put the 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>break</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
statement at the end of a particular case, otherwise control will simply drop
through and continue processing on the next case.
</FONT><P></DIV>
<A NAME="Heading134"></A><H4 ALIGN=LEFT>
Calculation
details
</H4>
<DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">The
statement:
</FONT><P></DIV><DIV ALIGN=LEFT><TT><FONT FACE="Courier New" SIZE=3 COLOR="Black">char
c = (char)(Math.random() * 26 + 'a');
</FONT></TT><P></DIV><DIV ALIGN=LEFT><P></DIV><DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">deserves
a closer look. 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>Math.random(&#160;)</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
produces a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>double</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">,
so the value 26 is converted to a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>double</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
to perform the multiplication, which also produces a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>double</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">.
This means that 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>&#8216;a&#8217;</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
must be converted to a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>double</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
to perform the addition. The 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>double</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
result is turned back into a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>char</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
with a cast.
</FONT><P></DIV><DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">First,
what does the cast to 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>char</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
do? That is, if you have the value 29.7 and you cast it to a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>char</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">,
is the resulting value 30 or 29? The answer to this can be seen in this example:
</FONT><P></DIV>

<font color="#990000"><PRE><font color="#009900">//: CastingNumbers.java</font>
<font color="#009900">// What happens when you cast a float or double</font>
<font color="#009900">// to an integral value?</font>

<font color="#0000ff">public</font> <font color="#0000ff">class</font> CastingNumbers {
  <font color="#0000ff">public</font> <font color="#0000ff">static</font> <font color="#0000ff">void</font> main(String[] args) {
    <font color="#0000ff">double</font>
      above = 0.7,
      below = 0.4;
    System.out.println("above: " + above);
    System.out.println("below: " + below);
    System.out.println(
      "(<font color="#0000ff">int</font>)above: " + (<font color="#0000ff">int</font>)above);
    System.out.println(
      "(<font color="#0000ff">int</font>)below: " + (<font color="#0000ff">int</font>)below);
    System.out.println(
      "(<font color="#0000ff">char</font>)('a' + above): " +
      (<font color="#0000ff">char</font>)('a' + above));
    System.out.println(
      "(<font color="#0000ff">char</font>)('a' + below): " +
      (<font color="#0000ff">char</font>)('a' + below));
  }
} <font color="#009900">///:~ </PRE></font></font><DIV ALIGN=LEFT><P></DIV><DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">The
output is:
</FONT><P></DIV>

<font color="#990000"><PRE>above: 0.7
below: 0.4
(<font color="#0000ff">int</font>)above: 0
(<font color="#0000ff">int</font>)below: 0
(<font color="#0000ff">char</font>)('a' + above): a
(<font color="#0000ff">char</font>)('a' + below): a </PRE></font><DIV ALIGN=LEFT><P></DIV><DIV ALIGN=LEFT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">So
the answer is that <A NAME="Index259"></A>casting
from a 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>float</B></FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black">
or 
</FONT><FONT FACE="Carmina Md BT" SIZE=3 COLOR="Black"><B>double</B></FONT><FONT FACE="Carmina Md B

⌨️ 快捷键说明

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