﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-asdtiang-java study-文章分类-java fx学习笔记</title><link>http://www.blogjava.net/asdtiang/category/43599.html</link><description>交流学习JAVA </description><language>zh-cn</language><lastBuildDate>Fri, 15 Jan 2010 23:14:41 GMT</lastBuildDate><pubDate>Fri, 15 Jan 2010 23:14:41 GMT</pubDate><ttl>60</ttl><item><title>JAVA FX语法学习----数据绑定和触发器</title><link>http://www.blogjava.net/asdtiang/articles/309688.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 15 Jan 2010 06:35:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/articles/309688.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/309688.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/articles/309688.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/309688.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/309688.html</trackback:ping><description><![CDATA[<div><a name="overview"><strong>绑定概述</strong></a></div>
<p><code>bind</code>
关键字将目标变量的值与绑定表达式的值相关联。绑定表达式可以是某个基本类型的简单值、对象、函数的结果或表达式的结果。以下几节分别提供每种绑定表达式
的示例。</p>
<div><a name="objects"><strong>绑定和对象</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>在大多数实际的编程情况下，需要通过数据绑定使应用程序的图形用户界面 (Graphical User
Interface, GUI)  与其底层数据同步。（GUI 编程是<a href="http://developers.sun.com.cn/javafx/1/tutorials/ui/">使用 JavaFX 构建
GUI  应用程序</a>的主题；下面我们将用一些非可视的示例来说明基本的底层结构。）</p>
<p>让我们先看一个简单的示例：下面的脚本将变量 <code>x</code> 绑定到变量 <code>y</code>，
更改 <code>x</code>  的值，然后输出 <code>y</code> 的值。由于这两个变量绑定在一起，因此 <code>y</code>
值会自动更新为新值。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var x = 0;<br />
            <br />
            <strong>def</strong> y = bind x;<br />
            <br />
            x = 1;<br />
            <br />
            println(y); // y now equals 1<br />
            <br />
            x = 47;<br />
            <br />
            println(y); // y now equals 47</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>请注意，我们已将变量 <code>y</code> 声明为 <code>def</code>。这可防止任何代码直接
为该变量赋值（尽管允许该变量的值因绑定  (<code>bind</code>) 而更改）。在绑定到对象时，此约定仍适用（请回顾<a href="http://developers.sun.com.cn/javafx/1/tutorials/core/usingObjects/index.html#declaringObject">使
用对象</a>中介绍的  <code>Address</code>）：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var myStreet = "1 Main Street";<br />
            <br />
            var myCity = "Santa Clara";<br />
            <br />
            var myState = "CA";<br />
            <br />
            var myZip = "95050";<br />
            <br />
            <br />
            <br />
            def address = <strong>bind</strong> Address {<br />
            <br />
            street: myStreet;<br />
            <br />
            city: myCity;<br />
            <br />
            state: myState;<br />
            <br />
            zip: myZip;<br />
            <br />
            };<br />
            <br />
            <br />
            <br />
            println("address.street == {address.street}");<br />
            <br />
            myStreet = "100 Maple Street";<br />
            <br />
            println("address.street == {address.street}");</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>如果更改 <code>myStreet</code> 的值，<code>address</code> 对象内部的 <code>street</code>
变量将受到影响：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>address.street == 1 Main Street<br />
            <br />
            address.street == 100 Maple Street</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>请注意，更改 <code>myStreet</code> 的值实际上会导致创建一个新的 <code>Address</code>
对象，然后将该对象重新赋给 <code>address</code> 变量。为了跟踪所做的更改而<em>不</em>创建新的  <code>Address</code>
对象，请改为直接绑定 (<code>bind</code>) 到该对象的实例变量：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def address = bind Address {<br />
            <br />
            street: <strong>bind</strong> myStreet;<br />
            <br />
            city: <strong>bind</strong> myCity;<br />
            <br />
            state: <strong>bind</strong> myState;<br />
            <br />
            zip: <strong>bind</strong> myZip;<br />
            <br />
            };</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>如果要显式绑定到实例变量，还可以省略第一个 <code>bind</code>（<code>Address</code>
前面的那个）：</p>
<p><!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
--></p>
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def address = Address {<br />
            <br />
            street: <strong>bind</strong> myStreet;<br />
            <br />
            city: <strong>bind</strong> myCity;<br />
            <br />
            state: <strong>bind</strong> myState;<br />
            <br />
            zip: <strong>bind</strong> myZip;<br />
            <br />
            };</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<div><a name="functions"><strong>绑定和函数</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>前面的课程已讲授了函数，但是您还必须了解<em>绑定函数</em>与<em>非绑定函数</em>之间的区别。</p>
