﻿<?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-执手麦田的咖啡空间-随笔分类-咖啡馆</title><link>http://www.blogjava.net/kwbb/category/22009.html</link><description>专注于Java的学习研究</description><language>zh-cn</language><lastBuildDate>Sun, 29 Apr 2007 07:11:46 GMT</lastBuildDate><pubDate>Sun, 29 Apr 2007 07:11:46 GMT</pubDate><ttl>60</ttl><item><title>JAVA中的PACKAGE机制——(好文转帖)</title><link>http://www.blogjava.net/kwbb/archive/2007/04/29/114565.html</link><dc:creator>执手麦田</dc:creator><author>执手麦田</author><pubDate>Sun, 29 Apr 2007 06:19:00 GMT</pubDate><guid>http://www.blogjava.net/kwbb/archive/2007/04/29/114565.html</guid><wfw:comment>http://www.blogjava.net/kwbb/comments/114565.html</wfw:comment><comments>http://www.blogjava.net/kwbb/archive/2007/04/29/114565.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kwbb/comments/commentRss/114565.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kwbb/services/trackbacks/114565.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>&nbsp;</p>
<p>1，什么都别说，先跟着我来做一把<br>我们先找一个目录，比如C:\myjob<br>然后我们建立两个目录，一个叫做src，一个叫做bin<br>C:\myjob&gt;md src<br>C:\myjob&gt;md bin<br>C:\myjob&gt;dir<br>&nbsp;驱动器 C 中的卷是 LIGHTNING<br>&nbsp;卷的序列号是 3DD1-83D9<br>&nbsp;C:\myjob 的目录<br>2005-12-25&nbsp; 14:33&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br>2005-12-25&nbsp; 14:33&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..<br>2005-12-25&nbsp; 14:34&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; src<br>2005-12-25&nbsp; 14:34&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 个文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 字节<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 个目录&nbsp;&nbsp;&nbsp; 305,123,328 可用字节<br>C:\myjob&gt;<br>然后我们在src目录中去写程序<br>C:\myjob&gt;cd src<br>C:\myjob\src&gt;<br>我们写这么4个java文件<br>////A.java<br>package com.lightning;<br>public class A{<br>{System.out.println("com.lightning.A");}<br>}<br>////B.java<br>package com.lightning;<br>public class B{<br>{System.out.println("com.lightning.B");}<br>}<br>////C.java<br>package com;<br>public class C{<br>{System.out.println("com.C");}<br>}</p>
<p>////Test.java<br>package net.test;<br>import com.lightning.*;<br>import com.*;<br>public class Test{<br>public static void main(String[] args)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new A();new B();new C();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("net.test.Test");<br>}<br>}<br>写好之后就是这样</p>
<p>C:\myjob\src&gt;dir<br>&nbsp;驱动器 C 中的卷是 LIGHTNING<br>&nbsp;卷的序列号是 3DD1-83D9</p>
<p>&nbsp;C:\myjob\src 的目录</p>
<p>2005-12-25&nbsp; 14:34&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br>2005-12-25&nbsp; 14:34&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..<br>2005-12-25&nbsp; 14:39&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 86 A.java<br>2005-12-25&nbsp; 14:40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 86 B.java<br>2005-12-25&nbsp; 14:42&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 194 Test.java<br>2005-12-25&nbsp; 14:43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 68 C.java<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 个文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 434 字节<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 个目录&nbsp;&nbsp;&nbsp; 305,106,944 可用字节</p>
<p>然后我们建立com目录，com\lightning\目录，net\test\目录<br>C:\myjob\src&gt;md com<br>C:\myjob\src&gt;md com\lightning<br>C:\myjob\src&gt;md net\test\<br>我们将Test.java放入net\test\中去<br>将A.java，B.java放入com\lightning\中去<br>将C.java放入com\中去<br>C:\myjob\src&gt;move Test.java net\test\<br>C:\myjob\src&gt;move A.java com\lightning\<br>C:\myjob\src&gt;move B.java com\lightning\<br>C:\myjob\src&gt;move C.java com\</p>
<p>然后我们在c:\myjobs中发令：<br>C:\myjob\src&gt;cd ..<br>C:\myjob&gt;javac -sourcepath src -d bin src\net\test\Test.java<br>然后我们看看bin目录中多了什么<br>C:\myjob&gt;dir bin /s<br>&nbsp;驱动器 C 中的卷是 LIGHTNING<br>&nbsp;卷的<nobr><a class=iAs oncontextmenu="return false;" onmouseover=kwHCss(event,3); style="FONT-SIZE: 14px; CURSOR: hand; COLOR: #0000ff; BORDER-BOTTOM: #000000 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://ads.telword.com/s.php?webid=193&amp;charset=gb2312&amp;word=序列号','_blank');" onmouseout=kwcss(event,3); target=_blank>序列号</a></nobr>是 3DD1-83D9</p>
<p>&nbsp;C:\myjob\bin 的目录</p>
<p>2005-12-25&nbsp; 14:34&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br>2005-12-25&nbsp; 14:34&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; com<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 个文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 字节</p>
<p>&nbsp;C:\myjob\bin\net 的目录</p>
<p>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 个文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 字节</p>
<p>&nbsp;C:\myjob\bin\net\test 的目录</p>
<p>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 520 Test.class<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 个文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 520 字节</p>
<p>&nbsp;C:\myjob\bin\com 的目录</p>
<p>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lightning<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 338 C.class<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 个文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 338 字节</p>
<p>&nbsp;C:\myjob\bin\com\lightning 的目录</p>
<p>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 354 A.class<br>2005-12-25&nbsp; 14:46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 354 B.class<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 个文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 708 字节</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 所列文件总数:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 个文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1,566 <nobr><a class=iAs oncontextmenu="return false;" onmouseover=kwHCss(event,1); style="FONT-SIZE: 14px; CURSOR: hand; COLOR: #0000ff; BORDER-BOTTOM: #000000 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://ads.telword.com/s.php?webid=193&amp;charset=gb2312&amp;word=字节','_blank');" onmouseout=kwcss(event,1); target=_blank>字节</a></nobr><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14 个目录&nbsp;&nbsp;&nbsp; 305,057,792 可用字节</p>
<p>然后我们执行，同样在c:\myjobs\下发令<br>C:\myjob&gt;java -cp bin net.test.Test<br>com.lightning.A<br>com.lightning.B<br>com.C<br>net.test.Test</p>
<p>2，从实践到理论</p>
<p>刚才我用一个非常简单但是非常完整的例子给大家演示了java的package机制。<br>为什么以前脑海里面那么简单的javac会搞得这么复杂呢？</p>
<p>实际上它本就这么复杂，<br>并不是一个.java，一行javac一个当前目录中的class这么简单。</p>
<p>首先我要打破一些东西，然后才好建立一些东西。<br>javac并非只是给一个.java编译一个class的。javac自带有make机制，也就是说，如果在<br>javac的参数中java文件使用到的任何类，javac首先会去找寻这个类的class文件存在与否<br>，如果不存在，就会在sourcepath中找寻源代码文件来编译。</p>
<p>什么是sourcepath呢？sourcepath是javac的一个参数，如果你不加指定，那么sourcepath<br>就是classpath。</p>
<p>比如我们装好jdk之后，我说过不要设定classpath环境变量，因为大部分人一旦设定了<br>classpath，不是多此一举把什么dt.jar放进去。（我可以好好打击你一下，告诉你一个可<br>悲的事实——jre永远不会从你这个classpath中去寻找dt.jar。你完全是徒劳的！）就是<br>把"."搞不见了，搞得是冷水一盆盆的往自己身上泼，脑袋一点点的涨大。</p>
<p>不要设！classpath没有你想象中那么普适和强大，它只是命令行的简化替代品。<br>你不设的话它就是"."。</p>
<p><br>回到sourcepath，sourcepath指的是你<nobr><a class=iAs oncontextmenu="return false;" onmouseover=kwHCss(event,4); style="FONT-SIZE: 14px; CURSOR: hand; COLOR: #0000ff; BORDER-BOTTOM: #000000 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://ads.telword.com/s.php?webid=193&amp;charset=gb2312&amp;word=源代码','_blank');" onmouseout=kwcss(event,4); target=_blank>源代码</a></nobr>树的存放地点。<br>为什么是源代码树？而不是一个目录的平板源代码呢？<br>请大家将原本脑海中C的编译过程完全砸掉！<br>java完全不同，java没有头文件，每个.java都是要放在源代码树中的。<br>那么这颗树是怎么组织的呢？<br>对了，就是package语句。<br>比如写了package com.lightning;<br>那么这个.java就必须放在源代码树根\的com\lighting\之下才行。</p>
<p>很多浮躁的初学者被default打包方式宠坏了。自我为中心，以为java就是一套库，自己写<br>的时候最多import进来就行了，代码从不打包，直接javac，直接java，多么方便。<br>孰不知自己写的这个.java也不过是java大平台的其中一个小单元而已。如果不打包，<br>我写一个Point，你写一个Point，甚至更有甚者敢于给自己的类起名叫String等等。<br>全部都在平板式的目录中，那jre该选哪一个？</p>
<p>一旦要使用package语句，就要使用代码树结构，当然，你要直接javac，也行。<br>不过javac出来的这个class要放在符合package结构的目录中才能发挥正常作用，否则就是<br>废物一坨。<br>而且，如果你这个.java还用到其它自己写的有package语句的.java，那这个方法就回天乏<br>术了。</p>
<p>按照sun的想象，应该是写好的.java放在符合package结构的目录中，package语句保证了<br>正确放置，如果目录位置和package语句中指示的不同，则会出错。</p>
<p>所以按照刚才我们的那种package写法，我们必然要将那几个.java文件放入相应的目录中<br>才能让javac顺利找到他们来make。</p>
<p>有人说javac可不可以像java那样 java aaa.bbb.c...java？<br>不可以<br>javac中的那个.java文件参数必须是一个文件系统的路径文件名形式。<br>然后如果用到其它的.java，javac会根据目前的sourcepath出发寻找目录结构中的那些<br>java文件。</p>
<p>当然了，既然打了包，在使用的时候。<br>要么写全名——包名.类名<br>或者使用import<br>不得不提的是，import就好比c++的using，它不负责做文件操作，它只是方便你写代码。</p>
<p>另外import<nobr><a class=iAs oncontextmenu="return false;" onmouseover=kwHCss(event,5); style="FONT-SIZE: 14px; CURSOR: hand; COLOR: #0000ff; BORDER-BOTTOM: #000000 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://ads.telword.com/s.php?webid=193&amp;charset=gb2312&amp;word=语句','_blank');" onmouseout=kwcss(event,5); target=_blank>语句</a></nobr>中的*代表的是类名，不代表包名片断。<br>你import com.*; <br>编译器仍然找不到com.lightning中的任何类。<br>反之亦然。<br>就好象你告诉编译器，我这里面要用到姓诸葛的人。<br>那么姓诸的人当然编译器不会认为也包含在内。 </p>
<p><br>所以，如果程序一旦写到一定规模。<br>就不得不使用ant来管理这些。<br>或者使用IDE，否则jdk就真的变成了java developer killer。</p>
<p>但是对于初学者，在了解为什么会有ant之类的之前，还是要体会一下使用<br>jdk的艰辛。</p>
<p>这个和以前在unix上开发的人用gcc命令行到后来使用make之后使用ide<br>之类的时候的体会是类似的。</p>
<p>最后，javac的-d参数是指示编译出来的class<nobr><a class=iAs oncontextmenu="return false;" onmouseover=kwHCss(event,2); style="FONT-SIZE: 14px; CURSOR: hand; COLOR: #0000ff; BORDER-BOTTOM: #000000 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://ads.telword.com/s.php?webid=193&amp;charset=gb2312&amp;word=文件','_blank');" onmouseout=kwcss(event,2); target=_blank>文件</a></nobr>放在哪里的，如果你不指定的话，它们<br>和.java混在一起。当然也符合<nobr><a class=iAs oncontextmenu="return false;" onmouseover=kwHCss(event,0); style="FONT-SIZE: 14px; CURSOR: hand; COLOR: #0000ff; BORDER-BOTTOM: blue 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="window.open('http://ads.telword.com/s.php?webid=193&amp;charset=gb2312&amp;word=目录','_blank');" onmouseout=kwcss(event,0); target=_blank>目录</a></nobr>结构。</p>
<img src ="http://www.blogjava.net/kwbb/aggbug/114565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kwbb/" target="_blank">执手麦田</a> 2007-04-29 14:19 <a href="http://www.blogjava.net/kwbb/archive/2007/04/29/114565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于汉诺塔的理解</title><link>http://www.blogjava.net/kwbb/archive/2007/04/28/114249.html</link><dc:creator>执手麦田</dc:creator><author>执手麦田</author><pubDate>Sat, 28 Apr 2007 01:27:00 GMT</pubDate><guid>http://www.blogjava.net/kwbb/archive/2007/04/28/114249.html</guid><wfw:comment>http://www.blogjava.net/kwbb/comments/114249.html</wfw:comment><comments>http://www.blogjava.net/kwbb/archive/2007/04/28/114249.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kwbb/comments/commentRss/114249.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kwbb/services/trackbacks/114249.html</trackback:ping><description><![CDATA[汉诺塔问题是在编程时经常提到的一个问题，因为它在递归的使用方法有很强的代表性。它讲的是需要将N个盘子从A柱上通过B柱的辅助全部移动到C柱上，其间只有一个条件需要注意，那就是大盘子始终在小盘子下面。<br><br>如何用递归的思路来解决问题呢？方法很简单，其实我们其它的什么都不需要考虑，只需要这样想，假设现在有10只盘子，我只需要将上面的9只从A柱放到B柱上，而且是上小下大，这样就可以将第10只盘子从A柱放到C柱上了，再将那9只盘子通过A柱移动到C就可以了，至于那9只盘子如何移动，我们可以这样想，我们可以用和第10只盘子相同的方法，先将上面9只通过B柱移动到C柱，然后将第9只盘子从A移动到B，再将那8只通过A从C移动到B就可以了，依此类推，方法都是一样的。因此可以有这样的程序出现。<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_55_303_Open_Image onclick="this.style.display='none'; Codehighlighter1_55_303_Open_Text.style.display='none'; Codehighlighter1_55_303_Closed_Image.style.display='inline'; Codehighlighter1_55_303_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_55_303_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_55_303_Closed_Text.style.display='none'; Codehighlighter1_55_303_Open_Image.style.display='inline'; Codehighlighter1_55_303_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;move(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n&nbsp;,</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;one&nbsp;,</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;two,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;three)</span><span id=Codehighlighter1_55_303_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_55_303_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&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">+</span><span style="COLOR: #000000">n</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">one</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">three);<br><img id=Codehighlighter1_122_301_Open_Image onclick="this.style.display='none'; Codehighlighter1_122_301_Open_Text.style.display='none'; Codehighlighter1_122_301_Closed_Image.style.display='inline'; Codehighlighter1_122_301_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_122_301_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_122_301_Closed_Text.style.display='none'; Codehighlighter1_122_301_Open_Image.style.display='inline'; Codehighlighter1_122_301_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #0000ff">else</span><span id=Codehighlighter1_122_301_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_122_301_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;move(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;one&nbsp;,&nbsp;three&nbsp;,&nbsp;two);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">将第n-1只盘子从one通过three移动到two;</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&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">+</span><span style="COLOR: #000000">n</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">one</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">three);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;move(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;two&nbsp;,&nbsp;one&nbsp;,&nbsp;three););</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">将第n-1只盘子从two通过one移动到three;</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
然后我们要做的就是通过一个主函数来调用这个方法就可以了。<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;HanN<br><img id=Codehighlighter1_18_116_Open_Image onclick="this.style.display='none'; Codehighlighter1_18_116_Open_Text.style.display='none'; Codehighlighter1_18_116_Closed_Image.style.display='inline'; Codehighlighter1_18_116_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_18_116_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_116_Closed_Text.style.display='none'; Codehighlighter1_18_116_Open_Image.style.display='inline'; Codehighlighter1_18_116_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_18_116_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_18_116_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&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;[]&nbsp;args)<br><img id=Codehighlighter1_62_114_Open_Image onclick="this.style.display='none'; Codehighlighter1_62_114_Open_Text.style.display='none'; Codehighlighter1_62_114_Closed_Image.style.display='inline'; Codehighlighter1_62_114_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_62_114_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_62_114_Closed_Text.style.display='none'; Codehighlighter1_62_114_Open_Image.style.display='inline'; Codehighlighter1_62_114_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_62_114_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_62_114_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;HanN&nbsp;hn&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;HanN();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;hn.move(</span><span style="COLOR: #000000">3</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">,</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">'</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<img src ="http://www.blogjava.net/kwbb/aggbug/114249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kwbb/" target="_blank">执手麦田</a> 2007-04-28 09:27 <a href="http://www.blogjava.net/kwbb/archive/2007/04/28/114249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>检索字符的程序</title><link>http://www.blogjava.net/kwbb/archive/2007/04/27/114056.html</link><dc:creator>执手麦田</dc:creator><author>执手麦田</author><pubDate>Fri, 27 Apr 2007 05:37:00 GMT</pubDate><guid>http://www.blogjava.net/kwbb/archive/2007/04/27/114056.html</guid><wfw:comment>http://www.blogjava.net/kwbb/comments/114056.html</wfw:comment><comments>http://www.blogjava.net/kwbb/archive/2007/04/27/114056.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/kwbb/comments/commentRss/114056.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kwbb/services/trackbacks/114056.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 用来检索字符的程序&nbsp;&nbsp;<a href='http://www.blogjava.net/kwbb/archive/2007/04/27/114056.html'>阅读全文</a><img src ="http://www.blogjava.net/kwbb/aggbug/114056.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kwbb/" target="_blank">执手麦田</a> 2007-04-27 13:37 <a href="http://www.blogjava.net/kwbb/archive/2007/04/27/114056.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于foreach的使用</title><link>http://www.blogjava.net/kwbb/archive/2007/04/26/113821.html</link><dc:creator>执手麦田</dc:creator><author>执手麦田</author><pubDate>Thu, 26 Apr 2007 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/kwbb/archive/2007/04/26/113821.html</guid><wfw:comment>http://www.blogjava.net/kwbb/comments/113821.html</wfw:comment><comments>http://www.blogjava.net/kwbb/archive/2007/04/26/113821.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kwbb/comments/commentRss/113821.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kwbb/services/trackbacks/113821.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 10pt">在jdk1.5以后的版本中，新增了一个名叫foreach的语法，它可以在循环语句中使用，方法可见以下实例。<br>例如，定义一个一维数组 a[&nbsp; ]={1,15,20,33}，此时要求打印该数组值，按照以往的方法，可以这样做，代码如下：<br></span>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;TestForEach<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img id=Codehighlighter1_25_165_Open_Image onclick="this.style.display='none'; Codehighlighter1_25_165_Open_Text.style.display='none'; Codehighlighter1_25_165_Closed_Image.style.display='inline'; Codehighlighter1_25_165_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_25_165_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_165_Closed_Text.style.display='none'; Codehighlighter1_25_165_Open_Image.style.display='inline'; Codehighlighter1_25_165_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_25_165_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_25_165_Open_Text><span style="COLOR: #000000">{</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;[]&nbsp;args)<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img id=Codehighlighter1_68_163_Open_Image onclick="this.style.display='none'; Codehighlighter1_68_163_Open_Text.style.display='none'; Codehighlighter1_68_163_Closed_Image.style.display='inline'; Codehighlighter1_68_163_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_68_163_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_68_163_Closed_Text.style.display='none'; Codehighlighter1_68_163_Open_Image.style.display='inline'; Codehighlighter1_68_163_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</span><span id=Codehighlighter1_68_163_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_68_163_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;[]&nbsp;a&nbsp;</span><span style="COLOR: #000000">=</span><span id=Codehighlighter1_80_91_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_80_91_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">15</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">33</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&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">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(a[i]);<br></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<br><span style="FONT-SIZE: 10pt">但是，当我们运用了foreach的语法后就不一样了，以上的语句可以写成如下格式：<br></span>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;TestForEach<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img id=Codehighlighter1_25_172_Open_Image onclick="this.style.display='none'; Codehighlighter1_25_172_Open_Text.style.display='none'; Codehighlighter1_25_172_Closed_Image.style.display='inline'; Codehighlighter1_25_172_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_25_172_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_172_Closed_Text.style.display='none'; Codehighlighter1_25_172_Open_Image.style.display='inline'; Codehighlighter1_25_172_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_25_172_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_25_172_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&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;[]&nbsp;args)<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img id=Codehighlighter1_71_170_Open_Image onclick="this.style.display='none'; Codehighlighter1_71_170_Open_Text.style.display='none'; Codehighlighter1_71_170_Closed_Image.style.display='inline'; Codehighlighter1_71_170_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_71_170_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_71_170_Closed_Text.style.display='none'; Codehighlighter1_71_170_Open_Image.style.display='inline'; Codehighlighter1_71_170_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</span><span id=Codehighlighter1_71_170_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_71_170_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img id=Codehighlighter1_86_97_Open_Image onclick="this.style.display='none'; Codehighlighter1_86_97_Open_Text.style.display='none'; Codehighlighter1_86_97_Closed_Image.style.display='inline'; Codehighlighter1_86_97_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_86_97_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_86_97_Closed_Text.style.display='none'; Codehighlighter1_86_97_Open_Image.style.display='inline'; Codehighlighter1_86_97_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;[]&nbsp;a&nbsp;</span><span style="COLOR: #000000">=</span><span id=Codehighlighter1_86_97_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_86_97_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">15</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">33</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&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&nbsp;:&nbsp;a)&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">注，这里定义的i必须在for结构中，</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">7</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(i);<br></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br><span style="FONT-SIZE: 10pt">写到这里不由得赞叹一下，Java真是牛呀！</span>
<img src ="http://www.blogjava.net/kwbb/aggbug/113821.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kwbb/" target="_blank">执手麦田</a> 2007-04-26 16:10 <a href="http://www.blogjava.net/kwbb/archive/2007/04/26/113821.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提问：如何避免下列情况</title><link>http://www.blogjava.net/kwbb/archive/2007/04/26/113753.html</link><dc:creator>执手麦田</dc:creator><author>执手麦田</author><pubDate>Thu, 26 Apr 2007 05:09:00 GMT</pubDate><guid>http://www.blogjava.net/kwbb/archive/2007/04/26/113753.html</guid><wfw:comment>http://www.blogjava.net/kwbb/comments/113753.html</wfw:comment><comments>http://www.blogjava.net/kwbb/archive/2007/04/26/113753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kwbb/comments/commentRss/113753.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kwbb/services/trackbacks/113753.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">有程序如下：<br></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;FPoint<br><img id=Codehighlighter1_20_212_Open_Image onclick="this.style.display='none'; Codehighlighter1_20_212_Open_Text.style.display='none'; Codehighlighter1_20_212_Closed_Image.style.display='inline'; Codehighlighter1_20_212_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_20_212_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_20_212_Closed_Text.style.display='none'; Codehighlighter1_20_212_Open_Image.style.display='inline'; Codehighlighter1_20_212_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_20_212_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_20_212_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&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;[]&nbsp;args)<br><img id=Codehighlighter1_67_210_Open_Image onclick="this.style.display='none'; Codehighlighter1_67_210_Open_Text.style.display='none'; Codehighlighter1_67_210_Closed_Image.style.display='inline'; Codehighlighter1_67_210_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_67_210_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_67_210_Closed_Text.style.display='none'; Codehighlighter1_67_210_Open_Image.style.display='inline'; Codehighlighter1_67_210_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_67_210_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_67_210_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">&nbsp;f&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0.0f</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(f);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&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">10</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_148_205_Open_Image onclick="this.style.display='none'; Codehighlighter1_148_205_Open_Text.style.display='none'; Codehighlighter1_148_205_Closed_Image.style.display='inline'; Codehighlighter1_148_205_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_148_205_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_148_205_Closed_Text.style.display='none'; Codehighlighter1_148_205_Open_Image.style.display='inline'; Codehighlighter1_148_205_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_148_205_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_148_205_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">0.1f</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(f);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS"><br><br>此程序理想的打印结果应该是：<br>0.0<br>0.1<br>0.2<br>0.3<br>0.4<br>0.5<br>0.6<br>0.7<br>0.8<br>0.9<br>1.0<br>但实际打印结果却是：<br>0.0<br>0.1<br>0.2<br>0.3<br>0.4<br>0.5<br>0.6<br>0.70000005<br>0.8000001<br>0.9000001<br>1.0000001<br><br>请问这是为什么？又该如何避免？ </p>
<img src ="http://www.blogjava.net/kwbb/aggbug/113753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kwbb/" target="_blank">执手麦田</a> 2007-04-26 13:09 <a href="http://www.blogjava.net/kwbb/archive/2007/04/26/113753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Java中String的几个问题</title><link>http://www.blogjava.net/kwbb/archive/2007/04/25/113448.html</link><dc:creator>执手麦田</dc:creator><author>执手麦田</author><pubDate>Wed, 25 Apr 2007 02:58:00 GMT</pubDate><guid>http://www.blogjava.net/kwbb/archive/2007/04/25/113448.html</guid><wfw:comment>http://www.blogjava.net/kwbb/comments/113448.html</wfw:comment><comments>http://www.blogjava.net/kwbb/archive/2007/04/25/113448.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/kwbb/comments/commentRss/113448.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kwbb/services/trackbacks/113448.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">问题：如何理解<br>String str＝new String（"x"）; <br>和<br>String str="x"; <br><br>在计算机的内存中有堆和栈两块空间，其中栈中存放所有对象、函数、变量等的饮用；而堆中存放对象、值等。 <br>不管是new出的对象还是用类似String str = "x";这类的对象，都是放在堆中的。 <br>举一个简单的例子： <br>String str1 = "x" ; <br>String str2 = "x" ; <br>String str3 = new String("x") ; <br>表面上看这三句回实例化3个String对象，实际上是两个。在java中有一个叫&#8220;字符数据池&#8221;的内存管理机制，在对str2赋值之前，会检查池中有没有相同的数据，如果有，则直接引用；若没有，系统会实例化这个String的对象；而执行到String str3 = new String("x") ;系统会直接实例化该对象，而不会在池中查找。也不会将这个对象放在池中。 <br>你可能会问，如果改动str1或str2时会不会改动另外一个引用的值。答案是不会。系统会首先在池中查找有没有相同的对象，如果没有，会实例化这个对象。<br><br>补充一：<br>注意，对于new出来的对象则要小心。<br>如<br>String str3 = new String("x") ; <br>String str4 = new String("x") ; <br>System.out.println(str4==str3);<br>它的打印结果肯定是false；因为此时new出来的对象并不在一个位置，并不用去检查字符数据池。所以为false。<br>只有在执行：<br>System.out.println(str3.equals(str4));时其值才为true。<br><br></p>
<br>
<img src ="http://www.blogjava.net/kwbb/aggbug/113448.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kwbb/" target="_blank">执手麦田</a> 2007-04-25 10:58 <a href="http://www.blogjava.net/kwbb/archive/2007/04/25/113448.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Java.lang.NullPointerException</title><link>http://www.blogjava.net/kwbb/archive/2007/04/25/113443.html</link><dc:creator>执手麦田</dc:creator><author>执手麦田</author><pubDate>Wed, 25 Apr 2007 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/kwbb/archive/2007/04/25/113443.html</guid><wfw:comment>http://www.blogjava.net/kwbb/comments/113443.html</wfw:comment><comments>http://www.blogjava.net/kwbb/archive/2007/04/25/113443.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/kwbb/comments/commentRss/113443.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kwbb/services/trackbacks/113443.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">今天在调试一个简单的JAVA手机小程序的时候，遇到了一个让我头痛了半天的问题。但最终得以解决，将方法写上，说不定还有一些朋友也遇到了类似的情况。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">这个程序是一个关于在手机上显示图片的程序，分成两段：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">1、MainCanvas.java部分</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">内容如下：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">import java.io.IOException;</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">import javax.microedition.lcdui.Canvas;<br>import javax.microedition.lcdui.Graphics;<br>import javax.microedition.lcdui.Image;</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS"></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">public class MainCanvas extends Canvas {</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">public Image m_Image;<br>MainCanvas(){<br>&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; m_Image=Image.createImage("/IM.png");<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; catch(IOException e){<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}<br>protected void paint(Graphics g){<br>&nbsp;&nbsp; g.drawImage(m_Image,0,0,Graphics.TOP|Graphics.LEFT);<br>}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">}<br></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">2、MyCartoonMidlet.java部分</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">内容如下：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">ukimport javax.microedition.lcdui.Display;<br>import javax.microedition.midlet.MIDlet;<br>import javax.microedition.midlet.MIDletStateChangeException;</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS"><br>public class MyCartoonMidlet extends MIDlet {</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">public MainCanvas m_MainCanvas;<br>public MyCartoonMidlet() {<br>&nbsp;&nbsp; // TODO 自动生成构造函数存根<br>}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">protected void destroyApp(boolean arg0) throws MIDletStateChangeException {<br>&nbsp;&nbsp; // TODO 自动生成方法存根</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">protected void pauseApp() {<br>&nbsp;&nbsp; // TODO 自动生成方法存根<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">protected void startApp() throws MIDletStateChangeException {<br>&nbsp;&nbsp; m_MainCanvas=new MainCanvas();<br>&nbsp;&nbsp; Display.getDisplay(this).setCurrent(m_MainCanvas);<br>&nbsp;&nbsp; while(true){<br>&nbsp;&nbsp;&nbsp; m_MainCanvas.repaint();<br>&nbsp;&nbsp; }</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">过程是调用目录下的一个叫做 IIM.PNG的文件</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Comic Sans MS">在调试过程中，编译器老是报Java.lang.NullPointerException 的错误，顺藤摸瓜，发现是找不到图片的问题才导致抛出这样的异常。可是我已经把图片放到了程序目录下呀。于是一度认为是编程环境出了问题。可事实并非如此。查找了半天资料才发现，原来图片应该放在verified\classes下，把文件放进去，所有问题都解决了。OK！</p>
<img src ="http://www.blogjava.net/kwbb/aggbug/113443.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kwbb/" target="_blank">执手麦田</a> 2007-04-25 10:44 <a href="http://www.blogjava.net/kwbb/archive/2007/04/25/113443.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VE的安装方法</title><link>http://www.blogjava.net/kwbb/archive/2007/04/25/113441.html</link><dc:creator>执手麦田</dc:creator><author>执手麦田</author><pubDate>Wed, 25 Apr 2007 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/kwbb/archive/2007/04/25/113441.html</guid><wfw:comment>http://www.blogjava.net/kwbb/comments/113441.html</wfw:comment><comments>http://www.blogjava.net/kwbb/archive/2007/04/25/113441.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/kwbb/comments/commentRss/113441.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kwbb/services/trackbacks/113441.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt">昨天有朋友问我VE怎么装，给他解释了一下。顺便到网上检索了一下，找到这篇好文，推荐给大家。</p>
<p style="FONT-SIZE: 10pt" align=center>Eclipse3.0.1上Visual Editor</p>
<p style="FONT-SIZE: 10pt">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;好多朋友都在使用Eclipse，我也在学习使用中，总是喜欢尝试新鲜的东西，以前一直没有使用过clipse的Visual Edit 插件，装过一次，可就是没有成功，经过反复琢磨同时又看了别的网友的经验，今天将我的配置过程介绍给大家，希望能给大家帮助。</p>
<p style="FONT-SIZE: 10pt"></p>
<p style="FONT-SIZE: 10pt">第一步: 下载所需软件</p>
<p style="FONT-SIZE: 10pt"><a href="http://java.sun.com/">JDK</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;版本要在1.4.2以上把</p>
<p style="FONT-SIZE: 10pt"><a href="http://www.eclipse.org/">Eclipse3.0.1</a>:</p>
<p style="FONT-SIZE: 10pt"><a href="http://download.eclipse.org/tools/emf/downloads/drops/2.0.1/R200409171617/emf-sdo-runtime-2.0.1.zip">emf-sdo-runtime-2.0.1</a></p>
<p style="FONT-SIZE: 10pt"><a href="http://download.eclipse.org/tools/gef/downloads/drops/R-3.0.1-200408311615/GEF-runtime-3.0.1.zip">GEF-runtime-3.0.1</a></p>
<p style="FONT-SIZE: 10pt">NLpack-eclipse-SDK-3.0.x-win32 ：这个Eclipse开发平台的汉化包，可以不使用</p>
<p style="FONT-SIZE: 10pt"><a href="http://download.eclipse.org/tools/ve/downloads/drops/R-1.0.1.1-200410221351/VE-runtime-1.0.1.1.zip">VE-runtime-1.0.1.1</a></p>
<p style="FONT-SIZE: 10pt"><a href="http://download.eclipse.org/tools/ve/downloads/drops/R-1.0.1.1-200410221351/VE-SDK-1.0.1.1.zip">VE-SDK-1.0.1.1</a></p>
<p style="FONT-SIZE: 10pt"></p>
<p style="FONT-SIZE: 10pt">第二步：</p>
<p style="FONT-SIZE: 10pt">安装JDK（这个就不说了），</p>
<p style="FONT-SIZE: 10pt">看看Eclipse能否正常运行：下载的Eclipse一般是一个压缩文件，我们把它解压缩为 F:\eclipse ,双击F:\eclipse\eclipse.exe应用程序，也就是 <img height=49 src="http://blog.csdn.net/images/blog_csdn_net/sstallman/70318/执行Eclipse.jpg" width=58 border=0>图标，</p>
<p style="FONT-SIZE: 10pt">首次运行程序的界面为<img height=576 src="http://blog.csdn.net/images/blog_csdn_net/sstallman/70318/首次运行.jpg" width=800 border=0></p>
<p style="FONT-SIZE: 10pt">第三步:安装插件</p>
<p style="FONT-SIZE: 10pt">这里，我们使用写链接文件的方式来安装插件</p>
<p style="FONT-SIZE: 10pt">1．&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在F:\eclipse文件夹下面建立一个links文件夹<img height=54 src="http://blog.csdn.net/images/blog_csdn_net/sstallman/70318/links.jpg" width=62 border=0>，我们的；链接文件就放在这个文件夹下面的。</p>
<p style="FONT-SIZE: 10pt">2．在F盘建立一个plugins文件夹<img height=53 src="http://blog.csdn.net/images/blog_csdn_net/sstallman/70318/plugins.jpg" width=62 border=0>，专门用来存放需要安装的插件。我们把下载的emf-sdo-runtime-2.0.1和GEF-runtime-3.0.1插件解压缩到F：\plugins目录下面，整个目录结构可以见下图</p>
<p style="FONT-SIZE: 10pt" align=center></p>
<p style="FONT-SIZE: 10pt" align=center><img height=293 src="http://blog.csdn.net/images/blog_csdn_net/sstallman/70318/结构.jpg" width=250 border=0> </p>
<p style="FONT-SIZE: 10pt">3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;写链接文件</p>
<p style="FONT-SIZE: 10pt">我们用记事本建立文件，文件以 .link为后缀，建立四个链接文件，名字分别是 </p>
<p style="FONT-SIZE: 10pt">名字：&nbsp;&nbsp;emf-sdo-runtime-2.0.1.link</p>
<p style="FONT-SIZE: 10pt">文件内容：path=F:\\plugins\\emf-sdo-runtime-2.0.1</p>
<p style="FONT-SIZE: 10pt"></p>
<p style="FONT-SIZE: 10pt">名字：&nbsp;&nbsp;GEF-runtime-3.0.1.link</p>
<p style="FONT-SIZE: 10pt">文件内容：path=F:\\plugins\\GEF-runtime-3.0.1</p>
<p style="FONT-SIZE: 10pt"></p>
<p style="FONT-SIZE: 10pt">名字：&nbsp;&nbsp;VE-runtime-1.0.1.1.link</p>
<p style="FONT-SIZE: 10pt">文件内容： </p>
<img src ="http://www.blogjava.net/kwbb/aggbug/113441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kwbb/" target="_blank">执手麦田</a> 2007-04-25 10:41 <a href="http://www.blogjava.net/kwbb/archive/2007/04/25/113441.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>