﻿<?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-杰点-文章分类-JAVA</title><link>http://www.blogjava.net/zk0000/category/47469.html</link><description>hello java</description><language>zh-cn</language><lastBuildDate>Thu, 20 Jan 2011 00:20:20 GMT</lastBuildDate><pubDate>Thu, 20 Jan 2011 00:20:20 GMT</pubDate><ttl>60</ttl><item><title>交通灯</title><link>http://www.blogjava.net/zk0000/articles/342754.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Tue, 11 Jan 2011 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/342754.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/342754.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/342754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/342754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/342754.html</trackback:ping><description><![CDATA[交通灯的核心是：由路来生成车，并且检测灯的颜色来放行汽车。抽象了现实的随机车辆行驶。<br />
<br />
灯的数量是确定的，使用了枚举。并且由车的通行对称性，得出对称的灯颜色需要一致。并使用定时器设置灯的点亮。<br />
<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">抽象出所有的灯，共12个灯</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;traffic;<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">每个方向都有一个灯，因为车辆行驶是对称结构，&nbsp;并且对称的等的显示颜色是一样的</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">enum</span><span style="color: #000000">&nbsp;Lamp&nbsp;{<br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">元素各表示一个控制方向的灯&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;S2N(</span><span style="color: #000000">"</span><span style="color: #000000">N2S</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">S2W</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #0000ff">false</span><span style="color: #000000">),S2W(</span><span style="color: #000000">"</span><span style="color: #000000">N2E</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">E2W</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #0000ff">false</span><span style="color: #000000">),E2W(</span><span style="color: #000000">"</span><span style="color: #000000">W2E</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">E2S</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #0000ff">false</span><span style="color: #000000">),E2S(</span><span style="color: #000000">"</span><span style="color: #000000">W2N</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">S2N</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #0000ff">false</span><span style="color: #000000">),<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;N2S(</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">false</span><span style="color: #000000">),N2E(</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">false</span><span style="color: #000000">),W2E(</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">false</span><span style="color: #000000">),W2N(</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">false</span><span style="color: #000000">),<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">这几个方向已经包含在了上面定义的方向中</span><span style="color: #008000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;S2E(</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">true</span><span style="color: #000000">),E2N(</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">true</span><span style="color: #000000">),N2W(</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">true</span><span style="color: #000000">),W2S(</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Lamp(String&nbsp;opposite,String&nbsp;next,</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;lighted){<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.opposite&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;opposite;<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;next;<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.lighted&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;lighted;<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;lighted;<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;opposite;<br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;next;<br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;isLighted(){<br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">是否绿灯</span><span style="color: #008000"><br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;lighted;<br />
</span><span style="color: #008080">31</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">32</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">33</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">对称方向的灯颜色要一致</span><span style="color: #008000"><br />
</span><span style="color: #008080">34</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;light(){<br />
</span><span style="color: #008080">35</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.lighted&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
</span><span style="color: #008080">36</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(opposite&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">){<br />
</span><span style="color: #008080">37</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lamp.valueOf(opposite).light();<br />
</span><span style="color: #008080">38</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">39</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;lamp&nbsp;is&nbsp;green，有6个方向可以看到车通过</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">40</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">41</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">42</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">43</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">&nbsp;对称的灯颜色一致&nbsp;并且点绿下一个灯</span><span style="color: #008000"><br />
</span><span style="color: #008080">44</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Lamp&nbsp;blackOut(){<br />
</span><span style="color: #008080">45</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.lighted&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
</span><span style="color: #008080">46</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(opposite&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">){<br />
</span><span style="color: #008080">47</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lamp.valueOf(opposite).blackOut();<br />
</span><span style="color: #008080">48</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">49</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">50</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lamp&nbsp;nextLamp</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">51</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(next&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">){<br />
</span><span style="color: #008080">52</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextLamp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Lamp.valueOf(next);<br />
</span><span style="color: #008080">53</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</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: #000000">+</span><span style="color: #000000">&nbsp;name()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</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: #000000">+</span><span style="color: #000000">&nbsp;next);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">54</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextLamp.light();<br />
</span><span style="color: #008080">55</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">56</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;nextLamp;<br />
</span><span style="color: #008080">57</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">58</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">59</span>&nbsp;</div>
<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">灯控制器，根据车辆通行的对称性可知，对称方向的灯要颜色一致</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;traffic;<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.concurrent.Executors;<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.concurrent.ScheduledExecutorService;<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.concurrent.TimeUnit;<br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;LampController&nbsp;{<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Lamp&nbsp;currentLamp;<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;LampController(){<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">刚开始让由南向北的灯变绿;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentLamp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Lamp.S2N;<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentLamp.light();<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">每隔10秒将灯变红&nbsp;点亮下一个绿灯</span><span style="color: #008000"><br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ScheduledExecutorService&nbsp;timer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;Executors.newScheduledThreadPool(</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.scheduleAtFixedRate(<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Runnable(){<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;run(){<br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentLamp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;currentLamp.blackOut();<br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">,<br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">,<br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TimeUnit.SECONDS);<br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">29</span>&nbsp;</div>
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">由路产生车，并检测灯的颜色，放行汽车</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;traffic;<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.ArrayList;<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.List;<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Random;<br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.concurrent.ExecutorService;<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.concurrent.Executors;<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.concurrent.ScheduledExecutorService;<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.concurrent.TimeUnit;<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">road&nbsp;产生车辆&nbsp;，一个方向对应3条路，&nbsp;共有4个方向&nbsp;12条路</span><span style="color: #008000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Road&nbsp;{<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;vechicles&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Road(String&nbsp;name){<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">模拟车辆</span><span style="color: #008000"><br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExecutorService&nbsp;pool&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Executors.newSingleThreadExecutor();<br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.execute(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Runnable(){<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;run(){<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">1000</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep((</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Random().nextInt(</span><span style="color: #000000">10</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1000</span><span style="color: #000000">);<br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(InterruptedException&nbsp;e)&nbsp;{<br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vechicles.add(Road.</span><span style="color: #0000ff">this</span><span style="color: #000000">.name&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</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: #000000">+</span><span style="color: #000000">&nbsp;i);<br />
</span><span style="color: #008080">31</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">32</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">33</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">34</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
</span><span style="color: #008080">35</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">36</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">每隔一秒检查灯</span><span style="color: #008000"><br />
</span><span style="color: #008080">37</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ScheduledExecutorService&nbsp;timer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;Executors.newScheduledThreadPool(</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
</span><span style="color: #008080">38</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.scheduleAtFixedRate(<br />
</span><span style="color: #008080">39</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Runnable(){<br />
</span><span style="color: #008080">40</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;run(){<br />
</span><span style="color: #008080">41</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(vechicles.size()</span><span style="color: #000000">&gt;</span><span style="color: #000000">0</span><span style="color: #000000">){<br />
</span><span style="color: #008080">42</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;lighted&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Lamp.valueOf(Road.</span><span style="color: #0000ff">this</span><span style="color: #000000">.name).isLighted();<br />
</span><span style="color: #008080">43</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(lighted){<br />
</span><span style="color: #008080">44</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(vechicles.remove(</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;is&nbsp;traversing&nbsp;!</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">45</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">46</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">47</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">48</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">49</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />
</span><span style="color: #008080">50</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,<br />
</span><span style="color: #008080">51</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,<br />
</span><span style="color: #008080">52</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TimeUnit.SECONDS);<br />
</span><span style="color: #008080">53</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">54</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">55</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">56</span>&nbsp;</div>
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">主类</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;traffic;<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MainClass&nbsp;{<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">生成12条路&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;[]&nbsp;directions&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String[]{<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">S2N</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">S2W</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">E2W</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">E2S</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">N2S</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">N2E</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">W2E</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">W2N</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">S2E</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">E2N</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">N2W</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">W2S</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">directions.length;i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Road(directions[i]);<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">生成交通灯，开始自动运行&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;LampController();<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">22</span>&nbsp;</div>
<img src ="http://www.blogjava.net/zk0000/aggbug/342754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2011-01-11 11:08 <a href="http://www.blogjava.net/zk0000/articles/342754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>银行调度</title><link>http://www.blogjava.net/zk0000/articles/342750.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Tue, 11 Jan 2011 02:45:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/342750.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/342750.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/342750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/342750.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/342750.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 银行调度，模拟了实际生活中的银行对客户服务的排队管理系统。将现实中排队管理，抽象为对象模型。 抽象出了一个号码机，为每个客户生产号码标识，并形成一个先进先出的队列，模拟了现实中的排队。将对客户的服务，进行抽象，得出是由服务窗口进行叫号，而不是窗口服务员。这个案例的核心，就是号码管理机器，为每个客户生成一个号码，并排成先进先出队列，模拟了实际生活。然后由 服务窗口，取队列的号...&nbsp;&nbsp;<a href='http://www.blogjava.net/zk0000/articles/342750.html'>阅读全文</a><img src ="http://www.blogjava.net/zk0000/aggbug/342750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2011-01-11 10:45 <a href="http://www.blogjava.net/zk0000/articles/342750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>泛型</title><link>http://www.blogjava.net/zk0000/articles/342249.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Tue, 04 Jan 2011 02:05:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/342249.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/342249.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/342249.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/342249.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/342249.html</trackback:ping><description><![CDATA[<p>泛型&nbsp; </p>
<p>&lt;&gt;发音为typeof&nbsp; ArrayList&lt;Integer&gt; ArrayList typeof Integer&nbsp; </p>
<p>ArrayList成为原始类型</p>
<p>1.泛型是给编译器看的，为了规范数据类型。以前的集合可以添加各种类型的对象。</p>
<p>2.通过字节码比较 collection3.getClass() == collection2.getClass() <br />
可以发现，编译过后的字节码中并没有类型信息。</p>
<p>3.可以通过反射，透过泛型往集合中添加各种类型元素<br />
&nbsp;collection3.getClass().getMethod("add",Object.class).invoke(collection3,"abc");</p>
<p>4.参数化类型不考虑类型参数的继承<br />
Vector&lt;String&gt; v= new Vector&lt;Object&gt;() //错误<br />
Vector&lt;Object&gt; v= new Vector&lt;String&gt;() //错误</p>
<p>5.在创建数组实例时，数组的元素不能使用参数化的类型<br />
Vector&lt;Integer&gt; vectorList[] = new Vector&lt;Integer&gt;[10];</p>
<p><br />
? 通配符。 用于通配任意类型的集合&nbsp; <br />
&nbsp;public static void printCollection(Collection&lt;?&gt; collection){<br />
&nbsp;collection.size();<br />
&nbsp;//collection.add(); 可以调用与参数化无关的方法<br />
}</p>
<img src ="http://www.blogjava.net/zk0000/aggbug/342249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2011-01-04 10:05 <a href="http://www.blogjava.net/zk0000/articles/342249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>注解</title><link>http://www.blogjava.net/zk0000/articles/342248.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Tue, 04 Jan 2011 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/342248.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/342248.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/342248.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/342248.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/342248.html</trackback:ping><description><![CDATA[<p>注解 Annotation</p>
<p>一个注解就是一个类</p>
<p>@SuppressWarnings("deprecation") 源文件阶段</p>
<p>@Override&nbsp; 重写&nbsp;&nbsp;&nbsp; 源文件阶段</p>
<p>@Deprecated 过时&nbsp;&nbsp; RUNTIME阶段</p>
<p>&nbsp;</p>
<p>注解类<br />
@interface A{<br />
}</p>
<p>应用了&#8220;注解类&#8221;的类<br />
@A<br />
class B{<br />
}</p>
<p>注解反射<br />
class C{<br />
B.class.isAnnotationPresent(A.class)</p>
<p>A a=B.class.getAnnotation(A.class)<br />
}</p>
<p><br />
@Retention元注解<br />
RetetionPolicy.SOURCE&nbsp; 对应源文件<br />
RetetionPolicy.CLASS&nbsp;&nbsp; 对应class文件<br />
RetetionPolicy.RUNTIME 内存中的字节码</p>
<p>RetetionPolicy是枚举，<br />
只包含 SOURCE,CLASS,RUNTIME三个元素<br />
<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">注解类</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.lang.annotation.ElementType;<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.lang.annotation.Retention;<br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.lang.annotation.RetentionPolicy;<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.lang.annotation.Target;<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">@Retention(RetentionPolicy.RUNTIME)<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">@Target({ElementType.METHOD,ElementType.TYPE})&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">Target&nbsp;参数&nbsp;一个可以，两个以上&nbsp;参数为数组<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">注解的注解目标({方法,类})&nbsp;&nbsp;描述class，interface&nbsp;enum&nbsp;的父类都是TYPE</span><span style="color: #008000"><br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;@</span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;MyAnnotation&nbsp;{<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">为注解添加属性，这里的属性就是方法，不需要加public&nbsp;abstract。系统默认加</span><span style="color: #008000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;color()&nbsp;</span><span style="color: #0000ff">default</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">blue</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">为属性增加默认值</span><span style="color: #008000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;value();&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">当只有一个value属性时，赋值时可以不用value=</span><span style="color: #008000"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">17</span>&nbsp;</div>
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">注解的使用</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">@MyAnnotation(color</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">red</span><span style="color: #000000">"</span><span style="color: #000000">,value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">444</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;AnnotationTest&nbsp;{<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;@SuppressWarnings(</span><span style="color: #000000">"</span><span style="color: #000000">deprecation</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;@MyAnnotation(</span><span style="color: #000000">"</span><span style="color: #000000">bacd</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.runFinalizersOnExit(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">判断字节码中是否有注解，不加RUNTIME则没有，字节码在内存中,RUNTIME内存运行阶段</span><span style="color: #008000"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(AnnotationTest.</span><span style="color: #0000ff">class</span><span style="color: #000000">.isAnnotationPresent(MyAnnotation.</span><span style="color: #0000ff">class</span><span style="color: #000000">))<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyAnnotation&nbsp;myAnnotation</span><span style="color: #000000">=</span><span style="color: #000000">(MyAnnotation)AnnotationTest.</span><span style="color: #0000ff">class</span><span style="color: #000000">.getAnnotation(MyAnnotation.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(myAnnotation.color());<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">23</span>&nbsp;</div>
<img src ="http://www.blogjava.net/zk0000/aggbug/342248.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2011-01-04 10:01 <a href="http://www.blogjava.net/zk0000/articles/342248.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>类加载器</title><link>http://www.blogjava.net/zk0000/articles/342247.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Tue, 04 Jan 2011 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/342247.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/342247.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/342247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/342247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/342247.html</trackback:ping><description><![CDATA[<p>BootStrap&nbsp;&nbsp; &nbsp;JRE/lib/rt.jar<br />
|<br />
ExtClassLoader&nbsp; JRE/lib/ext/*.jar<br />
|<br />
AppClassLoader&nbsp;CLASSPATH指定的所有jar或目录</p>
<p>|&nbsp;&nbsp; |<br />
自定义类加载器&nbsp; </p>
<p>类加载器也是一个类，但BootStrap不是，它嵌入虚拟机，是最根部的加载器，加载下层类。<br />
<br />
类加载器实行委托机制，如AppClassLoader发起加载类，则委托父类，则一直委托到BootStrap，再开始往下寻找类，<br />
一直到AppClassLoader，如果它也找不到，则抛出异常</p>
<p>自定义类加载器必须继承ClassLoader类，并指定一个父类加载器。</p>
<p>&nbsp;<br />
1.程序运行阶段，碰到一个类，先调用该线程里的类加载器加载类。<br />
可以为线程指定类加载器。<br />
2.如果类A引用类B，JAVA虚拟机将使用加载了A的类加载器加载B。</p>
<img src ="http://www.blogjava.net/zk0000/aggbug/342247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2011-01-04 10:00 <a href="http://www.blogjava.net/zk0000/articles/342247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>集合</title><link>http://www.blogjava.net/zk0000/articles/341897.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Wed, 29 Dec 2010 05:31:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/341897.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/341897.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/341897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/341897.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/341897.html</trackback:ping><description><![CDATA[<p>9.集合框架<br />
1)基本概念:用于存放对象的对象(与数组类似.即集合也是对象.只能存对象)</p>
<p>2)和数组的差异<br />
A.数组存放的内容由数组类型指定,集合存放的内容为Object类型的引用<br />
B.数组只有1种数据结构(按照索引存储),集合的数据结构分为Set.List和Map三大类.每个类中还包含若干的小类<br />
C.数组的容量在创建时指定,无法在使用中动态扩展.所有集合类型的容量都是不定的.根据需求自动扩展</p>
<p>3)基本组成<br />
A.接口:用于定义集合的功能框架<br />
B.实现类:实现对应的接口.实现集合的具体功能<br />
C.工具:提供对集合操作的辅助功能</p>
<p>4)接口<br />
A.Collection<br />
定义存储内容为单个对象的数据结构及相关的操作方法<br />
B.Set<br />
继承Collection,存储内容无序且不可重复<br />
C.List<br />
继承Collection,存储元素有序且可以重复<br />
D.SortedSet<br />
继承Set.可以对存储内容进行排序<br />
E.Map<br />
定义存储内容为2个对象（键值对）的数据结构及相关的操作方法<br />
键（标识性,所以不可重复）对象无序且不可重复，值对象可以重复顺序由对应的键对象决定<br />
F.SortedMap<br />
继承Map，可以对键对象进行排序</p>
<p><br />
5)名词解释<br />
A.无序:存储顺序与放入顺序无关<br />
B.有序:存储顺序与放入顺序一致<br />
C.排序:按照一定的逻辑对内容进行排序,存储顺序依照排序的结果进行排列</p>
<p>6)实现类<br />
A.List(3个实现类)<br />
ArrayList:内部存储形式为数组,擅长查询操作,对插入和删除操作效率较低</p>
<p>LinkedList:内部存储形式为双向链表.擅长插入和删除操作,对查询操作效率较低</p>
<p>Vector:ArrayList的线程安全版本,可保证多线程并发防问时的数据准确和一致性,但对效率影响很大,实际开发中使用较少</p>
<p><br />
B.HashSet的重复性判断<br />
i)在执行add()操作时进行,将加入的对象与集合中已存在的对象进行比较,满足相等性条件时,待加入的对象无法加入集合中<br />
ii)比较内容<br />
将2个对象调用equals()结果为true<br />
将2个对象分别调用hashcode()的结果相同<br />
同时满足以上2个条件则判断两个对象相同</p>
<p>C.TreeSet<br />
构造器<br />
TreeSet()--使用默认的排序和重复性判断逻辑<br />
注:只有少量类型(String.包装类型)存在默认排序和重复性判断逻辑,如Integer升序;如果对没有默认的排序和重复性判断逻辑的对象使用该操作,将在执行时产生ClassCastException<br />
TreeSet(Comparator)--使用指定的比较器实现排序和重复性判断逻辑<br />
实现原理:在加入元素时执行比较(原有元素和待加入的元素),比较时调用比较器的compare().根据返回值决定排列的顺序是否重复<br />
compare()的第一个参数--待加入的元素<br />
compare()的第二个参数--集合中原有的元素<br />
返回值<br />
&gt;0&nbsp;&nbsp;&nbsp; 待加入元素在原有元素的右边<br />
&lt;0&nbsp;&nbsp;&nbsp; 待加入元素在原有元素的左侧<br />
=0&nbsp;&nbsp;&nbsp; 相同,待加入元素不加入<br />
注:当&gt;0或&lt;0时,如集合的相应方向存在未比较的元素,则应继续比较直至完全确定位置后才执行加入</p>
<p>D.Map的实现类<br />
HashMap和HashTable的关系相当于ArrayList和Vector的关系<br />
HashMap的重复性判断规则(key)<br />
在元素加入时(put)进行判断.方式与HashSet完全相同<br />
E.TreeMap的排序和重复性判断规则(key)<br />
在元素加入时(put)进行判断.方式与TreeSet完全相同<br />
<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">List集合&nbsp;实现类LinkedList&nbsp;ArrayList</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ListTest&nbsp;{<br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;a</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">A</span><span style="color: #000000">"</span><span style="color: #000000">,b</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">B</span><span style="color: #000000">"</span><span style="color: #000000">,c</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">C</span><span style="color: #000000">"</span><span style="color: #000000">,d</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">D</span><span style="color: #000000">"</span><span style="color: #000000">,e</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">E</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义字符串对象</span><span style="color: #008000"><br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;list</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;LinkedList</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建List集合</span><span style="color: #008000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(a);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">集合中添加元素</span><span style="color: #008000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(e);<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(d);<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;fristIterator</span><span style="color: #000000">=</span><span style="color: #000000">list.iterator();</span><span style="color: #008000">//</span><span style="color: #008000">创建集合迭代器</span><span style="color: #008000"><br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">修改前集合中的元素为</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(fristIterator.hasNext()){<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(fristIterator.next()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.set(</span><span style="color: #000000">1</span><span style="color: #000000">,b);<br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.set(</span><span style="color: #000000">2</span><span style="color: #000000">,c);<br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator</span><span style="color: #000000">&lt;</span><span style="color: #000000">String</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;it</span><span style="color: #000000">=</span><span style="color: #000000">list.iterator();<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">修改后集合中的元素为</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(it.hasNext()){<br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(it.next()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000">}</span></div>
<p><br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">MAP集合&nbsp;和&nbsp;泛型</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MapTest&nbsp;{<br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000">泛型应用<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;{<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #008000"><br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">HashMap&nbsp;定义泛型&nbsp;类型变量</span><span style="color: #008000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HashMap</span><span style="color: #000000">&lt;</span><span style="color: #000000">String,Integer</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;maps</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HashMap</span><span style="color: #000000">&lt;</span><span style="color: #000000">String,Integer</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maps.put(</span><span style="color: #000000">"</span><span style="color: #000000">zhangsan</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">28</span><span style="color: #000000">);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">添加元素</span><span style="color: #008000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maps.put(</span><span style="color: #000000">"</span><span style="color: #000000">lisi</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">33</span><span style="color: #000000">);<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maps.put(</span><span style="color: #000000">"</span><span style="color: #000000">wangwu</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">23</span><span style="color: #000000">);<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">返回Set集合</span><span style="color: #008000"><br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">Map.Entry</span><span style="color: #000000">&lt;</span><span style="color: #000000">String,&nbsp;Integer</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">&nbsp;entrySet</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;maps.entrySet();<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">迭代输出集合</span><span style="color: #008000"><br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(Map.Entry</span><span style="color: #000000">&lt;</span><span style="color: #000000">String,Integer</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;entry&nbsp;:&nbsp;entrySet)<br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(entry.getKey()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">entry.getValue());<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">转换类型</span><span style="color: #008000"><br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;ob</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">abc</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;x3</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;autoConvert(ob);<br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;T&nbsp;autoConvert(Object&nbsp;object){<br />
</span><span style="color: #008080">31</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">泛型方法&nbsp;&nbsp;类型转换&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">32</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;(T)object;<br />
</span><span style="color: #008080">33</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">34</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">35</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">T</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;fillArray(T[]&nbsp;a,T&nbsp;obj&nbsp;){<br />
</span><span style="color: #008080">36</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">将某个类型的对象&nbsp;填充到&nbsp;对应类型的数组</span><span style="color: #008000"><br />
</span><span style="color: #008080">37</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">a.length;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
</span><span style="color: #008080">38</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]</span><span style="color: #000000">=</span><span style="color: #000000">obj;<br />
</span><span style="color: #008080">39</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">40</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">41</span>&nbsp;<span style="color: #000000">}</span></div>
<img src ="http://www.blogjava.net/zk0000/aggbug/341897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2010-12-29 13:31 <a href="http://www.blogjava.net/zk0000/articles/341897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>反射</title><link>http://www.blogjava.net/zk0000/articles/341895.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Wed, 29 Dec 2010 05:21:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/341895.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/341895.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/341895.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/341895.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/341895.html</trackback:ping><description><![CDATA[<p><strong>反射的基础是Class类<br />
</strong>Class：</p>
<p>&nbsp;JAVA类用于描述一类事物的共性。而是什么属性则是由类的实例对象来确定的，不同的实例对象有不同的属性值。</p>
<p>&nbsp;Class则是用于描述JAVA类的共性的类，描述了类的名字，访问属性，包名，字段名称列表，方法名称列表等。</p>
<p>&nbsp;Class的实例对象为某个类的字节码。<br />
&nbsp; 获取字节码的实例对象方法有三种<br />
&nbsp; 1. 类名.class&nbsp; System.class<br />
&nbsp; 2. 对象.getClass&nbsp; new Date().getClass()<br />
&nbsp; 3. Class.forName("类名") Class.forName("java.util.Date")<br />
&nbsp; </p>
<p>&nbsp;Class cls1=Date.class //Date类的字节码 ,已经加载到内存<br />
&nbsp;Class cls2=p1.getClass();//调用对象的getClass()得到类的字节码<br />
&nbsp;Class.forName("java.lang.String") //返回该类字节码<br />
<br />
</p>
<p><strong>反射就是把Java类中的各种成分映射成相应的Java类，如：一个Java类中用Class类的对象来表示，一个类中组成的部分：<br />
成员变量，方法，构造方法，包等信息，也是用一个个Java类来表示的</strong></p>
<p>&nbsp;Class代表一份类字节码</p>
<p>&nbsp;Method 类的实例对象代表 类的方法</p>
<p>Constructor类<br />
&nbsp;Constructor类代表类中的一个构造方法</p>
<p>&nbsp;//获取某个类的所有构造方法<br />
&nbsp;Constructor[] constructors=Class.forName("java.lang.String").getConstructors();</p>
<p>&nbsp;//获取某个构造方法,要用的参数类型 如:String(StringBuffer buffer)<br />
&nbsp;Constructor constructor=Class.forName("java.lang.String").getConstructor(StringBuffer.class); </p>
<p>创建实例对象<br />
&nbsp;通常方法：String str=new String(new StringBuffer("abcd")); <br />
&nbsp;&nbsp;&nbsp;//Constructor类的 newInstance() 方法<br />
&nbsp;反射方法：String str=(String)constructor.newInstance(new StringBuffer("abc"))</p>
<p>Field类，代表某个类的属性<br />
&nbsp; Field fieldy=pt1.getClass().getField("y");&nbsp; 得出的是类的属性，值是不固定的，根据对象来确定<br />
&nbsp; fieldy.get(pt1);</p>
<p>&nbsp; 改field需要调用fieldy.set(obj,value);</p>
<p>Method类<br />
&nbsp;getMethod(name,parameterytpes) //类名，方法参数类型</p>
<p>&nbsp;//执行方法用invoke(obj,parameters)<br />
&nbsp;Method methodCharAt=String.class.getMethod("charAt",int.class)<br />
&nbsp;//静态方法 name=null<br />
&nbsp;methodCharAt.invoke(str1,1);</p>
<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">创建一个测试反射的类</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ReflectPoint&nbsp;{<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x;<br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;y;<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;str1</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">china</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;str2</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">basketbool</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;str3</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">itcast</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ReflectPoint(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;y)&nbsp;{<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">();<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;x;<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;y;<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">15</span>&nbsp;</div>
<p><br />
&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">反射测试</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.lang.reflect.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ReflectTest&nbsp;{<br />
</span><span style="color: #008080">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000">反射基本知识<br />
</span><span style="color: #008080">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
</span><span style="color: #008080">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;反射就是把java类中的各个成分映射为java类<br />
</span><span style="color: #008080">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;反射的基础是Class类，它是java类的描述类，Class类的实例是某个类的字节码<br />
</span><span style="color: #008080">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
</span><span style="color: #008080">&nbsp;10</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;{<br />
</span><span style="color: #008080">&nbsp;12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub<br />
</span><span style="color: #008080">&nbsp;13</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Class测试<br />
</span><span style="color: #008080">&nbsp;14</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Class的实例是类的字节码</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str1</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">abcde</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获取Class实例的三种方式</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;cls1</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str1.getClass();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获取该对象类的字节码</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;cls2</span><span style="color: #000000">=</span><span style="color: #000000">String.</span><span style="color: #0000ff">class</span><span style="color: #000000">;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">直接调用类的字节码</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;cls3</span><span style="color: #000000">=</span><span style="color: #000000">Class.forName(</span><span style="color: #000000">"</span><span style="color: #000000">java.lang.String</span><span style="color: #000000">"</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">根据类名获取字节码</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(cls1</span><span style="color: #000000">==</span><span style="color: #000000">cls2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">true</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(cls1</span><span style="color: #000000">==</span><span style="color: #000000">cls3);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">true<br />
</span><span style="color: #008080">&nbsp;24</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;25</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">isPrimitive()是否是基本数据类型的字节码&nbsp;8种+void</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;26</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(cls1.isPrimitive());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;27</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Integer.</span><span style="color: #0000ff">class</span><span style="color: #000000">.isPrimitive());</span><span style="color: #008000">//</span><span style="color: #008000">false</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">int</span><span style="color: #000000">.</span><span style="color: #0000ff">class</span><span style="color: #000000">.isPrimitive());&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">true<br />
</span><span style="color: #008080">&nbsp;29</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;30</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Integer.TYPE常量&nbsp;代表包装的基本类型&nbsp;的&nbsp;字节码</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;31</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">int</span><span style="color: #000000">.</span><span style="color: #0000ff">class</span><span style="color: #000000">==</span><span style="color: #000000">Integer.TYPE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">true<br />
</span><span style="color: #008080">&nbsp;32</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;33</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">数组不是基本数据类型，是对象</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;34</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">int</span><span style="color: #000000">[].</span><span style="color: #0000ff">class</span><span style="color: #000000">.isPrimitive());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;35</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">int</span><span style="color: #000000">[].</span><span style="color: #0000ff">class</span><span style="color: #000000">.isArray());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">true<br />
</span><span style="color: #008080">&nbsp;36</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;37</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">得到String类的&nbsp;String(StringBuffer)构造方法</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;38</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor&nbsp;constructor</span><span style="color: #000000">=</span><span style="color: #000000">String.</span><span style="color: #0000ff">class</span><span style="color: #000000">.getConstructor(StringBuffer.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;39</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">可以构造方法，创建实例&nbsp;，并进行类型转换</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;40</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(String)constructor.newInstance(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuffer(</span><span style="color: #000000">"</span><span style="color: #000000">abcsd</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
</span><span style="color: #008080">&nbsp;41</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;42</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReflectPoint&nbsp;pt1</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ReflectPoint(</span><span style="color: #000000">3</span><span style="color: #000000">,</span><span style="color: #000000">5</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;43</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;44</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Field类</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;45</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field&nbsp;fieldy</span><span style="color: #000000">=</span><span style="color: #000000">pt1.getClass().getField(</span><span style="color: #000000">"</span><span style="color: #000000">y</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;46</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">fieldy的值是5吗？&nbsp;不是，fieldy不代表具体的值，只代表类的y变量<br />
</span><span style="color: #008080">&nbsp;47</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">因为取的是类的字节码，类中变量的值是根据&nbsp;对象来决定的<br />
</span><span style="color: #008080">&nbsp;48</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">通过.get(object)&nbsp;来获取某个对象的值</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;49</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(fieldy.get(pt1));<br />
</span><span style="color: #008080">&nbsp;50</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;51</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field&nbsp;fieldx</span><span style="color: #000000">=</span><span style="color: #000000">pt1.getClass().getDeclaredField(</span><span style="color: #000000">"</span><span style="color: #000000">x</span><span style="color: #000000">"</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">获取声明过的属性</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;52</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fieldx.setAccessible(</span><span style="color: #0000ff">true</span><span style="color: #000000">);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">访问权限设置为true</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;53</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(fieldx.get(pt1));&nbsp;<br />
</span><span style="color: #008080">&nbsp;54</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;55</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;changeString(pt1);<br />
</span><span style="color: #008080">&nbsp;56</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(pt1.str1);<br />
</span><span style="color: #008080">&nbsp;57</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(pt1.str2);<br />
</span><span style="color: #008080">&nbsp;58</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(pt1.str3);<br />
</span><span style="color: #008080">&nbsp;59</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;60</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Method<br />
</span><span style="color: #008080">&nbsp;61</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">取得类字节码&nbsp;中的charAt方法</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;62</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method&nbsp;methodCharAt</span><span style="color: #000000">=</span><span style="color: #000000">String.</span><span style="color: #0000ff">class</span><span style="color: #000000">.getMethod(</span><span style="color: #000000">"</span><span style="color: #000000">charAt</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;63</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">调用invoke(obj,parameter)&nbsp;执行方法</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;64</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(methodCharAt.invoke(str1,</span><span style="color: #000000">1</span><span style="color: #000000">));<br />
</span><span style="color: #008080">&nbsp;65</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;66</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;67</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">调用main()方法,普通方式<br />
</span><span style="color: #008080">&nbsp;68</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TestArguments.main(new&nbsp;String[]{"abc","1111"});<br />
</span><span style="color: #008080">&nbsp;69</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使用反射调用，为了解决，给定类名，而不知道实现代码的情况下用<br />
</span><span style="color: #008080">&nbsp;70</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">从类字节码&nbsp;得到&nbsp;main方法</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;71</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method&nbsp;methodmain</span><span style="color: #000000">=</span><span style="color: #000000">Class.forName(args[</span><span style="color: #000000">0</span><span style="color: #000000">]).getMethod(</span><span style="color: #000000">"</span><span style="color: #000000">main</span><span style="color: #000000">"</span><span style="color: #000000">,String[].</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;72</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodmain.invoke(</span><span style="color: #0000ff">null</span><span style="color: #000000">,</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Object[]{</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String[]{</span><span style="color: #000000">"</span><span style="color: #000000">abc</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">1111</span><span style="color: #000000">"</span><span style="color: #000000">}});<br />
</span><span style="color: #008080">&nbsp;73</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;74</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">数组的反射</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;75</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[]&nbsp;a1</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[</span><span style="color: #000000">3</span><span style="color: #000000">];<br />
</span><span style="color: #008080">&nbsp;76</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[]&nbsp;a2</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[</span><span style="color: #000000">4</span><span style="color: #000000">];<br />
</span><span style="color: #008080">&nbsp;77</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[][]&nbsp;a3</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[</span><span style="color: #000000">2</span><span style="color: #000000">][</span><span style="color: #000000">3</span><span style="color: #000000">];<br />
</span><span style="color: #008080">&nbsp;78</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;a4</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String[</span><span style="color: #000000">2</span><span style="color: #000000">];<br />
</span><span style="color: #008080">&nbsp;79</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">数组的字节码比较，看的是数组类型和数组维度</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;80</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(a1.getClass()</span><span style="color: #000000">==</span><span style="color: #000000">a2.getClass());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">true&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;81</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(a1.getClass()</span><span style="color: #000000">==</span><span style="color: #000000">a3.getClass());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;82</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(a1.getClass()</span><span style="color: #000000">==</span><span style="color: #000000">a4.getClass());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;83</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(a3.getClass()</span><span style="color: #000000">==</span><span style="color: #000000">a4.getClass());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false<br />
</span><span style="color: #008080">&nbsp;84</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获取父类</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;85</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(a1.getClass().getName());<br />
</span><span style="color: #008080">&nbsp;86</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(a1.getClass().getSuperclass().getName());<br />
</span><span style="color: #008080">&nbsp;87</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(a4.getClass().getSuperclass().getName());<br />
</span><span style="color: #008080">&nbsp;88</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">得出父类都是Object类</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;89</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;aobj1</span><span style="color: #000000">=</span><span style="color: #000000">a1;<br />
</span><span style="color: #008080">&nbsp;90</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;aobj2</span><span style="color: #000000">=</span><span style="color: #000000">a2;<br />
</span><span style="color: #008080">&nbsp;91</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;aobj4</span><span style="color: #000000">=</span><span style="color: #000000">a4;<br />
</span><span style="color: #008080">&nbsp;92</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Object[]&nbsp;aobj5=a1;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">里面装的是基本类型，基本类型不是对象，不能装入</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;93</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[]&nbsp;aobj5</span><span style="color: #000000">=</span><span style="color: #000000">a3;<br />
</span><span style="color: #008080">&nbsp;94</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;95</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[]&nbsp;t1</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[]{</span><span style="color: #000000">12</span><span style="color: #000000">,</span><span style="color: #000000">34</span><span style="color: #000000">,</span><span style="color: #000000">2</span><span style="color: #000000">};<br />
</span><span style="color: #008080">&nbsp;96</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printObject(t1);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">打印对象，数组是对象，但t1数组元素是基本类型</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;97</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printObject(</span><span style="color: #000000">"</span><span style="color: #000000">xyz</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">打印对象</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;98</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;99</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">100</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">101</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;printObject(Object&nbsp;obj){<br />
</span><span style="color: #008080">102</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;clazz</span><span style="color: #000000">=</span><span style="color: #000000">obj.getClass();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获取该对象类的字节码</span><span style="color: #008000"><br />
</span><span style="color: #008080">103</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(clazz.isArray()){<br />
</span><span style="color: #008080">104</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Array是数组的反射类</span><span style="color: #008000"><br />
</span><span style="color: #008080">105</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">Array.getLength(obj);i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
</span><span style="color: #008080">106</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Array.get(obj,&nbsp;i));<br />
</span><span style="color: #008080">107</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">108</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />
</span><span style="color: #008080">109</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(obj);<br />
</span><span style="color: #008080">110</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">111</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />
</span><span style="color: #008080">112</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">113</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;changeString(Object&nbsp;obj){<br />
</span><span style="color: #008080">114</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field[]&nbsp;fields</span><span style="color: #000000">=</span><span style="color: #000000">obj.getClass().getFields();<br />
</span><span style="color: #008080">115</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(Field&nbsp;field:fields){<br />
</span><span style="color: #008080">116</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(field.getType()</span><span style="color: #000000">==</span><span style="color: #000000">String.</span><span style="color: #0000ff">class</span><span style="color: #000000">){</span><span style="color: #008000">//</span><span style="color: #008000">同一份字节码&nbsp;用==</span><span style="color: #008000"><br />
</span><span style="color: #008080">117</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
</span><span style="color: #008080">118</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;newValue</span><span style="color: #000000">=</span><span style="color: #000000">((String)field.get(obj)).replace(</span><span style="color: #000000">'</span><span style="color: #000000">a</span><span style="color: #000000">'</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">b</span><span style="color: #000000">'</span><span style="color: #000000">);<br />
</span><span style="color: #008080">119</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field.set(obj,&nbsp;newValue);<br />
</span><span style="color: #008080">120</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;{<br />
</span><span style="color: #008080">121</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO:&nbsp;handle&nbsp;exception</span><span style="color: #008000"><br />
</span><span style="color: #008080">122</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">123</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">124</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">125</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">126</span>&nbsp;<span style="color: #000000">}</span></div>
<p><br />
&nbsp;</p>
<img src ="http://www.blogjava.net/zk0000/aggbug/341895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2010-12-29 13:21 <a href="http://www.blogjava.net/zk0000/articles/341895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>枚举</title><link>http://www.blogjava.net/zk0000/articles/341894.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Wed, 29 Dec 2010 05:15:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/341894.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/341894.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/341894.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/341894.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/341894.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">枚举综合测试</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;EnumTest&nbsp;{<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WeekDay1&nbsp;Mon</span><span style="color: #000000">=</span><span style="color: #000000">WeekDay1.MON;</span><span style="color: #008000">//</span><span style="color: #008000">实例化</span><span style="color: #008000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Mon.nextday());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">调用枚举类内的方法</span><span style="color: #008000"><br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WeekDay&nbsp;weekday2</span><span style="color: #000000">=</span><span style="color: #000000">WeekDay.FRI;<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(weekday2);<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(weekday2.name());</span><span style="color: #008000">//</span><span style="color: #008000">显示枚举元素名称</span><span style="color: #008000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(weekday2.ordinal());</span><span style="color: #008000">//</span><span style="color: #008000">显示枚举元素索引</span><span style="color: #008000"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(WeekDay.valueOf(</span><span style="color: #000000">"</span><span style="color: #000000">SUN</span><span style="color: #000000">"</span><span style="color: #000000">));</span><span style="color: #008000">//</span><span style="color: #008000">根据字符串得到枚举对象<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">WeekDay.values()&nbsp;返回枚举元素数组</span><span style="color: #008000"><br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(WeekDay.values().length);<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(TrafficLamp.valueOf(</span><span style="color: #000000">"</span><span style="color: #000000">RED</span><span style="color: #000000">"</span><span style="color: #000000">).nextlamp());<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">enum</span><span style="color: #000000">&nbsp;WeekDay{<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUN(</span><span style="color: #000000">1</span><span style="color: #000000">),MON,TUE,WED,THI,FRI,SAT;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">枚举元素必须位于第一位</span><span style="color: #008000"><br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">枚举的构造方法必须私有</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;WeekDay(){System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">first</span><span style="color: #000000">"</span><span style="color: #000000">);}<br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;WeekDay(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;day){System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">second</span><span style="color: #000000">"</span><span style="color: #000000">);}<br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">enum</span><span style="color: #000000">&nbsp;TrafficLamp{<br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000"><br />
</span><span style="color: #008080">31</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;带有抽象方法的枚举<br />
</span><span style="color: #008080">32</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;每个元素都是枚举的子类<br />
</span><span style="color: #008080">33</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;在枚举元素{}中&nbsp;实现抽象方法<br />
</span><span style="color: #008080">34</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
</span><span style="color: #008080">35</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;只有一个元素的枚举，可以实现单例模式<br />
</span><span style="color: #008080">36</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">37</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RED(</span><span style="color: #000000">30</span><span style="color: #000000">){<br />
</span><span style="color: #008080">38</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;TrafficLamp&nbsp;nextlamp(){<br />
</span><span style="color: #008080">39</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;GREEN;<br />
</span><span style="color: #008080">40</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">41</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},GREEN(</span><span style="color: #000000">45</span><span style="color: #000000">){<br />
</span><span style="color: #008080">42</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;TrafficLamp&nbsp;nextlamp(){<br />
</span><span style="color: #008080">43</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;YELLOW;<br />
</span><span style="color: #008080">44</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">45</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},YELLOW(</span><span style="color: #000000">5</span><span style="color: #000000">){<br />
</span><span style="color: #008080">46</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;TrafficLamp&nbsp;nextlamp(){<br />
</span><span style="color: #008080">47</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;RED;<br />
</span><span style="color: #008080">48</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">49</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
</span><span style="color: #008080">50</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">51</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;TrafficLamp&nbsp;nextlamp();<br />
</span><span style="color: #008080">52</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;time;<br />
</span><span style="color: #008080">53</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;TrafficLamp(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;time){</span><span style="color: #0000ff">this</span><span style="color: #000000">.time</span><span style="color: #000000">=</span><span style="color: #000000">time;}<br />
</span><span style="color: #008080">54</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">55</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">56</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">57</span>&nbsp;</div>
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">模拟枚举，枚举是一种特殊的类，每个元素都是枚举的实例对象，枚举可以有自己的属性和方法</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;WeekDay1&nbsp;{<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;WeekDay1(){}</span><span style="color: #008000">//</span><span style="color: #008000">私有化构造函数，则外界无法实例化</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;WeekDay1&nbsp;MON</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;WeekDay1(){<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;WeekDay1&nbsp;nextday()&nbsp;{<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;SUN;<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">WeekDay的子类，要实现抽象方法</span><span style="color: #008000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;};<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义成员</span><span style="color: #008000"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;WeekDay1&nbsp;SUN</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;WeekDay1(){<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;WeekDay1&nbsp;nextday(){<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;MON;<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;};<br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;WeekDay1&nbsp;nextday();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义一个抽象方法</span><span style="color: #008000"><br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #008000">/*</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;WeekDay&nbsp;nexday(){<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this是指该对象，因为类的非静态方法只能有对象来调用<br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(this==MON){<br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;SUN;<br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;MON;<br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">31</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">32</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">33</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;toString(){<br />
</span><span style="color: #008080">34</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">==</span><span style="color: #000000">MON</span><span style="color: #000000">?</span><span style="color: #000000">"</span><span style="color: #000000">MON</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">SUN</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">35</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">36</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">37</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">38</span>&nbsp;</div>
<br />
<img src ="http://www.blogjava.net/zk0000/aggbug/341894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2010-12-29 13:15 <a href="http://www.blogjava.net/zk0000/articles/341894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基本数据类型的装箱和拆箱</title><link>http://www.blogjava.net/zk0000/articles/341891.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Wed, 29 Dec 2010 05:08:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/341891.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/341891.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/341891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/341891.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/341891.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">装箱&nbsp;拆箱&nbsp;享元模式</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;flyWeight&nbsp;{<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args){<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">1127</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">装箱&nbsp;将基本数据类型转换为对象&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(i</span><span style="color: #000000">+</span><span style="color: #000000">3</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">拆箱&nbsp;将对象转换为基本类型</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;i2</span><span style="color: #000000">=</span><span style="color: #000000">127</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;i3</span><span style="color: #000000">=</span><span style="color: #000000">127</span><span style="color: #000000">;<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;i4</span><span style="color: #000000">=</span><span style="color: #000000">128</span><span style="color: #000000">;<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;i5</span><span style="color: #000000">=</span><span style="color: #000000">128</span><span style="color: #000000">;<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(i2</span><span style="color: #000000">==</span><span style="color: #000000">i3);</span><span style="color: #008000">//</span><span style="color: #008000">true&nbsp;&nbsp;&nbsp;享元模式</span><span style="color: #008000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(i4</span><span style="color: #000000">==</span><span style="color: #000000">i5);</span><span style="color: #008000">//</span><span style="color: #008000">false&nbsp;&nbsp;享元模式&nbsp;将小的数据&nbsp;-128～127&nbsp;共享一个对象</span><span style="color: #008000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str1</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">abcds</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str2</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">abcds</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(str1</span><span style="color: #000000">==</span><span style="color: #000000">str2);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">true&nbsp;享元模式</span><span style="color: #008000"><br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">20</span>&nbsp;</div>
<img src ="http://www.blogjava.net/zk0000/aggbug/341891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2010-12-29 13:08 <a href="http://www.blogjava.net/zk0000/articles/341891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCP通信</title><link>http://www.blogjava.net/zk0000/articles/341889.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Wed, 29 Dec 2010 04:46:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/341889.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/341889.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/341889.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/341889.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/341889.html</trackback:ping><description><![CDATA[<p>ServerSocket类 </p>
<p>构造函数<br />
public ServerSocket()<br />
public ServerSocket(int port) //默认数量是50个<br />
public ServerSocket(int port,int backlog)<br />
public ServerSocket(int port,int backlog,<br />
&nbsp;&nbsp;InetAddress bindAddr)<br />
close()</p>
<p>accept() 返回socket对象</p>
<p>Socket类 </p>
<p>构造方法<br />
public Socket()<br />
public Socket(String host,int port)<br />
public Socket(InetAddress address,int port)<br />
public Socket(String host,int port,<br />
&nbsp;InetAddress localAddr,int localPort)<br />
public Socket(InetAddress address,int port,<br />
&nbsp;&nbsp;InetAddress localAddr,int localPort)<br />
方法<br />
getInputStream() 返回输入流对象<br />
getOutputStream()返回输出流对象<br />
<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">基于TCP的服务器端</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.net.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TcpServer&nbsp;{<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;{<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerSocket&nbsp;ss</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ServerSocket(</span><span style="color: #000000">8001</span><span style="color: #000000">);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建服务器socket对象</span><span style="color: #008000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Socket&nbsp;s</span><span style="color: #000000">=</span><span style="color: #000000">ss.accept();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">等待客户端连接，返回socket对象</span><span style="color: #008000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;ips</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;s.getInputStream();</span><span style="color: #008000">//</span><span style="color: #008000">返回&nbsp;输入流对象</span><span style="color: #008000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;ops</span><span style="color: #000000">=</span><span style="color: #000000">s.getOutputStream();</span><span style="color: #008000">//</span><span style="color: #008000">获得&nbsp;输出流对象</span><span style="color: #008000"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ops.write(</span><span style="color: #000000">"</span><span style="color: #000000">welcome,jiedian's&nbsp;Server\n</span><span style="color: #000000">"</span><span style="color: #000000">.getBytes());<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;br&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedReader(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;InputStreamReader(ips));<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">包装网络输入流，字节流</span><span style="color: #008000"><br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(br.readLine());<br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000"><br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;buf=new&nbsp;byte[1024];<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;length=ips.read(buf);<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(new&nbsp;String(buf,0,length));<br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;br.close();<br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">ips.close();</span><span style="color: #008000"><br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ops.close();<br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.close();<br />
</span><span style="color: #008080">31</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ss.close();<br />
</span><span style="color: #008080">32</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">33</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">34</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">35</span>&nbsp;</div>
<br />
<img src ="http://www.blogjava.net/zk0000/aggbug/341889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2010-12-29 12:46 <a href="http://www.blogjava.net/zk0000/articles/341889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UDP通信</title><link>http://www.blogjava.net/zk0000/articles/341887.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Wed, 29 Dec 2010 04:30:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/341887.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/341887.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/341887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/341887.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/341887.html</trackback:ping><description><![CDATA[<p>DatagramSocket类&nbsp;&nbsp; 用于创建收发UDP数据包的Socket对象</p>
<p>构造函数<br />
DatagramSocket() //用于发送方，系统分配端口号<br />
DatagramSocket(int port) //用于接收方<br />
DatagramSocket(int port,InetAddress laddr)<br />
//udp在多个Ip地址的计算机，用于发送接收</p>
<p>方法<br />
close() //关闭对象，释放资源</p>
<p>send(DatagramPacket p)&nbsp; //发送数据包</p>
<p>receive(DatagramPacket p) //接收数据包</p>
<p>&nbsp;</p>
<p>DatagramPacket类&nbsp; 创建UDP数据包</p>
<p>构造函数<br />
public DatagramPacket(byte[] buf,int length)<br />
//内存缓存区，大小&nbsp; &nbsp;&nbsp;接收数据对象</p>
<p>public Datagrampacket(byte[] buf,int length,<br />
InetAddress address,int port)<br />
//内存缓存区，大小，ip，端口 &nbsp; 发送数据对象</p>
<p>getInetAddress<br />
getPort</p>
<p>getData&nbsp; &nbsp;返回buf<br />
getLength&nbsp;返回length</p>
<p>&nbsp;</p>
<p>InetAddress类</p>
<p>getByName() 静态方法<br />
//根据字符串格式，返回一个相应的实例对象<br />
getHostAddress() <br />
//返回.分格的IP<br />
<br />
</p>
<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">创建基于的UDP发送方</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.net.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;UdpSend&nbsp;{<br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">发送方</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception{<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DatagramSocket&nbsp;ds&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DatagramSocket();</span><span style="color: #008000">//</span><span style="color: #008000">创建socket发送对象，发送端口号由系统分配。</span><span style="color: #008000"><br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;strInfo</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hello&nbsp;china&nbsp;中国</span><span style="color: #000000">"</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">定义要发送的字符串</span><span style="color: #008000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DatagramPacket&nbsp;dp</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DatagramPacket(strInfo.getBytes(),strInfo.getBytes().length,<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InetAddress.getByName(</span><span style="color: #000000">"</span><span style="color: #000000">192.168.1.111</span><span style="color: #000000">"</span><span style="color: #000000">),</span><span style="color: #000000">3333</span><span style="color: #000000">);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">构建数据包</span><span style="color: #008000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.send(dp);</span><span style="color: #008000">//</span><span style="color: #008000">发送数据包</span><span style="color: #008000"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.close();<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">}<br />
</span><span style="color: #008080">20</span>&nbsp;</div>
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #008000">//</span><span style="color: #008000">基于UDP协议的接收方</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.net.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;UdpRev&nbsp;{<br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception{<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建socket接收对象</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;buff</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[</span><span style="color: #000000">1024</span><span style="color: #000000">];<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DatagramSocket&nbsp;ds</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DatagramSocket(</span><span style="color: #000000">3333</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DatagramPacket&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DatagramPacket(buff,</span><span style="color: #000000">1024</span><span style="color: #000000">);<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.receive(p);<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">content:\t</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(buff,</span><span style="color: #000000">0</span><span style="color: #000000">,p.getLength())<br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">\nfrom\t</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">p.getAddress().getHostAddress()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">p.getPort());<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.close();<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">}</span></div>
<img src ="http://www.blogjava.net/zk0000/aggbug/341887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2010-12-29 12:30 <a href="http://www.blogjava.net/zk0000/articles/341887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA程序与其他进程的数据通信</title><link>http://www.blogjava.net/zk0000/articles/341866.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Wed, 29 Dec 2010 03:10:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/341866.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/341866.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/341866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/341866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/341866.html</trackback:ping><description><![CDATA[JAVA中可以用 Process类的实例对象表示子进程，子进程以<strong>管道流</strong>的形式连接<strong>父进程</strong><br />
的一个输出流和输入流
<p>&nbsp;<strong>Process类的</strong> getOutputStream getInputStream方法<strong>获得父进程连接到子进程的输入输出流</strong></p>
<img src ="http://www.blogjava.net/zk0000/aggbug/341866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2010-12-29 11:10 <a href="http://www.blogjava.net/zk0000/articles/341866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>过滤流和包装类</title><link>http://www.blogjava.net/zk0000/articles/341854.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Wed, 29 Dec 2010 02:38:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/341854.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/341854.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/341854.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/341854.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/341854.html</trackback:ping><description><![CDATA[&nbsp;包装类:包装基本操作类，完成各种类型的输入输出。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如：DataOutputStream&nbsp;&nbsp;提供输出基本数据类型，但并没有指定具体输入输出设备，就需要包装一个具体输出输入设备,实现这种功能的类为包装类，也叫过滤流或处理流类<br />
<br />
&nbsp;&nbsp;BufferedInputStream<br />
&nbsp;&nbsp;&nbsp;&nbsp;构造函数 BufferedInputStream(InputStream in)&nbsp;&nbsp;&nbsp;BufferedInputStream(InputStream in,int size)<br />
&nbsp; BufferedOutputStream&nbsp; 独立开辟缓存，缓冲区包装类，无论底层设备是否有缓冲区，都为实例对象建立缓冲区<br />
&nbsp;&nbsp;&nbsp;&nbsp;构造函数 BufferedOutputStream(OutputStream out)&nbsp;[默认512byte]&nbsp;&nbsp;BufferedOutputStream(OutputStream out,int size)&nbsp;
<p>&nbsp; DataInputStream&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 提供写入各种类型数据的方法<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;构造函数 public DataInputStream(InputStream in)&nbsp;<br />
&nbsp; DataOutputStream&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包装Buffered类<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;构造函数 public DataOutputStream(OutputStream&nbsp;&nbsp;out)<br />
<br />
&nbsp; BufferedReader BufferWriter 字符流的缓存包装类<br />
</p>
<p>&nbsp; PrintStream&nbsp; 类&nbsp; 格式化输出</p>
<p>&nbsp; ObjectInputStream<br />
&nbsp; ObjectOutputStream类&nbsp;&nbsp; 包装类，读取写入对象类型，需要实现java.io.Serializable接口。</p>
<p>&nbsp; InputStreamReader <br />
&nbsp;OutputStreamWriter&nbsp;&nbsp; 字节流与字符流的转换&nbsp; <br />
<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/zk0000/packageStream.jpg" /><br />
&nbsp;<strong>Decorator 设计模式<br />
&nbsp;在程序中用一个对象包装另外一个对象，这种被称为Decorator设计模式</strong></p>
<img src ="http://www.blogjava.net/zk0000/aggbug/341854.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2010-12-29 10:38 <a href="http://www.blogjava.net/zk0000/articles/341854.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>字符编码</title><link>http://www.blogjava.net/zk0000/articles/341846.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Wed, 29 Dec 2010 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/341846.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/341846.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/341846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/341846.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/341846.html</trackback:ping><description><![CDATA[1.JAVA默认编码为unicode，取出字符串中每个字符强制转换为int型，调用<br />
Integer.toHexString()转化为16进制输出。
<p>2.调用getBytes()返回指定编码类型的字节数组，转换为16进制输出</p>
<p>4.System.getProperties().list(System.out)</p>
<p>5.System.setProperty(key, value)</p>
<p>6.取出每个输入字符的字节，根据new String(buf,0,pos,"gb2312")判断</p>
<p>7.通过getBytes返回原来字节数组，new String解码，有的不可逆。</p>
 <img src ="http://www.blogjava.net/zk0000/aggbug/341846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2010-12-29 10:16 <a href="http://www.blogjava.net/zk0000/articles/341846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA输入输出流</title><link>http://www.blogjava.net/zk0000/articles/341840.html</link><dc:creator>杰点</dc:creator><author>杰点</author><pubDate>Wed, 29 Dec 2010 02:04:00 GMT</pubDate><guid>http://www.blogjava.net/zk0000/articles/341840.html</guid><wfw:comment>http://www.blogjava.net/zk0000/comments/341840.html</wfw:comment><comments>http://www.blogjava.net/zk0000/articles/341840.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zk0000/comments/commentRss/341840.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zk0000/services/trackbacks/341840.html</trackback:ping><description><![CDATA[<p><strong>节点流类</strong><br />
InputStream&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OutputStream&nbsp;&nbsp;&nbsp; &nbsp;所有字节输入输出流抽象类<br />
BufferedInputStream BufferedOutputStream 缓存字节输入输出流<br />
DateInputStream&nbsp; DateOutputStream&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基本数据类型的输入输出<br />
FileInputStream&nbsp; FileOutputStream&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件输入输出流类<br />
PipedInputStream PipedOutputStream&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 程序字节流管道建立<br />
ByteArrayInputStream ByteArrayOutputStream 字节数组缓存区<br />
<strong>字符流<br />
</strong>Reader&nbsp; Writer&nbsp; 所有字符流类的抽象类<br />
FileReader FileWriter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件字符串操作<br />
PipedReader PipedWriter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 程序字符流管道建立<br />
StringReader&nbsp;&nbsp; StringWriter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字符串输入输出类<br />
BufferedReader BufferedWriter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 缓存字符输入输出<br />
InputStreamReader&nbsp; &nbsp;&nbsp;&nbsp; 字节转字符的桥梁<br />
<br />
<strong>字符串操作</strong> <br />
StringBuilder StringBuffer&nbsp;&nbsp;&nbsp; <br />
<br />
</p>
<p><strong>连续读取字节的对象叫输入流</strong></p>
<p>JAVA中InputStream类描述所有输入流的抽象概念</p>
<p>InputStream类的方法<br />
&nbsp;int read()，&nbsp;&nbsp; 只读一个字节，放入整数低字节<br />
&nbsp;二进制 1111 1111 byte类型为-1，int类型为255<br />
&nbsp;int read(byte[] b) &nbsp; 返回读取的字节长度，尽可能读取字节数组长度的数据<br />
&nbsp;int read(byte[] b,int off,int len) 返回读取的字节长度<br />
&nbsp;long skip(long n)&nbsp; &nbsp; 返回跳过的字节长度，用于包装类<br />
&nbsp;int available()&nbsp;&nbsp;&nbsp; &nbsp; 返回当前输入流中可读的字节数<br />
&nbsp;void mark(int readlimit)用于包装类<br />
&nbsp;void reset()&nbsp;&nbsp;&nbsp; &nbsp; 返回到标记处<br />
&nbsp;boolean markSupported() 是否支持mark<br />
&nbsp;void close()&nbsp;&nbsp; &nbsp; 关闭流 </p>
<p><strong>连续写入字节的对象叫输出流</strong></p>
<p>JAVA中OutputStream类描述所有输入流的抽象概念</p>
<p>OutputStream类的方法<br />
&nbsp;void write(int b)&nbsp; 写入整数的低字节<br />
&nbsp;void write(byte[] b) &nbsp; 将字节数组写入到输出流<br />
&nbsp;void write(byte[] b,int off,int len)<br />
&nbsp;void flush() &nbsp;&nbsp; 将内存缓存区的内容清空并输出<br />
&nbsp;void close()</p>
<p><br />
FileInputStream <br />
FileOutputStream //存在文件，则覆盖清除，不存在创建。<br />
创建文件的输入流和输出流，通过构造函数初始化</p>
<p>===<br />
PipedInputStream<br />
PipedOutputStream类<br />
&nbsp;无参构造函数<br />
用于在应用程序中创建管道通信<br />
&nbsp;connect()连接两个管道</p>
<p>===<br />
ByteArrayInputStream<br />
ByteArrayOutputStream类<br />
&nbsp;完成对字节数组内容的读写。</p>
<p>&nbsp;ByteArrayInputStream(byte[] buf)<br />
&nbsp; 取得字节数组中的所有数据，作为数据源<br />
&nbsp;ByteArrayInputStream(byte[] buf,int offset,int length)<br />
&nbsp; 取得offset 长length的字节作为数据源</p>
<p>&nbsp;ByteArrayOutputStream()<br />
&nbsp; 创建一个32字节的缓冲区<br />
&nbsp;ByteArrayOutputStream(int)<br />
&nbsp; 根据指定的大小创建缓冲区<br />
&nbsp;<br />
&nbsp;&nbsp;用于写入数据缓存 </p>
<p>&nbsp;StringReader<br />
&nbsp;StringWriter</p>
<p>&nbsp;</p>
<p><strong>! System.in连接到键盘，是InputStream类型的实例对象<br />
! System.out连接到显示器，是PrintStream类型的实例对象<br />
! 输入输出流的结束返回 -1</strong> </p>
<img src ="http://www.blogjava.net/zk0000/aggbug/341840.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zk0000/" target="_blank">杰点</a> 2010-12-29 10:04 <a href="http://www.blogjava.net/zk0000/articles/341840.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>