<p>请考虑下面的函数，该函数创建和返回一个 <code>Point</code> 对象：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var scale = 1.0;<br />
            <br />
            <br />
            <br />
            <strong>bound</strong> function makePoint(xPos : Number, yPos : Number) : Point {<br />
            <br />
            Point {<br />
            <br />
            x: xPos * scale<br />
            <br />
            y: yPos * scale<br />
            <br />
            }<br />
            <br />
            }<br />
            <br />
            <br />
            <br />
            class Point { <br />
            <br />
            var x : Number;<br />
            <br />
            var y : Number;<br />
            <br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>这就是所谓的<em>绑定</em>函数，因为它前面有 <code>bound</code> 关键字。</p>
<blockquote> <hr />
注意：<code>bound</code> 关键字不能替换 <code>bind</code>
关键字；这两个关键字按如下所示方式结合使用。  <hr />
</blockquote>
<p>接下来，让我们添加一些代码来调用此函数并测试绑定：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var scale = 1.0;<br />
            <br />
            <br />
            <br />
            bound function makePoint(xPos : Number, yPos : Number) : Point {<br />
            <br />
            Point {<br />
            <br />
            x: xPos * scale<br />
            <br />
            y: yPos * scale<br />
            <br />
            }<br />
            <br />
            }<br />
            <br />
            <br />
            <br />
            class Point {<br />
            <br />
            var x : Number;<br />
            <br />
            var y : Number;<br />
            <br />
            }<br />
            <br />
            <strong><br />
            <br />
            var myX = 3.0;<br />
            <br />
            var myY = 3.0;<br />
            <br />
            def pt = bind makePoint(myX, myY);<br />
            <br />
            println(pt.x);<br />
            <br />
            <br />
            <br />
            myX = 10.0;<br />
            <br />
            println(pt.x);<br />
            <br />
            <br />
            <br />
            scale = 2.0;<br />
            <br />
            println(pt.x);</strong></pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>此脚本的输出如下所示：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>3.0<br />
            <br />
            10.0<br />
            <br />
            20.0</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>让我们分析一下此脚本（一次分析一部分）。</p>
<p>代码：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var myX = 3.0;<br />
            <br />
            var myY = 3.0;<br />
            <br />
            def pt = bind makePoint(myX, myY);<br />
            <br />
            println(pt.x);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>将脚本变量 <code>myX</code> 和 <code>myY</code> 初始化为 <code>3.0</code>。
这些值随后作为参数传递给  <code>makePoint</code> 函数，该函数会创建并返回一个新的 <code>Point</code>
对象。<code>bind</code>  关键字（位于 <code>makePoint</code> 调用前面）将新创建的 <code>Point</code>
对象 (<code>pt</code>)  绑定到 <code>makePoint</code> 函数的结果。</p>
<p>接下来，代码：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>myX = 10.0;<br />
            <br />
            println(pt.x);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>将 <code>myX</code> 的值更改为 <code>10.0</code> 并输出 <code>pt.x</code>
的值。输出表明  <code>pt.x</code> 现在也为 <code>10.0</code>。</p>
<p>最后，代码：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>scale = 2.0;<br />
            <br />
            println(pt.x);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>更改 <code>scale</code> 的值并再次输出 <code>pt.x</code> 的值。<code>pt.x</code>
的值现在为  <code>20.0</code>。但是，如果我们从该函数中删除 <code>bound</code>
关键字（从而使其成为非绑定函数），则输出应为：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>3.0<br />
            <br />
            10.0<br />
            <br />
            10.0</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>这是因为，非绑定函数只是在其某个参数发生变化时才被重新调用。由于 <code>scale</code>
不是函数的参数，因此更改它的值将不会导致另一个函数调用。</p>
<div><a name="sequences"><strong>对序列进行绑定</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>您还可以将 <code>bind</code> 与 <code>for</code>
表达式结合使用。为了对此进行研究，让我们首先定义两个序列并输出这两个序列中各个项的值：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var seq1 = [1..10];<br />
            <br />
            def seq2 = bind for (item in seq1) item*2;<br />
            <br />
            printSeqs();<br />
            <br />
            <br />
            <br />
            function printSeqs() {<br />
            <br />
            println("First Sequence:");<br />
            <br />
            for (i in seq1){println(i);}<br />
            <br />
            println("Second Sequence:");<br />
            <br />
            for (i in seq2){println(i);}<br />
            <br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p><code>seq1</code> 包含十个项（数字 1 至 10）。<code>seq2</code>
也包含十个项；这些项本来会与  <code>seq1</code> 具有相同的值，但是我们已经对其中的每个项都应用了表达式 <code>item*2</code>，
因此它们的值将加倍。</p>
<p>因此，输出为：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>First Sequence:<br />
            <br />
            1<br />
            <br />
            2<br />
            <br />
            3<br />
            <br />
            4<br />
            <br />
            5<br />
            <br />
            6<br />
            <br />
            7<br />
            <br />
            8<br />
            <br />
            9<br />
            <br />
            10<br />
            <br />
            Second Sequence:<br />
            <br />
            2<br />
            <br />
            4<br />
            <br />
            6<br />
            <br />
            8<br />
            <br />
            10<br />
            <br />
            12<br />
            <br />
            14<br />
            <br />
            16<br />
            <br />
            18<br />
            <br />
            20</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>我们可以通过将 <code>bind</code> 关键字放在 <code>for</code>
关键字前面来绑定这两个序列。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def seq2 = <strong>bind</strong> for (item in seq1) item*2;</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>问题现在变成：&#8220;如果 <code>seq1</code> 发生了某些变化，那么是 <code>seq2</code>
中的<em>所有</em>项都受到影响还是<em>部分</em>项受到影响？&#8221;我们可以通过以下方法来对此进行测试：将一个项（值 11）插入
<code>seq1</code> 的末尾处，然后输出这两个序列的值，看有什么变化：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var seq1 = [1..10];<br />
            <br />
            def seq2 = bind for (item in seq1) item*2;<br />
            <br />
            <strong>insert 11 into seq1;</strong><br />
            <br />
            printSeqs();<br />
            <br />
            <br />
            <br />
            function printSeqs() {<br />
            <br />
            println("First Sequence:");<br />
            <br />
            for (i in seq1){println(i);}<br />
            <br />
            println("Second Sequence:");<br />
            <br />
            for (i in seq2){println(i);}<br />
            <br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>输出：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>First Sequence:<br />
            <br />
            1<br />
            <br />
            2<br />
            <br />
            3<br />
            <br />
            4<br />
            <br />
            5<br />
            <br />
            6<br />
            <br />
            7<br />
            <br />
            8<br />
            <br />
            9<br />
            <br />
            10<br />
            <br />
            11<br />
            <br />
            Second Sequence:<br />
            <br />
            2<br />
            <br />
            4<br />
            <br />
            6<br />
            <br />
            8<br />
            <br />
            10<br />
            <br />
            12<br />
            <br />
            14<br />
            <br />
            16<br />
            <br />
            18<br />
            <br />
            20<br />
            <br />
            22</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>输出表明，将 11 插入 <code>seq1</code> 的末尾处不会影响 <code>seq2</code>
中的前 10 个项；新项会自动添加到  <code>seq2</code> 的末尾处，其值为 22。</p>
<div><a name="triggers"><strong>替换触发器</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p><em>替换触发器</em>是附加到变量的任意代码块，一旦变量的值发生变化，它们就会执行。以下示例显示了基本语法：
它定义一个  <code>password</code>
变量并向其附加一个替换触发器；当密码发生变化时，该触发器会输出一则消息来报告此变量的新值：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var password = "foo" <strong>on replace</strong> oldValue {<br />
            <br />
            println(""nALERT! Password has changed!");<br />
            <br />
            println("Old Value: {oldValue}");<br />
            <br />
            println("New Value: {password}");<br />
            <br />
            };<br />
            <br />
            <br />
            <br />
            password = "bar";</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>此示例的输出如下所示：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>ALERT! Password has changed!<br />
            <br />
            Old Value: <br />
            <br />
            New Value: foo<br />
            <br />
            <br />
            <br />
            ALERT! Password has changed!<br />
            <br />
            Old Value: foo<br />
            <br />
            New Value: bar</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>此示例中的触发器引发两次：当 <code>password</code> 初始化为 "foo"
时引发一次，当其值变成 "bar"  时又引发一次。请注意，<code>oldValue</code>
变量存储在调用触发器之前变量的值。您可以将 <code>oldValue</code>
变量命名为任何所需的名称，我们是由于该名称具有描述性才恰好使用它。</p>
<img src ="http://www.blogjava.net/asdtiang/aggbug/309688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-01-15 14:35 <a href="http://www.blogjava.net/asdtiang/articles/309688.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA FX语法学习----表达式</title><link>http://www.blogjava.net/asdtiang/articles/309687.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 15 Jan 2010 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/articles/309687.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/309687.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/articles/309687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/309687.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/309687.html</trackback:ping><description><![CDATA[<em>表达式</em>是可以生成某个结果值的代码段，可以结合使用表达式来生成&#8220;更大的&#8221;表达式。JavaFX Script
编程语言是表达式语言，这意味着一切（包括循环、条件甚至块）都是表达式。在某些情况下（如 <code>while</code>
表达式），表达式具有  <code>Void</code> 类型，这意味着它们不返回结果值<br />
<div><a name="block"><strong>块表达式</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p><em>块表达式</em>由一系列声明或表达式组成，它们括在花括号中并用分号进行分隔。块表达式的值是最后一个表达式
的值。如果块表达式中不包含表达式，则其类型为  <code>Void</code>。请注意，<code>var</code> 和 <code>def</code>
是表达式。</p>
<p>下面的块表达式对几个数字进行相加并将结果存储在一个名为 <code>total</code> 的变量中：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var nums = [5, 7, 3, 9];<br />
            var total = {<br />
            var sum = 0;<br />
            for (a in nums) { sum += a };<br />
            sum;<br />
            }<br />
            println("Total is {total}.");</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>运行此脚本将生成以下输出：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>Total is 24.</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>第一行 (<code>var nums = [5, 7, 3, 9];</code>) 声明一个整数序列。</p>
<p>第二行声明一个名为 <code>total</code> 的变量，该变量将用来存放这些整数的和。</p>
<p>随后的块表达式由左花括号和右花括号之间的所有内容构成：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>{<br />
            var sum = 0;<br />
            for (a in nums) { sum += a };<br />
            sum;<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>在该块内部，第一行代码声明一个名为 <code>sum</code>
的变量，该变量将用来存放此序列中各个数字之和。第二行（一个 <a href="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/index.html#for"><code>for</code>
表达式</a>）遍历该序列，将每个数字与 <code>sum</code>  相加。最后一行设置该块表达式的返回值（在本例中为 24）。</p>
<div><a name="if"><strong>if 表达式</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>使用 <code>if</code> 表达式后，<em><span style="color: red;">仅当</span></em>特定条件为真时才执行某些代码块，从而对程序流
进行定向。</p>
<p>例如，以下脚本基于年龄来设置票价。12 岁到 65 岁的人支付正常价 10 美元。老人和儿童支付 5 美元；5
岁以下的儿童免费。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def age = 8;<br />
            var ticketPrice;<br />
            <br />
            if (age &lt; 5 ) {<br />
            ticketPrice = 0;<br />
            } else if (age &lt; 12 or age &gt; 65) {<br />
            ticketPrice = 5;<br />
            } else {<br />
            ticketPrice = 10;<br />
            }<br />
            println("Age: {age} Ticket Price: {ticketPrice} dollars.");</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>如果将 <code>age</code> 设置为 8，该脚本将生成以下输出：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>Age: 8 Ticket Price: 5 dollars.</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>该示例的程序流如下所示：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre><strong>if (age &lt; 5 ) {<br />
            ticketPrice = 0;<br />
            }</strong> else if (age &lt; 12 or age &gt; 65) {<br />
            ticketPrice = 5;<br />
            } else {<br />
            ticketPrice = 10;<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>如果 <code>age</code> 小于 5，则票价将设置为 0。</p>
<p>程序随后将跳过其余条件测试并输出结果。</p>
<p>如果 <code>age</code> 不小于 5，程序将继续执行下一个条件测试（由后跟另一个 <code>if</code>
表达式的  <code>else</code> 关键字来指示）：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>if (age &lt; 5 ) {<br />
            ticketPrice = 0;<br />
            }<strong> else if (age &lt; 12 or age &gt; 65) {<br />
            ticketPrice = 5;<br />
            }</strong> else {<br />
            ticketPrice = 10;<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>如果人的年龄在 5 到 12 岁之间或者大于 65 岁，该程序会将票价设置为 5 美元。</p>
<p>如果人的年龄在 12 到 65 岁之间，程序会流至最后一个代码块（用 <code>else</code>
关键字进行标记）：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>if (age &lt; 5 ) {<br />
            ticketPrice = 0;<br />
            } else if (age &lt; 12 or age &gt; 65) {<br />
            ticketPrice = 5;<br />
            } <strong>else {<br />
            ticketPrice = 10;<br />
            }</strong></pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>只有当前面的所有条件均不满足时，才会执行此块。它会针对 12 到 65 岁之间的人将票价设置为 10 美元。</p>
<blockquote> <hr />
注：可以将上面的代码缩减成一个非常简洁的条件表达式：<br />
<br />
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>ticketPrice = if (age &lt; 5) 0 else if (age &lt; 12 or age &gt; 65) 5 else 10;</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
这是一个需要掌握的有用方法，在本教程的后
面部分中还会使用它。   <hr />
</blockquote>
<div><a name="range"><strong>范围表达式</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>&#8220;序列&#8221;一课讲授了一种用来声明形成等差数列的数字序列的简化表示法。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var num = [0..5];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>从技术上讲，<code>[0..5]</code> 是一个<em>范围表达式</em>。默认情况下，相邻值之间的间
隔为 1，但是您可以使用  <code>step</code> 关键字来指定一个不同的间隔。例如，定义一个由 1 到 10
之间的奇数构成的序列：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var nums = [1..10 step 2];<br />
            println(nums);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>此脚本的输出如下所示：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>[ 1, 3, 5, 7, 9 ]</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>要创建<em>降序范围</em>，请确保第二个值小于第一个值，并指定一个负的 step 值：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var nums = [10..1 step -1];<br />
            println(nums);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>输出为：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>[ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>如果您在创建降序范围时没有提供<em>负的</em> step 值，则会生成一个空序列。</p>
<p>以下代码：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var nums = [10..1 step 1];<br />
            println(nums);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>将生成下面的编译时警告：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>range.fx:1: warning: empty sequence range literal, probably not what you meant.<br />
            var nums = [10..1 step 1];<br />
            ^<br />
            1 warning</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>如果您完全忽略 step 值，也会生成一个空序列。</p>
<div><a name="for"><strong>for 表达式</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>另一个与序列有关的表达式是 <em>for</em> 表达式。<code>for</code>
表达式为遍历序列中的各个项提供了一种方便的机制。</p>
<p>以下代码提供了一个示例：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];<br />
            <br />
            for (day in days) {<br />
            println(day);<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>此脚本的输出如下所示：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>Mon<br />
            Tue<br />
            Wed<br />
            Thu<br />
            Fri<br />
            Sat<br />
            Sun</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>让我们将该示例分成几个部分。<code>for</code> 表达式以 "for" 关键字开头：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre><strong>for</strong> (day in days) {<br />
            println(day);<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p><code>days</code> 变量是要由 <code>for</code> 表达式处理的<em>输入序列</em>的
名称：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>for (day in <strong>days</strong>) {<br />
            println(day);<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>当 <code>for</code> 表达式遍历该序列时，<code>day</code> 变量用来存放当前项：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>for (<strong>day</strong> in days) {<br />
            println(day);<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>请注意，不需要在脚本中的其他位置声明 <code>day</code> 变量即可将其用在 <code>for</code>
表达式中。此外，在完成整个循环之后，将无法访问 <code>day</code>。程序员通常会赋予临时变量（如该变量）非常短的名称（或由一个
字母构成的名称）。</p>
<p>在上例中，未显示 <code>for</code> 返回值；但 <code>for</code>
也是一个返回序列的表达式。以下代码显示了两个使用  <code>for</code> 表达式从另一个序列创建序列的示例：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>// Resulting sequence squares the values from the original sequence.<br />
            var squares = for (i in [1..10]) i*i; <br />
            <br />
            // Resulting sequence is ["MON", "TUE", "WED", and so on...]<br />
            var capitalDays = for (day in days) day.toUpperCase();</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>请注意，<code>toUpperCase</code> 函数由 <code>String</code>
对象提供。您可以通过查阅 API  文档来查看完整的可用函数列表。</p>
<div><a name="while"><strong>while 表达式</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>另一个循环结构是 <em>while</em> 表达式。与作用于序列中项的 <code>for</code>
表达式不同，<code>while</code>  表达式会一直循环，直到给定的表达式为 <code>false</code> 为止。尽管 <code>while</code>
在语法上是表达式，但是它的类型为  <code>Void</code>，不返回值。</p>
<p>下面提供了一个示例：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var count = 0;<br />
            while (count &lt; 10) {<br />
            println("count == {count}");<br />
            count++;<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>此脚本的输出如下所示：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>count == 0<br />
            count == 1<br />
            count == 2<br />
            count == 3<br />
            count == 4<br />
            count == 5<br />
            count == 6<br />
            count == 7<br />
            count == 8 <br />
            count == 9</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>第一行声明一个名为 <code>count</code> 的变量并将其初始化为 0：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre><strong>var count = 0;</strong><br />
            while (count &lt; 10) {<br />
            println("count == {count}");<br />
            count += 1;<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>第二行以 <code>while</code>
表达式开头。此表达式创建了一个循环（在左花括号和右花括号之间），该循环会一直进行，直到  <code>count &lt; 10</code>
的值为 <code>false</code> 为止：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var count = 0;<br />
            <strong>while (count &lt; 10) {</strong><br />
            println("count == {count}");<br />
            count += 1;<strong><br />
            }</strong></pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>While 表达式的主体会输出 <code>count</code> 的当前值，然后将 <code>count</code>
的值加 1：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var count = 0;<br />
            while (count &lt; 10) { <strong><br />
            println("count == {count}");<br />
            count += 1;</strong><br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>当 <code>count</code> 等于 10 时，循环退出。要创建一个无限循环，请将 <code>true</code>
关键字放在左小括号和右小括号之间，如 <code>while(true){}</code> 中所示。</p>
<div><a name="break"><strong>break 和 continue 表达式</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p><code>break</code> 和 <code>continue</code>
表达式与循环表达式有关。这两个表达式会影响循环迭代：<code>break</code> 完全放弃循环，而 <code>continue</code>
仅放弃当前迭代。</p>
<p>尽管 <code>break</code> 和 <code>continue</code>
在语法上是表达式，但它们的类型为  <code>Void</code>，不返回值。</p>
<p>示例：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>for (i in [0..10]) {<br />
            if (i &gt; 5) {<br />
            break;<br />
            }<br />
            <br />
            if (i mod 2 == 0) {<br />
            continue;<br />
            }<br />
            <br />
            println(i);<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>输出：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>1<br />
            3<br />
            5</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>如果没有 <code>if</code> 表达式，该程序将只是输出 0 到 10 之间的数字。</p>
<p>如果只有第一个 <code>if</code> 表达式，程序将在 <code>i</code> 的值大于 5 时<em>中
断</em>循环：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>if (i &gt; 5) {<br />
            break;<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>因此，程序将仅输出 1 到 5 之间的数字。</p>
<p>通过添加第二个 <code>if</code> 表达式，程序将仅放弃循环的当前迭代而<em>继续</em>执行下一
个迭代：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>if (i mod 2 == 0) {<br />
            continue;<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>在这种情况下，只有当 <code>i</code> 为偶数（即 <code>i</code> 能被 2
整除，没有余数）时才执行  <code>continue</code>。出现这种情况时，将永远不会调用 <code>println()</code>，
因此输出中将不包含该数字。</p>
<div><a name="throw"><strong>throw、try、catch 和 finally 表达式</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/javafx/1/tutorials/core/expressions/exp_files/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>在实际的应用程序中，正常的脚本执行流有时会被某个事件中止。例如，如果脚本从某个文件中读取输入，但是找不到该文件，该
脚本将无法继续。我们将这种情况称为&#8220;异常&#8221;。</p>
<blockquote> <hr />
注意：异常是对象。它们的类型通常以它们所表示的情况命名（例如，<code>FileNotFoundException</code>
表示找不到文件的情况）。但是，定义一组特定于即将给出的示例的异常不在本节的讨论范围之内。因此，我们将使用一个通用的 <code>Exception</code>
对象（从 Java 编程语言借用而来）来说明 <code>throw</code>、<code>try</code>、<code>catch</code>
和  <code>finally</code> 表达式。  <hr />
</blockquote>
<p>以下脚本定义（和调用）一个会抛出异常的函数：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>import java.lang.Exception;<br />
            <br />
            foo();<br />
            <br />
            println("The script is now executing as expected... ");<br />
            <br />
            function foo() {<br />
            var somethingWeird = false;<br />
            <br />
            if(somethingWeird){<br />
            throw new Exception("Something weird just happened!");<br />
            } else {<br />
            println("We made it through the function.");<br />
            }<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>按原样运行此脚本（将 <code>somethingWeird</code> 设置为 <code>false</code>）
将输出以下消息：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>We made it through the function.<br />
            The script is now executing as expected...</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>但是，如果将该变量更改为 <code>true</code>，则会抛出异常。在运行时，该脚本将崩溃并显示以下消息：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>Exception in thread "main" java.lang.Exception: Something weird just happened!<br />
            at exceptions.foo(exceptions.fx:10)<br />
            at exceptions.javafx$run$(exceptions.fx:3)</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>为了防止崩溃，我们将需要使用 try/catch 表达式来包装 <code>foo()</code>
调用。顾名思义，这些表达式<em>尝试</em>执行某些代码，但会在出现问题时<em>捕捉</em>异常：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre><strong>try</strong> {<br />
            foo();<br />
            } <strong>catch</strong> (e: Exception) {<br />
            println("{e.getMessage()} (but we caught it)");<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>现在，程序不会崩溃，而只是输出：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>Something weird just happened! (but we caught it)<br />
            The script is now executing as expected...</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>还有一个 <em>finally</em> 块（它在技术上不是表达式），无论是否抛出了异常，该块始终在 try
表达式退出之后的某个时间执行。<code>finally</code> 块用来执行无论 <code>try</code>
主体是成功还是抛出异常都需要执行的清除操作。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>try {<br />
            foo();<br />
            } catch (e: Exception) {<br />
            println("{e.getMessage()} (but we caught it)");<br />
            }<strong> finally</strong> {<br />
            println("We are now in the finally expression...");<br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>程序输出现在为：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<pre>Something weird just happened! (but we caught it)<br />
We are now in the finally expression...<br />
The script is now executing as expected...</pre>
<br />
<img src ="http://www.blogjava.net/asdtiang/aggbug/309687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-01-15 14:23 <a href="http://www.blogjava.net/asdtiang/articles/309687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA FX语法学习----运算符</title><link>http://www.blogjava.net/asdtiang/articles/309676.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 15 Jan 2010 05:03:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/articles/309676.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/309676.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/articles/309676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/309676.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/309676.html</trackback:ping><description><![CDATA[&nbsp;<br />
<div><a name="assignment"><strong>赋值运算符</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p><em>赋值运算符</em> "=" 是您将遇到的最常用的运算符。使用该运算符可以将其右侧的值赋给其左侧的操作数：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" height="98" width="879">
    <tbody>
        <tr>
            <td>
            <pre>result = num1 + num2;<br />
            <br />
            <br />
            <br />
            days = ["Mon","Tue","Wed","Thu","Fri"];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<br />
<div><a name="arithmetic"><strong>算术运算符</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>使用<em>算术运算符</em>可以执行加、减、乘和除运算。<code>mod</code>
运算符用一个操作数除以另一个操作数并将余数作为结果返回。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>+ （加运算符）<br />
            <br />
            <br />
            <br />
            - （减运算符）<br />
            <br />
            <br />
            <br />
            * （乘运算符）<br />
            <br />
            <br />
            <br />
            / （除运算符）<br />
            <br />
            <br />
            <br />
            mod （求余运算符）</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>以下脚本提供了一些示例：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var result = 1 + 2; // result is now 3<br />
            <br />
            <br />
            <br />
            println(result);<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            result = result - 1; // result is now 2<br />
            <br />
            <br />
            <br />
            println(result);<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            result = result * 2; // result is now 4<br />
            <br />
            <br />
            <br />
            println(result);<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            result = result / 2; // result is now 2<br />
            <br />
            <br />
            <br />
            println(result);<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            result = result + 8; // result is now 10<br />
            <br />
            <br />
            <br />
            println(result);<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            result = result mod 7; // result is now 3<br />
            <br />
            <br />
            <br />
            println(result);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>您还可以结合使用算术运算符与赋值运算符来创建<em>复合赋值</em>。例如，<code>result += 1;</code>
和 <code>result  = result+1;</code> 都会将 <code>result</code> 的值加 1。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var result = 0;<br />
            <br />
            <br />
            <br />
            result += 1;<br />
            <br />
            <br />
            <br />
            println(result); // result is now 1<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            result -= 1;<br />
            <br />
            <br />
            <br />
            println(result); // result is now 0<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            result = 2;<br />
            <br />
            <br />
            <br />
            result *= 5; // result is now 10<br />
            <br />
            <br />
            <br />
            println(result);<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            result /= 2; // result is now 5<br />
            <br />
            <br />
            <br />
            println(result);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>唯一不能按照此方式使用的算术运算符是 <code>mod</code>。例如，如果您希望将 <code>result</code>
除以  2，然后将余数重新赋给其自身，则需要编写：<code>result = result mod 2;</code></p>
<div><a name="unary"><strong>一元运算符</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>大多数运算符都需要两个操作数，而<em>一元运算符</em>仅使用一个操作数来执行诸如按一递增/递减某个值、对某个
数字求反或对布尔值求反之类的操作。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>-  一元减运算符；对某个数字求反<br />
            <br />
            <br />
            <br />
            ++   递增运算符；按 1 递增某个值<br />
            <br />
            <br />
            <br />
            --     递减运算符；按 1 递减某个值<br />
            <br />
            <br />
            <br />
            not    逻辑求补运算符；对布尔值求反</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>以下脚本用于测试一元运算符：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var result = 1; // result is now 1<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            result--;  // result is now 0<br />
            <br />
            <br />
            <br />
            println(result);<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            result++; // result is now 1<br />
            <br />
            <br />
            <br />
            println(result);<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            result = -result; // result is now -1<br />
            <br />
            <br />
            <br />
            println(result);<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            var success = false;<br />
            <br />
            <br />
            <br />
            println(success); // false<br />
            <br />
            <br />
            <br />
            println(not success); // true</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>递增/递减运算符可以在操作数之前（前缀）或之后（后缀）应用。代码 <code>result++;</code> 和
<code>++result;</code> 都将导致 <code>result</code> 的值加 1。二者之间的唯一区别就是前缀版本
(<code>++result</code>) 得到的是递增后的值，而后缀版本 (<code>result++</code>)
得到的是原始值。（您可以通过以下方法来记忆：<code>++result</code> 先执行递增再获得值，而 <code>result++</code>
先获得值再执行递增。）如果您只是执行简单的递增/递减，则选择哪个版本都一样。但是，如果您将该运算符作为较大表达式的一部分进行使用，则选择不同的版
本会对结果产生很大的影响。</p>
<p>以下脚本说明了这种区别：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var result = 3;<br />
            <br />
            <br />
            <br />
            result++;<br />
            <br />
            <br />
            <br />
            println(result); // result is now 4<br />
            <br />
            <br />
            <br />
            ++result;<br />
            <br />
            <br />
            <br />
            println(result); // result is now 5<br />
            <br />
            <br />
            <br />
            println(++result); // result is now 6<br />
            <br />
            <br />
            <br />
            println(result++); // this still prints 6!<br />
            <br />
            <br />
            <br />
            println(result); // but the result is now 7</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<div><a name="relational"><strong>相等和关系运算符</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>相等和关系运算符确定一个操作数是大于、小于、等于还是不等于另一个操作数。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>== 等于<br />
            <br />
            <br />
            <br />
            != 不等于<br />
            <br />
            <br />
            <br />
            &gt; 大于<br />
            <br />
            <br />
            <br />
            &gt;= 大于或等于<br />
            <br />
            <br />
            <br />
            &lt; 小于<br />
            <br />
            <br />
            <br />
            &lt;= 小于或等于</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>以下脚本用于测试这些操作数：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def num1 = 1;<br />
            <br />
            <br />
            <br />
            def num2 = 2;<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            println(num1 == num2); // prints false<br />
            <br />
            <br />
            <br />
            println(num1 != num2); // prints true<br />
            <br />
            <br />
            <br />
            println(num1 &gt; num2);  // prints false<br />
            <br />
            <br />
            <br />
            println(num1 &gt;= num2); // prints false<br />
            <br />
            <br />
            <br />
            println(num1 &lt; num2);  // prints true<br />
            <br />
            <br />
            <br />
            println(num1 &lt;= num2); // prints true</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<div><a name="conditional"><strong>条件运算符</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p><em>条件与 (and)</em> 和<em>条件或 (or)</em>
运算符用于对两个布尔表达式执行条件运算。这些运算符会表现出&#8220;短路&#8221;行为，也就是说，仅在必要时才计算第二个操作数：例如，对于 <code>and</code>
运算，如果第一个表达式的结果为 false，将不计算第二个表达式。对于 <code>or</code> 运算，如果第一个表达式的结果为  <code>true</code>，
将不计算第二个表达式。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>and<br />
            <br />
            <br />
            <br />
            or</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>以下脚本定义了 <code>username</code> 和 <code>password</code>
变量，然后输出各个条件的匹配项，从而说明了这些运算符的用法：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def username = "foo";<br />
            <br />
            <br />
            <br />
            def password = "bar";<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            if ((username == "foo") and (password == "bar")) {<br />
            <br />
            <br />
            <br />
            println("Test 1: username AND password are correct");<br />
            <br />
            <br />
            <br />
            }<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            if ((username == "") and (password == "bar")) {<br />
            <br />
            <br />
            <br />
            println("Test 2: username AND password is correct");<br />
            <br />
            <br />
            <br />
            }<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            if ((username == "foo") or (password == "bar")) {<br />
            <br />
            <br />
            <br />
            println("Test 3: username OR password is correct");<br />
            <br />
            <br />
            <br />
            }<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            if ((username == "") or (password == "bar")) {<br />
            <br />
            <br />
            <br />
            println("Test 4: username OR password is correct");<br />
            <br />
            <br />
            <br />
            }</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>输出为：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>Test 1: username AND password are correct<br />
            <br />
            <br />
            <br />
            Test 3: username OR password is correct<br />
            <br />
            <br />
            <br />
            Test 4: username OR password is correct</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<div><a name="comparison"><strong>类型比较运算符</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p><code>instanceof</code>
运算符将对象与指定的类型相比较。您可以使用该运算符来确定某个对象是否为特定类的实例：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def str1="Hello";<br />
            <br />
            <br />
            <br />
            println(str1 instanceof String);  // prints true<br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            <br />
            def num = 1031;<br />
            <br />
            <br />
            <br />
            println(num instanceof integer); // prints true</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>在本教程的最后一课中深入了解类和继承后，您将发现该运算符非常有用。</p>
<img src ="http://www.blogjava.net/asdtiang/aggbug/309676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-01-15 13:03 <a href="http://www.blogjava.net/asdtiang/articles/309676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA FX语法学习-----序列</title><link>http://www.blogjava.net/asdtiang/articles/309671.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 15 Jan 2010 04:58:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/articles/309671.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/309671.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/articles/309671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/309671.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/309671.html</trackback:ping><description><![CDATA[<p>创建序列的一种方法是显式列出其各个项。每个项都用一个逗号进行分隔，列表用方括号 "<code>[</code>" 和 "<code>]</code>"
括起来。例如，下面的代码：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def weekDays = ["Mon","Tue","Wed","Thu","Fri"];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>声明了一个序列并将其赋给 <code>weekDays</code>。我们在这个例子中使用了  <code>def</code>，
因为在创建序列后我们不打算改变它的值。这里，编译器知道我们打算创建一个&#8220;字符串序列&#8221;，因为每个项都声明为  <code>String</code>
字面值。如果序列是使用 <code>Integer</code> 声明的（例如，<code>def nums =  [1,2,3];</code>），
编译器将知道我们打算创建&#8220;整数序列&#8221;。</p>
<p>您还可以显式指定序列的类型，方法是修改序列的声明，使其包含后跟 "[]" 的类型名称。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def weekDays: String[] = ["Mon","Tue","Wed","Thu","Fri"];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>这会通知编译器 <code>weekDays</code> 将用来存放 <code>String</code>
序列（而不是单个  <code>String</code>）。</p>
<p>您还可以在序列中声明其他序列：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def days = [weekDays, ["Sat","Sun"]];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>在这种情况下，编译器将自动平展开嵌套的序列以构成单个序列，这样上面的代码就等效于：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>还可以通过简化表示法来更方便地创建可构成等差数列的序列。要创建一个由数字 1 至 100
构成的序列，请使用以下代码：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<pre>def nums = [1..100];<br />
<br />
</pre>
<div><a name="predicates"><strong>使用谓词</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>您可以使用布尔表达式（又称为<em>谓词</em>）声明一个为现有序列的子集的新序列。例如，请考虑以下代码：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def nums = [1,2,3,4,5];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>要创建第二个序列（基于此第一个序列中的项）但仅包含大于 2 的数字，请使用以下代码：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def numsGreaterThanTwo = nums[n | n &gt; 2];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>可以将上面的代码行用中文表示为：&#8220;从 <code>nums</code> 序列中选择<strong>项值大于 2</strong>
的所有项并将这些项赋给名为 <code>numsGreaterThanTwo</code> 的新序列。&#8221;以粗体突出显示的&#8220;项值大于
2&#8221;子句是谓词。</p>
<p>在这些代码中：</p>
<ol>
    <li>新创建的序列存储在 <code>numsGreaterThanTwo</code> 中。</li>
    <li>代码 <code><strong>nums</strong>[n | n &gt; 2];</code>
    中标记为粗体的部分指定要从中复制项的原始序列。在我们的示例中，<code>nums</code> 是原始序列的名称。</li>
    <li>这会选择 <code>nums</code> 中的项，并按顺序返回一个由使表达式为 true
    的项构成的新序列。</li>
    <li>"|" 字符用来在视觉上将变量 "n" 与代码的其余部分隔开：<code>nums[n <strong>|</strong>
    n &gt;  2];</code></li>
    <li>代码 <code>nums[n | <strong>n &gt; 2</strong>];</code>
    中标记为粗体的部分定义一个布尔<em>表达式</em>，该表达式指定将当前项复制到新序列中时需要满足的条件。</li>
</ol>
<div><a name="accessingItems"><strong>访问序列中的项</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>序列中的项是按数字索引（从 0
开始）进行访问的。要访问单个项，请键入序列名称，后跟该项的数字索引（用方括号括起来）：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];<br />
            <br />
            println(days[0]);<br />
            println(days[1]);<br />
            println(days[2]);<br />
            println(days[3]);<br />
            println(days[4]);<br />
            println(days[5]);<br />
            println(days[6]);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>这会将以下内容输出到屏幕上：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>Mon<br />
            Tue<br />
            Wed<br />
            Thu<br />
            Fri<br />
            Sat<br />
            Sun</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>您还可以使用后跟序列名称的 <code>sizeof</code> 运算符来确定序列的大小：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>sizeof days</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>以下代码会将 "7" 输出到屏幕上：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];<br />
            println(sizeof days);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<div><a name="insertingItems"><strong>在序列中插入项</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p><code>insert</code> 关键字可用于在序列中特定项的<em>前面</em>或<em>后面</em><em>插
入</em>一个项。</p>
<blockquote> <hr />
注：从技术上讲,序列是<em>不可变的</em>，即一经创建就永不更改。在修改序列（例如通过插入或删除项）时，会在后台创
建一个新序列并重新指定序列变量，这会给人一种序列已被修改的印象。   <hr />
</blockquote>
<p>让我们通过重新创建 <code>days</code> 序列来对此进行研究。请注意，我们现在用 <code>var</code>
来声明变量  <code>days</code>，因为我们会在创建原始序列后改变它的值：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var days = ["Mon"];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>此时，该序列仅包含一个项 <code>"Mon"</code>。</p>
<p>我们可以使用 <code>insert</code> 和 <code>into</code>
关键字在该序列的末尾插入  <code>"Tue"</code>：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>insert "Tue" into days;</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>类似地，我们也可以添加 <code>"Fri"</code>、<code>"Sat"</code> 和 <code>"Sun"</code>：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>insert "Fri" into days;<br />
            insert "Sat" into days;<br />
            insert "Sun" into days;</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>该序列中现在包含：<code>"Mon"</code>、<code>"Tue"</code>、<code>"Fri"</code>、<code>"Sat"</code>
和 <code>"Sun"</code>。</p>
<p>我们还可以使用 <code>insert</code> 和 <code>before</code>
关键字在给定索引处的项前面插入一个项。请记住，索引是从  0 开始的，因此，在当前的序列中，<code>"Fri"</code> 位于索引位置
2。因此，我们可以在 <code>"Fri"</code> 前面插入  <code>"Thu"</code>，如下所示：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>insert "Thu" before days[2];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>该序列中现在包含：<code>"Mon"</code>、<code>"Tue"</code>、<code>"Thu"</code>、<code>"Fri"</code>、<code>"Sat"</code>
和 <code>"Sun"</code>。</p>
<p>要在 <code>"Tue"</code> 后面插入 <code>"Wed"</code>，我们可以使用 <code>insert</code>
和  <code>after</code> 关键字：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>insert "Wed" after days[1];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>该序列现在包含一周中的每一天：<code>"Mon"</code>、<code>"Tue"</code>、<code>"Wed"</code>、<code>"Thu"</code>、<code>"Fri"</code>、<code>"Sat"</code>
和 <code>"Sun"</code>。</p>
<div><a name="deletingItems"><strong>从序列中删除项</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>通过使用 <code>delete</code> 和 <code>from</code>
关键字可以轻松地从序列中删除项：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>delete "Sun" from days;</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>该序列中现在包含：<code>"Mon"</code>、<code>"Tue"</code>、<code>"Wed"</code>、<code>"Thu"</code>、<code>"Fri"</code>
和 <code>"Sat"</code>。</p>
<p>还可以删除位于特定索引位置的项。以下代码从该序列中删除 <code>"Mon"</code>（请记住，<code>"Mon"</code>
是第一个项，因此它的索引位置为 0）。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>delete days[0];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>要删除序列中的所有项，请使用后跟序列名称的 <code>delete</code> 关键字：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>delete days;</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>请注意，<code>delete</code> 仅从序列中删除项，而不从脚本中删除 <code>days</code>
变量。您仍可以像以前那样访问  <code>days</code> 变量并向其中添加新项。</p>
<div><a name="reverse"><strong>颠倒序列中项的次序</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>使用 <code>reverse</code> 运算符可以轻松地颠倒序列中项的次序：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>var nums = [1..5];<br />
            reverse nums; // returns [5, 4, 3, 2, 1]</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<div><a name="comparing"><strong>比较序列</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>有时，您可能希望对序列进行比较，看它们是否相等。序列是按值来比较是否相等的：如果它们的长度相同而且各个项相等，则它
们相等。</p>
<p>让我们创建两个具有相同内容的序列来对此进行测试：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def seq1 = [1,2,3,4,5];<br />
            def seq2 = [1,2,3,4,5];<br />
            println(seq1 == seq2);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>表达式 <code>seq1 == seq2</code> 的值为  <code>true</code>，因为这两
个序列具有相同数量的项，而且这两个序列中每个项的值都相等。因此，这些代码会将 "true" 输出到屏幕上。</p>
<p>通过更改其中一个序列中项的数量（而不更改另一个序列），这两个序列现在具有不同的长度：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def seq1 = [1,2,3,4,5];<br />
            def seq2 = [1,2,3,4,5,6];<br />
            println(seq1 == seq2);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>由于第二个序列比第一个序列长，从而这两个序列不相等，因此该脚本的输出为 "false"。</p>
<p>我们还可以通过更改项的值来使两个序列不相等（即使这两个序列的长度仍相同）：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def seq1 = [1,2,3,4,5];<br />
            def seq2 = [1,3,2,4,5];<br />
            println(seq1 == seq2);</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>由于这两个序列不相等，因此这些代码将再次输出 "false"。</p>
<div><a name="slices"><strong>使用序列子集</strong></a></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td><img src="http://developers.sun.com.cn/export/sites/default/im/a.gif" alt=" " border="0" height="4" width="1" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>序列<em>子集</em>提供对序列某些部分的访问。</p>
<p><strong>seq[a..b]</strong></p>
<p>此语法提供对位于索引 <code>a</code> 和索引 <code>b</code>之间（含 a 和
b）各个项的访问。以下脚本创建一个  <code>weekend</code> 序列，其中仅包含 <code>"Sat"</code> 和 <code>"Sun"</code>
项。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];<br />
            def weekend = days[5..6];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p><strong>seq[a..&lt;b]</strong></p>
<p>使用 "&lt;" 字符可以访问位于索引 <code>a</code> 和索引 <code>b</code>
之间（含 a，<em>不含</em>  b）的项。我们可以对 <code>days</code> 使用此方法来创建一个 <code>weekdays</code>
序列，其中包含项  <code>"Mon"</code> 至 <code>"Fri"</code>。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];<br />
            def weekdays = days[0..&lt;5];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p><strong>seq[a..]</strong></p>
<p>通过省略第二个索引，可以访问从索引 <code>a</code>
到序列末尾处的所有项。为了与上一个示例保持一致，我们可以按如下方式创建  <code>weekend</code> 序列：</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];<br />
            def weekend = days[5..];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p><strong>seq[a..&lt;]</strong></p>
<p>最后，您可以使用不带第二个索引的 "&lt;" 来访问从索引 <code>a</code> 到序列末尾处的所有项（<em>不
含</em>最后一项）。</p>
<!--
<div><strong>Lorem Ipsem Dolor</strong></div>
<div>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="grey4">
    <tr>
        <td><img src="/im/a.gif" width="1" height="4" border="0" alt=" "  /></td>
    </tr>
</table>
</div>
-->
<table border="0" cellpadding="10" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td>
            <pre>def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];<br />
            def days2 = days[0..&lt;];</pre>
            </td>
        </tr>
    </tbody>
</table>
&nbsp;<br />
<p>此版本会创建一个 <code>days2</code> 序列，其中包含项 <code>"Mon"</code> 至
<code>"Sat"</code>。</p>
<pre><br />
</pre>
<img src ="http://www.blogjava.net/asdtiang/aggbug/309671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-01-15 12:58 <a href="http://www.blogjava.net/asdtiang/articles/309671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA FX语法学习----基础</title><link>http://www.blogjava.net/asdtiang/articles/309662.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Fri, 15 Jan 2010 04:14:00 GMT</pubDate><guid>http://www.blogjava.net/asdtiang/articles/309662.html</guid><wfw:comment>http://www.blogjava.net/asdtiang/comments/309662.html</wfw:comment><comments>http://www.blogjava.net/asdtiang/articles/309662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asdtiang/comments/commentRss/309662.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asdtiang/services/trackbacks/309662.html</trackback:ping><description><![CDATA[脚本变量是使用 <code>var</code> 或 <code>def</code>
关键字声明的。二者之间的区别在于：<br />
&nbsp;&nbsp;&nbsp; 在脚本的整个生命周期内都可以为 <code>var</code> 变量赋予新值，<br />
&nbsp;&nbsp;&nbsp; 而 <code>def</code>
变量在被首次赋予新值后将保持不变。<br />
函数实例：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">function&nbsp;add(argOne:&nbsp;Integer,&nbsp;argTwo:&nbsp;Integer)&nbsp;:&nbsp;Integer&nbsp;{<br />
<br />
result&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;argOne&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;argTwo;</span><span style="color: #008000;">//</span><span style="color: #008000;">红色表示参数和返回类型</span><span style="color: #008000;"><br />
</span><span style="color: #000000;"><br />
println(</span><span style="color: #000000;">"</span><span style="color: #000000;">{argOne}&nbsp;+&nbsp;{argTwo}&nbsp;=&nbsp;{result}</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;result;<br />
<br />
}</span><br />
</div>
<pre>一个类的实例：<br />
<br />
其实有了JAVA的基础，类的概念还是比较好理解的。只是写法上不同而已<br />
</pre>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Address&nbsp;{<br />
<br />
&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;var&nbsp;street;<br />
&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;var&nbsp;city;<br />
&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;var&nbsp;state;<br />
&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;var&nbsp;zip;<br />
}<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000;">//</span><span style="color: #008000;">/在另一个类中的使用</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">def&nbsp;myAddress&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Address&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;street:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">1&nbsp;Main&nbsp;Street</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;city:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Santa&nbsp;Clara</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">CA</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zip:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">95050</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
}<br />
var&nbsp;address;<br />
<br />
</span>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">address</span><span style="color: #000000;">=</span><span style="color: #000000;">Address{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;street:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">1&nbsp;Main&nbsp;Street</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;city:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Santa&nbsp;Clara</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">CA</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zip:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">95050</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
</div>
<pre></pre>
<br />
</div>
<pre>数据类型：JavaFX Script 编程语言支持字符串类型、数值类型、布尔  (true/false)  <br />
<br />
类型。还支持基于时间（持续时间）的类型，以及用于指示函数不返回任何值和指示缺少正常值的特殊类型<br />
<br />
A:String<br />
</pre>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">def&nbsp;name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">Joe</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br />
var&nbsp;s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Hello&nbsp;{name}</span><span style="color: #000000;">"</span><span style="color: #000000;">;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;s&nbsp;=&nbsp;'Hello&nbsp;Joe'</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">def&nbsp;answer&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br />
var&nbsp;s&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">The&nbsp;answer&nbsp;is&nbsp;{if&nbsp;(answer)&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Yes</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;else&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">No</span><span style="color: #000000;">"</span><span style="color: #000000;">}</span><span style="color: #000000;">"</span><span style="color: #000000;">;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;s&nbsp;=&nbsp;'The&nbsp;answer&nbsp;is&nbsp;Yes'</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">def&nbsp;one&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">This&nbsp;example&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
def&nbsp;two&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">joins&nbsp;two&nbsp;strings.</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
def&nbsp;three&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">{one}{two}</span><span style="color: #000000;">"</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;join&nbsp;string&nbsp;one&nbsp;and&nbsp;string&nbsp;two</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">println(three);</span></div>
<pre>B：Number and Integer<br />
</pre>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">def&nbsp;numOne&nbsp;:&nbsp;Number&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1.0</span><span style="color: #000000;">;<br />
def&nbsp;numTwo&nbsp;:&nbsp;Integer&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />
<br />
</span></div>
<pre>这两种类型之间的区别是，<code>Number</code> 表示浮点数字，而 <code>Integer</code>  <br />
<br />
仅表示整数。只有当您确实需要浮点精度时才应使用 <code>Number</code>，否则应首选 <code>Integer</code><br />
<br />
<span style="color: red;">注意</span>：从 SDK 1.1 开始，该语言还包含与 Java  编程语言中的数值类型相一致的数值类型。因此，<br />
数值类型的完整列表为：<code><br />
Byte</code>、<code>Short</code>、<code>Number</code>、<code>Integer</code>、<code>Long</code>、<code>Float</code>、<code>Double</code>和 <code>Character</code>。<br />
但以上给出的建议仍是正确的：大多数程序员在其编写的脚本中只需要使用  <code>Integer</code>（或<code>Number</code>）。<br />
如果您在学习该语言时具有 Java  <br />
<br />
编程语言背景并且需要完成一个必须使用其他数值类型的任务，那么请记住您的脚本现在可以使用这些附加类型。 <br />
<br />
D：其它<br />
function printMe() :Void{  ///注意V是大写的<br />
println("I don't return anything!");<br />
<br />
<code>Duration</code> 类型表示固定的时间单元（毫秒、秒、分钟或小时）。<br />
null 是一个特殊的值，用来指示缺少正常值。null 与零或空字符串不同，因此 <code>null</code>比较与零或空字符串比较不同。<br />
</pre>
<img src ="http://www.blogjava.net/asdtiang/aggbug/309662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asdtiang/" target="_blank">asdtiang</a> 2010-01-15 12:14 <a href="http://www.blogjava.net/asdtiang/articles/309662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>