﻿<?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-fkjava</title><link>http://www.blogjava.net/fkjava/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 23 Apr 2026 08:19:02 GMT</lastBuildDate><pubDate>Thu, 23 Apr 2026 08:19:02 GMT</pubDate><ttl>60</ttl><item><title>Eclipse代码自动补全设置</title><link>http://www.blogjava.net/fkjava/archive/2012/09/24/388437.html</link><dc:creator>疯狂软件</dc:creator><author>疯狂软件</author><pubDate>Mon, 24 Sep 2012 07:15:00 GMT</pubDate><guid>http://www.blogjava.net/fkjava/archive/2012/09/24/388437.html</guid><wfw:comment>http://www.blogjava.net/fkjava/comments/388437.html</wfw:comment><comments>http://www.blogjava.net/fkjava/archive/2012/09/24/388437.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fkjava/comments/commentRss/388437.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fkjava/services/trackbacks/388437.html</trackback:ping><description><![CDATA[<p align="center"><strong>&nbsp;</strong></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">一般默认情况下，</span>Eclipse<span style="font-family: 宋体">的代码提示功能是比</span>MicrosoftVisualStudio<span style="font-family: 宋体">的差很多的，主要是</span>Eclipse<span style="font-family: 宋体">本身有很多选项是默认关闭的，要开发者自己去手动配置。如果开发者不清楚的话，就不知道</span>Eclipse<span style="font-family: 宋体">的代码提示功能一样能像</span>MicrosoftVisualStudio<span style="font-family: 宋体">的代码提示功能一样强大。</span> </p>
<p><span style="font-family: 宋体">先举个简单的例子说明问题所在，例如在</span>Eclipse<span style="font-family: 宋体">，代码里面，打个</span>foreach<span style="font-family: 宋体">，</span>switch<span style="font-family: 宋体">等这些，是无法得到代码提示的，其他的就更不用说了，而在</span>MicrosoftVisualStudio<span style="font-family: 宋体">里面是得到非常友好的代码提示的。实际上，</span>Eclipse<span style="font-family: 宋体">代码里面的代码提示功能默认的一般是点&#8220;</span>.<span style="font-family: 宋体">&#8221;，一般是有了点&#8220;</span>.<span style="font-family: 宋体">&#8221;才会有代码提示。</span> </p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">原理：&#8220;</span>Auto Activation triggers for java<span style="font-family: 宋体">&#8221;这个选项就是指触发代码提示的的选项，把&#8220;</span>.<span style="font-family: 宋体">&#8221;改成&#8220;</span>.abcdefghijklmnopqrstuvwxyz(,<span style="font-family: 宋体">&#8221;的意思，就是指遇到</span>26<span style="font-family: 宋体">个字母和</span>.<span style="font-family: 宋体">，（这些符号就触发代码提示功能了。增强</span>Eclipse<span style="font-family: 宋体">的代码提示功能，具体怎么样来配置？下面开始说步骤：</span> </p>
<p>&nbsp;</p>
<p>1.<span style="font-family: 宋体">打开</span>Eclipse<span style="font-family: 宋体">，然后&#8220;</span>window<span style="font-family: 宋体">&#8221;&#8594;&#8220;</span>Preferences<span style="font-family: 宋体">&#8221;</span> </p>
<p>2.<span style="font-family: 宋体">选择&#8220;</span>java<span style="font-family: 宋体">&#8221;，展开，&#8220;</span>Editor<span style="font-family: 宋体">&#8221;，选择&#8220;</span>Content Assist<span style="font-family: 宋体">&#8221;。</span> </p>
<p>3.<span style="font-family: 宋体">选择&#8220;</span>Content Assist<span style="font-family: 宋体">&#8221;，然后看到右边，右边的&#8220;</span>Auto-Activation<span style="font-family: 宋体">&#8221;下面的&#8220;</span>Auto Activation triggers for java<span style="font-family: 宋体">&#8221;这个选项。其实就是指触发代码提示的就是&#8220;</span>.<span style="font-family: 宋体">&#8221;这个符号</span>. </p>
<p>4.<span style="font-family: 宋体">&#8220;</span>Auto Activation triggers for java<span style="font-family: 宋体">&#8221;这个选项，在&#8220;</span>.<span style="font-family: 宋体">&#8221;后加</span>abc<span style="font-family: 宋体">字母，方便后面的查找修改。然后&#8220;</span>apply<span style="font-family: 宋体">&#8221;，点击&#8220;</span>OK<span style="font-family: 宋体">&#8221;。</span> </p>
<p>5.<span style="font-family: 宋体">然后，&#8220;</span>File<span style="font-family: 宋体">&#8221;&#8594;&#8220;</span>Export<span style="font-family: 宋体">&#8221;，在弹出的窗口中选择&#8220;</span>Perferences<span style="font-family: 宋体">&#8221;，点击&#8220;下一步&#8221;。</span> </p>
<p>6.<span style="font-family: 宋体">选择导出文件路径，本人导出到桌面，输入&#8220;</span>test<span style="font-family: 宋体">&#8221;作为文件名，点击&#8220;保存&#8221;。</span> </p>
<p>7.<span style="font-family: 宋体">在桌面找到刚在保存的文件&#8220;</span>test.epf<span style="font-family: 宋体">&#8221;</span>,<span style="font-family: 宋体">右键选择&#8220;用记事本打开&#8221;。</span> </p>
<p>8.<span style="font-family: 宋体">可以看到很多配置</span>Eclipse<span style="font-family: 宋体">的信息。</span> </p>
<p>9.<span style="font-family: 宋体">按&#8220;</span>ctrl+F<span style="font-family: 宋体">&#8221;快捷键，输入&#8220;</span>.abc<span style="font-family: 宋体">&#8221;，点击&#8220;查找下一个&#8221;。</span> </p>
<p>10.<span style="font-family: 宋体">查找到&#8220;</span>.abc<span style="font-family: 宋体">&#8221;的配置信息</span>. </p>
<p>11.<span style="font-family: 宋体">把&#8220;</span>.abc<span style="font-family: 宋体">&#8221;改成&#8220;</span>.abcdefghijklmnopqrstuvwxyz(,<span style="font-family: 宋体">&#8221;，保存，关闭&#8220;</span>test.epf<span style="font-family: 宋体">&#8221;。</span> </p>
<p>12.<span style="font-family: 宋体">回到</span>Eclipse<span style="font-family: 宋体">界面，&#8220;</span>File<span style="font-family: 宋体">&#8221;&#8594;&#8220;</span>Import<span style="font-family: 宋体">&#8221;，在弹出的窗口中选择&#8220;</span>Perferences<span style="font-family: 宋体">&#8221;，点击&#8220;下一步&#8221;，选择刚在已经修改的&#8220;</span>test.epf<span style="font-family: 宋体">&#8221;文件，点击&#8220;打开&#8221;，点击&#8220;</span>Finish<span style="font-family: 宋体">&#8221;。该步骤和上面的导出步骤类似。</span> </p>
<p>13.<span style="font-family: 宋体">最后当然是进行代码测试了。随便新建一个工程，新建一个类。在代码输入</span>switch<span style="font-family: 宋体">，</span>foreach<span style="font-family: 宋体">等进行测试。你立即会发现，果然出了提示，而且无论是敲哪个字母都会有很多相关的提示了，很流畅很方便。</span> </p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">总结：&#8220;</span>Auto Activation triggers for java<span style="font-family: 宋体">&#8221;这个选项就是指触发代码提示的的选项，把&#8220;</span>.<span style="font-family: 宋体">&#8221;改成&#8220;</span>.abcdefghijklmnopqrstuvwxyz(,<span style="font-family: 宋体">&#8221;的意思，就是指遇到</span>26<span style="font-family: 宋体">个字母和</span>.<span style="font-family: 宋体">，（这些符号就触发代码提示功能了。顺便说一下，修改类名，接口名等以不同颜色高亮的，可以这样配置在&#8220;</span>java<span style="font-family: 宋体">&#8221;&#8594;&#8220;</span>enditor<span style="font-family: 宋体">&#8221;&#8594;&#8220;</span>syntac<span style="font-family: 宋体">&#8221;，右边展开&#8220;</span>java<span style="font-family: 宋体">&#8221;&#8594;&#8220;</span>classes<span style="font-family: 宋体">&#8221;，勾上&#8220;</span>Enable<span style="font-family: 宋体">&#8221;这个选项，选择自己喜欢的颜色即可。当然还有其他相关的颜色配置。具体就不说啦。其实，在&#8220;</span>Preferences<span style="font-family: 宋体">&#8221;这个东西，有很多可以配置的东西，使得</span>Eclipse<span style="font-family: 宋体">优化的，具体的就要各个人根据自己个人喜好去配置</span></p>
<p style="text-indent: 21.75pt"><span style="font-family: 宋体">您正在看的文章来自疯狂软件教育中心</span> <a href="http://www.fkjava.org/">www.fkjava.org</a></p>
<p style="text-indent: 21.75pt"><span style="font-family: 宋体">信息咨询：</span>Q564205990<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">星老师</span></p><img src ="http://www.blogjava.net/fkjava/aggbug/388437.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fkjava/" target="_blank">疯狂软件</a> 2012-09-24 15:15 <a href="http://www.blogjava.net/fkjava/archive/2012/09/24/388437.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>5种方法教你用jQuery重写表单验证</title><link>http://www.blogjava.net/fkjava/archive/2012/09/22/388312.html</link><dc:creator>疯狂软件</dc:creator><author>疯狂软件</author><pubDate>Sat, 22 Sep 2012 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/fkjava/archive/2012/09/22/388312.html</guid><wfw:comment>http://www.blogjava.net/fkjava/comments/388312.html</wfw:comment><comments>http://www.blogjava.net/fkjava/archive/2012/09/22/388312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fkjava/comments/commentRss/388312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fkjava/services/trackbacks/388312.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p><span style="font-family: 宋体">首先，对编码知识进行简要的说明，请务必理解后再看下面的代码。发送中文字符请求时，如果使用</span>get<span style="font-family: 宋体">方式，运行正常；而使用</span>post<span style="font-family: 宋体">方法则会出现乱码。这是由于异步对象</span>XMLHttpRequest<span style="font-family: 宋体">在处理返回的</span>responseText<span style="font-family: 宋体">的时候，是按</span>UTF-8<span style="font-family: 宋体">编码进行解码的。</span></p>
<p><span style="font-family: 宋体">如果你原来的网页编码是</span>gb2312<span style="font-family: 宋体">的话，当然会发生编码的冲突了；如果你原来的网页编码是</span>utf-8<span style="font-family: 宋体">，那么就不会出现中文乱码的问题了。</span></p>
<p><span style="font-family: 宋体">出现了中文乱码该怎么办呢？通常的解决办法是用</span>escape()<span style="font-family: 宋体">对发送的数据进行编码，然后在返回的</span>responseText<span style="font-family: 宋体">上再用</span>unescape()<span style="font-family: 宋体">进行解码。然而在</span>JavaScript<span style="font-family: 宋体">编程中通常不推荐使用</span>escape()<span style="font-family: 宋体">和</span>unescape()<span style="font-family: 宋体">，而推荐使用</span>encodeURI()<span style="font-family: 宋体">和</span>decodeURI()<span style="font-family: 宋体">。请看下面的&#8220;表单验证实例&#8221;，或许对你学习编码知识有一定的帮助。</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">第一、</span>jQuery<span style="font-family: 宋体">的</span>load(url,[data],[callback])<span style="font-family: 宋体">方法</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">语法说明：</span>url<span style="font-family: 宋体">为异步请求的地址，</span>data<span style="font-family: 宋体">用来向服务器传送请求数据，为可选参数。一旦</span>data<span style="font-family: 宋体">参数启用，整个请求过程将以</span>post<span style="font-family: 宋体">的方式进行，否则默认为</span>get<span style="font-family: 宋体">方式。如果希望在</span>get<span style="font-family: 宋体">方式下也传递数据，可以在</span>url<span style="font-family: 宋体">地址后面用类似&#8220;</span>dataname1=data1&amp;dataName2=data2<span style="font-family: 宋体">&#8221;的方法。</span></p>
<p>callback<span style="font-family: 宋体">为</span>Ajax<span style="font-family: 宋体">加载成功后运行的回调函数。另外使用</span>load()<span style="font-family: 宋体">方法返回的数据，不再需要考虑是文本还是</span>XML<span style="font-family: 宋体">，</span>jQuery<span style="font-family: 宋体">都会自动进行处理。好了，下面马上使用</span>load()<span style="font-family: 宋体">方法实现&#8220;自动表单验证&#8221;实例。首先是，</span>html<span style="font-family: 宋体">框架，</span>5<span style="font-family: 宋体">个例子都是一样的，如下：</span></p>
<p>1. &lt;form&gt;<span>&nbsp;&nbsp; </span></p>
<p>2. <span style="font-family: 宋体">用户昵称</span>:&lt;input type="text" onblur="startCheck(this)" name="User" id="User"&gt;&lt;span id="UserResult"&gt;&lt;/span&gt;&lt;br /&gt;<span>&nbsp;&nbsp; </span></p>
<p>3. <span style="font-family: 宋体">输入密码</span>:&lt;input type="password" name="passwd1"&gt;&lt;br /&gt;<span>&nbsp;&nbsp; </span></p>
<p>4. <span style="font-family: 宋体">确认密码</span>:&lt;/td&gt;&lt;td&gt;&lt;input type="password" name="passwd2"&gt;&lt;br /&gt;<span>&nbsp;&nbsp; </span></p>
<p>5. &lt;input type="submit" value="<span style="font-family: 宋体">注册</span>" class="button"&gt;<span>&nbsp;&nbsp; </span></p>
<p>6. &lt;input type="reset" value="<span style="font-family: 宋体">重置</span>" class="button"&gt;<span>&nbsp;&nbsp; </span></p>
<p>7. &lt;/form&gt;&nbsp;</p>
<p><span style="font-family: 宋体">必要说明：</span></p>
<p>1<span style="font-family: 宋体">、</span>onblur="startCheck(this)" <span style="font-family: 宋体">这是</span>JavaScript<span style="font-family: 宋体">代码</span>(<span style="font-family: 宋体">简称</span>js) <span style="font-family: 宋体">，意思是</span>text<span style="font-family: 宋体">文本框失去焦点时触发自定义函数</span>startCheck(),this<span style="font-family: 宋体">是指代</span>text<span style="font-family: 宋体">文本框的值。</span></p>
<p>2<span style="font-family: 宋体">、</span>&lt;span id="UserResult"&gt;&lt;/span&gt;<span style="font-family: 宋体">用来存放异步对象返回的结果。</span></p>
<p>1. jQuery<span style="font-family: 宋体">代码如下：</span>&nbsp;</p>
<p>2.&nbsp;</p>
<p>3. &lt;script language="javascript" src="jquery.min.js"&gt;&lt;/script&gt;<span>&nbsp;&nbsp; </span></p>
<p>4. &lt;script language="javascript"&gt;<span>&nbsp;&nbsp; </span></p>
<p>5. function startCheck(oInput){<span>&nbsp;&nbsp; </span></p>
<p>6.<span>&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">首先判断是否有输入，没有输入直接返回，并提示</span><span>&nbsp;&nbsp; </span></p>
<p>7.<span>&nbsp;&nbsp;&nbsp;&nbsp; if(!oInput.value){&nbsp;&nbsp; </span></p>
<p>8.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oInput.focus(); //</span><span style="font-family: 宋体">聚焦到用户名的输入框</span><span>&nbsp;&nbsp; </span></p>
<p>9.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("UserResult").innerHTML = "User cannot be empty.";&nbsp;&nbsp; </span></p>
<p>10.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;&nbsp;&nbsp; </span></p>
<p>11.<span>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </span></p>
<p>12.<span>&nbsp;&nbsp;&nbsp;&nbsp; oInput=$.trim(oInput.value); //</span><span style="font-family: 宋体">使用</span>jQuery<span style="font-family: 宋体">的</span>$.trim()<span style="font-family: 宋体">方法过滤左右空格</span><span>&nbsp;&nbsp; </span></p>
<p>13.<span>&nbsp;&nbsp;&nbsp;&nbsp; var sUrl = "action.asp?user=" + oInput;&nbsp;&nbsp; </span></p>
<p>14.<span>&nbsp;&nbsp;&nbsp;&nbsp; sUrl=encodeURI(sUrl); //</span><span style="font-family: 宋体">使用</span>encodeURI()<span style="font-family: 宋体">编码，解决中文乱码问题</span><span>&nbsp;&nbsp; </span></p>
<p>15.<span>&nbsp;&nbsp;&nbsp;&nbsp; $("#UserResult").load(sUrl,function(data){&nbsp;&nbsp; </span></p>
<p>16.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $("#UserResult").html(decodeURI(data)); //</span><span style="font-family: 宋体">使用</span>decodeURI()<span style="font-family: 宋体">解码</span><span>&nbsp;&nbsp; </span></p>
<p>17.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </span></p>
<p>18.<span>&nbsp;&nbsp;&nbsp;&nbsp; );&nbsp;&nbsp; </span></p>
<p>19. }<span>&nbsp;&nbsp; </span></p>
<p>20. &lt;/script&gt;&nbsp;</p>
<p><span style="font-family: 宋体">必要说明：</span></p>
<p>1<span style="font-family: 宋体">、使用</span>jQuery<span style="font-family: 宋体">时，都必须加载</span>jquery.min.js<span style="font-family: 宋体">文件，可以到</span>http://jquery.com/<span style="font-family: 宋体">官网下载最新的版本。</span></p>
<p>2<span style="font-family: 宋体">、判断是否有输入时，用的全是</span>JavaScript<span style="font-family: 宋体">语法。</span></p>
<p>3<span style="font-family: 宋体">、对传递给&#8220;处理页&#8221;的参数进行</span>encodeURI<span style="font-family: 宋体">编码，以解决中文乱码问题。</span></p>
<p>4<span style="font-family: 宋体">、</span>load()<span style="font-family: 宋体">中的</span>function<span style="font-family: 宋体">函数是为了对返回结果进行</span>decodeURI<span style="font-family: 宋体">解码，以解决中文乱码问题。</span></p>
<p>5<span style="font-family: 宋体">、对</span>$.trim()<span style="font-family: 宋体">、</span>$("#UserResult")<span style="font-family: 宋体">、</span>html<span style="font-family: 宋体">等</span>jQuery<span style="font-family: 宋体">语法不理解的，可以参考</span>jQuery<span style="font-family: 宋体">中文手册。本站提供下载。</span></p>
<p>1. action.asp<span style="font-family: 宋体">处理页代码如下：</span>&nbsp;</p>
<p>2.&nbsp;</p>
<p>3. &lt;%<span>&nbsp;&nbsp; </span></p>
<p>4. if(Request("user")="eko") then<span>&nbsp;&nbsp; </span></p>
<p>5. Response.Write "Sorry, " &amp; Request("user") &amp; " already exists."<span>&nbsp;&nbsp; </span></p>
<p>6. else<span>&nbsp;&nbsp; </span></p>
<p>7. Response.Write Request("user")&amp;" is ok."<span>&nbsp;&nbsp; </span></p>
<p>8. end if<span>&nbsp;&nbsp; </span></p>
<p>9. %&gt; </p>
<p><span style="font-family: 宋体">必要说明：</span></p>
<p>1<span style="font-family: 宋体">、</span>action.asp<span style="font-family: 宋体">处理页的编码是</span>GB2312<span style="font-family: 宋体">，如果把</span>"Sorry..already exists..is ik"<span style="font-family: 宋体">等英文改为中文，请看下面的说明。</span></p>
<p>2<span style="font-family: 宋体">、使用</span>post<span style="font-family: 宋体">方法会出现乱码，这是由于异步对象</span>XMLHttpRequest<span style="font-family: 宋体">在处理返回的</span>responseText<span style="font-family: 宋体">的时候，是按</span>UTF-8<span style="font-family: 宋体">编码进行解码的。</span></p>
<p>3<span style="font-family: 宋体">、所以</span>post<span style="font-family: 宋体">方式的话，必须把</span>action.asp<span style="font-family: 宋体">页另存为时，第三项的编码由</span> ANST <span style="font-family: 宋体">改为</span> UTF-8 (<span style="font-family: 宋体">请务必记住</span>!!)<span style="font-family: 宋体">。</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">第二、使用</span>$.get(url,[data],[callback])<span style="font-family: 宋体">和</span>$.post(url,[data],[callback])<span style="font-family: 宋体">方法</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">语法说明：尽管</span>load()<span style="font-family: 宋体">方法可以实现</span>get<span style="font-family: 宋体">和</span>post<span style="font-family: 宋体">两种方式，但很多时候开发者还是希望能够指定发送方式，并且处理服务器返回的值。</span>jQuery<span style="font-family: 宋体">提供了</span>$.get()<span style="font-family: 宋体">和</span>$.post()<span style="font-family: 宋体">两种方法，分别针对这两种请求方式。</span></p>
<p><span style="font-family: 宋体">其中，</span>url<span style="font-family: 宋体">为请求地址，</span>data<span style="font-family: 宋体">为请求数据的列表，是可选参数，</span>callback<span style="font-family: 宋体">为请求成功后的回调函数，该函数接受两个参数，第一个参数为服务器返回的数据，第二个参数为服务器的状态，是可选参数。</span>$.post()<span style="font-family: 宋体">中的</span>type<span style="font-family: 宋体">为请求数据的类型，可以是</span>html<span style="font-family: 宋体">、</span>xml<span style="font-family: 宋体">、</span>json<span style="font-family: 宋体">等。</span> <span style="font-family: 宋体">&#8220;可自动校验表单实例&#8221;的</span>jQuery<span style="font-family: 宋体">代码如下，</span>html<span style="font-family: 宋体">如上所述。</span></p>
<p>1. &lt;script language="javascript" src="jquery.min.js"&gt;&lt;/script&gt;<span>&nbsp;&nbsp; </span></p>
<p>2. &lt;script language="javascript"&gt;<span>&nbsp;&nbsp; </span></p>
<p>3. function createQueryString(){<span>&nbsp;&nbsp; </span></p>
<p>4.<span>&nbsp;&nbsp;&nbsp;&nbsp; var username=$("#User").val();&nbsp;&nbsp; </span></p>
<p>5.<span>&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">组合成对象的形式</span><span>&nbsp;&nbsp; </span></p>
<p>6.<span>&nbsp;&nbsp;&nbsp;&nbsp; var queryString={user:username};&nbsp;&nbsp; </span></p>
<p>7.<span>&nbsp;&nbsp;&nbsp;&nbsp; return queryString;&nbsp;&nbsp; </span></p>
<p>8.<span>&nbsp;&nbsp; &nbsp;&nbsp;}&nbsp;&nbsp; </span></p>
<p>9. function startCheck(oInput){<span>&nbsp;&nbsp; </span></p>
<p>10.<span>&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">首先判断是否有输入，没有输入直接返回，并提示</span><span>&nbsp;&nbsp; </span></p>
<p>11.<span>&nbsp;&nbsp;&nbsp;&nbsp; if(!oInput.value){&nbsp;&nbsp; </span></p>
<p>12.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oInput.focus(); //</span><span style="font-family: 宋体">聚焦到用户名的输入框</span><span>&nbsp;&nbsp; </span></p>
<p>13.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("UserResult").innerHTML = "User cannot be empty.";&nbsp;&nbsp; </span></p>
<p>14.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;&nbsp;&nbsp; </span></p>
<p>15.<span>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </span></p>
<p>16.<span>&nbsp;&nbsp;&nbsp;&nbsp; oInput=$.trim(oInput.value); //</span><span style="font-family: 宋体">使用</span>jQuery<span style="font-family: 宋体">的</span>$.trim()<span style="font-family: 宋体">方法过滤左右空格</span><span>&nbsp;&nbsp; </span></p>
<p>17.<span>&nbsp;&nbsp;&nbsp;&nbsp; $.get("action.asp",createQueryString(),&nbsp;&nbsp; </span></p>
<p>18.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function(data){&nbsp;&nbsp; </span></p>
<p>19.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $("#UserResult").html(data);&nbsp;&nbsp; </span></p>
<p>20.<span>&nbsp;&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp; </span></p>
<p>21. }<span>&nbsp;&nbsp; </span></p>
<p>22. &lt;/script&gt; </p>
<p><span style="font-family: 宋体">必要说明：</span></p>
<p>1<span style="font-family: 宋体">、对</span>$.trim()<span style="font-family: 宋体">、</span>$("#UserResult")<span style="font-family: 宋体">、</span>html<span style="font-family: 宋体">、</span>val()<span style="font-family: 宋体">等</span>jQuery<span style="font-family: 宋体">语法不理解的，可以参考</span>jQuery<span style="font-family: 宋体">中文手册。本站提供下载。</span></p>
<p>2<span style="font-family: 宋体">、自定义函数</span>createQueryString()<span style="font-family: 宋体">，是对传入&#8220;处理页&#8221;的参数，进行处理。一种常规的方法。</span></p>
<p>3<span style="font-family: 宋体">、因为是以</span>get<span style="font-family: 宋体">方式处理，说明这里不需要进行编码和解码。下面以</span>post<span style="font-family: 宋体">方式处理，则需要编码和解码了，代码如下</span></p>
<p>1. function createQueryString(){<span>&nbsp;&nbsp; </span></p>
<p>2.<span>&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">使用</span>encodeURI()<span style="font-family: 宋体">编码解决中文乱码问题</span><span>&nbsp;&nbsp; </span></p>
<p>3.<span>&nbsp;&nbsp;&nbsp;&nbsp; var username=encodeURI($("#User").val());&nbsp;&nbsp; </span></p>
<p>4.<span>&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">组合成对象的形式</span><span>&nbsp;&nbsp; </span></p>
<p>5.<span>&nbsp;&nbsp;&nbsp;&nbsp; var queryString={user:username};&nbsp;&nbsp; </span></p>
<p>6.<span>&nbsp;&nbsp;&nbsp;&nbsp; return queryString;&nbsp;&nbsp; </span></p>
<p>7.<span>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </span></p>
<p>8. function startCheck(oInput){<span>&nbsp;&nbsp; </span></p>
<p>9.<span>&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">首先判断是否有输入，没有输入直接返回，并提示</span><span>&nbsp;&nbsp; </span></p>
<p>10.<span>&nbsp;&nbsp;&nbsp;&nbsp; if(!oInput.value){&nbsp;&nbsp; </span></p>
<p>11.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oInput.focus(); //</span><span style="font-family: 宋体">聚焦到用户名的输入框</span><span>&nbsp;&nbsp; </span></p>
<p>12.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("UserResult").innerHTML = "User cannot be empty.";&nbsp;&nbsp; </span></p>
<p>13.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;&nbsp;&nbsp; </span></p>
<p>14.<span>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </span></p>
<p>15.<span>&nbsp;&nbsp;&nbsp;&nbsp; oInput=$.trim(oInput.value); //</span><span style="font-family: 宋体">使用</span>jQuery<span style="font-family: 宋体">的</span>$.trim()<span style="font-family: 宋体">方法过滤左右空格</span><span>&nbsp;&nbsp; </span></p>
<p>16.<span>&nbsp;&nbsp;&nbsp;&nbsp; $.post("action.asp",createQueryString(),&nbsp;&nbsp; </span></p>
<p>17.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function(data){&nbsp;&nbsp; </span></p>
<p>18.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $("#UserResult").html(decodeURI(data));&nbsp;&nbsp; </span></p>
<p>19.<span>&nbsp;&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp; </span></p>
<p>20. }<span>&nbsp;&nbsp; </span></p>
<p>21. &lt;/script&gt; </p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">第三、使用</span>$.ajax()<span style="font-family: 宋体">方法</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">语法说明：尽管</span>load()<span style="font-family: 宋体">、</span>$.get()<span style="font-family: 宋体">和</span>$.post()<span style="font-family: 宋体">非常方便实用，但却不能控制错误和很多交互的细节，可以说这</span>3<span style="font-family: 宋体">种方法对</span>Ajax<span style="font-family: 宋体">的可控性较差。</span>jQuery<span style="font-family: 宋体">提供了一个强大的函数</span>$.ajax(options)<span style="font-family: 宋体">来设置</span>Ajax<span style="font-family: 宋体">访问服务器的各个细节，它的语法十分简单，就是设置</span>Ajax<span style="font-family: 宋体">的各个选项，然后指定相应的值。&#8220;可自动校验表单&#8221;实例代码如下：</span></p>
<p>1. &lt;script language="javascript" src="jquery.min.js"&gt;&lt;/script&gt;<span>&nbsp;&nbsp; </span></p>
<p>2. &lt;script language="javascript"&gt;<span>&nbsp;&nbsp; </span></p>
<p>3. function createQueryString(){<span>&nbsp;&nbsp; </span></p>
<p>4.&nbsp;<span>&nbsp;&nbsp;&nbsp;//</span><span style="font-family: 宋体">使用</span>encodeURI()<span style="font-family: 宋体">编码解决中文乱码问题</span><span>&nbsp;&nbsp; </span></p>
<p>5.<span>&nbsp;&nbsp;&nbsp;&nbsp; var username=encodeURI($("#User").val());&nbsp;&nbsp; </span></p>
<p>6.<span>&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">组合成对象的形式</span><span>&nbsp;&nbsp; </span></p>
<p>7.<span>&nbsp;&nbsp;&nbsp;&nbsp; var queryString={user:username};&nbsp;&nbsp; </span></p>
<p>8.<span>&nbsp;&nbsp;&nbsp;&nbsp; return queryString;&nbsp;&nbsp; </span></p>
<p>9. }<span>&nbsp;&nbsp; </span></p>
<p>10. function startCheck(oInput){<span>&nbsp;&nbsp; </span></p>
<p>11.<span>&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">首先判断是否有输入，没有输入直接返回，并提示</span>&nbsp;&nbsp;</p>
<p>12.<span>&nbsp;&nbsp;&nbsp;&nbsp; if(!oInput.value){&nbsp;&nbsp; </span></p>
<p>13.<span>&nbsp;&nbsp;&nbsp;&nbsp; oInput.focus(); //</span><span style="font-family: 宋体">聚焦到用户名的输入框</span><span>&nbsp;&nbsp; </span></p>
<p>14.<span>&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("UserResult").innerHTML = "User cannot be empty.";&nbsp;&nbsp; </span></p>
<p>15.<span>&nbsp;&nbsp;&nbsp;&nbsp; return;&nbsp;&nbsp; </span></p>
<p>16.<span>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </span></p>
<p>17.<span>&nbsp;&nbsp;&nbsp;&nbsp; oInput=$.trim(oInput.value); //</span><span style="font-family: 宋体">使用</span>jQuery<span style="font-family: 宋体">的</span>$.trim()<span style="font-family: 宋体">方法过滤左右空格</span>&nbsp;&nbsp;</p>
<p>18.<span>&nbsp;&nbsp;&nbsp;&nbsp; $.ajax({&nbsp;&nbsp; </span></p>
<p>19.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type: "GET",&nbsp;&nbsp; </span></p>
<p>20.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url: "action.asp",&nbsp;&nbsp; </span></p>
<p>21.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data: createQueryString(),&nbsp;&nbsp; </span></p>
<p>22.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; success: function(data){&nbsp;&nbsp; </span></p>
<p>23.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $("#UserResult").html(decodeURI(data));&nbsp;&nbsp; </span></p>
<p>24.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </span></p>
<p>25.<span>&nbsp;&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp; </span></p>
<p>26. }<span>&nbsp;&nbsp; </span></p>
<p>27. &lt;/script&gt; </p>
<p><span style="font-family: 宋体">必要说明：</span></p>
<p>1<span style="font-family: 宋体">、代码基本同上，只是</span>$.ajax(options)<span style="font-family: 宋体">稍有不同，对于其参数不理解可以参考</span>jQuery<span style="font-family: 宋体">中文手册。</span></p>
<p>2<span style="font-family: 宋体">、给个建议，无论是</span>get<span style="font-family: 宋体">方式还是</span>post<span style="font-family: 宋体">方式，都习惯进行编码，以防出现中文乱码的问题。</span></p>
<p>3<span style="font-family: 宋体">、再强调一下，无论使用哪种程序，如果遇到问题了，都可以参考相关的手册说明，这是建站所必需的。</span></p>
<p><span style="font-family: 宋体">上面的实例使用了</span>jQuery<span style="font-family: 宋体">的</span>load()<span style="font-family: 宋体">方法、</span>$.get()<span style="font-family: 宋体">、</span>$.post()<span style="font-family: 宋体">、</span>$.ajax()<span style="font-family: 宋体">的</span>4<span style="font-family: 宋体">种方法，都要考虑中文乱码的问题，下面推荐一个方法，进一步简化</span>jQuery<span style="font-family: 宋体">代码，呵呵。</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">第四、表单插件</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">表单插件（</span>Form Plugin<span style="font-family: 宋体">）是一款功能非常强大的插件，在</span>jQuery<span style="font-family: 宋体">官方网站上目前为</span>4<span style="font-family: 宋体">星级推荐，下载后为</span>jquery.form.js<span style="font-family: 宋体">文件。该插件提供获取表单数据、重置表单项目、使用</span>Ajax<span style="font-family: 宋体">提交数据等一系列功能，深受开发人员的喜爱。使用表单插件，再次重写&#8220;表单校验实例&#8221;，完整代码如下：</span></p>
<p>1. &lt;form id="myform" action="action.asp"&gt;<span>&nbsp;&nbsp; </span></p>
<p>2. <span style="font-family: 宋体">用户昵称</span>:&lt;input type="text" onblur="startCheck(this)" name="User" id="User"&gt;&lt;input type="button" value="<span style="font-family: 宋体">检</span> <span style="font-family: 宋体">查</span>" class="button"&gt;&lt;span id="UserResult"&gt;&lt;/span&gt;&lt;br /&gt;<span>&nbsp;&nbsp; </span></p>
<p>3. <span style="font-family: 宋体">输入密码</span>:&lt;input type="password" name="passwd1"&gt;&lt;br /&gt;<span>&nbsp;&nbsp; </span></p>
<p>4. <span style="font-family: 宋体">确认密码</span>:&lt;/td&gt;&lt;td&gt;&lt;input type="password" name="passwd2"&gt;&lt;br /&gt;&lt;br /&gt;<span>&nbsp;&nbsp; </span></p>
<p>5. &lt;input type="submit" value="<span style="font-family: 宋体">注册</span>" class="button"&gt;&lt;input type="reset" value="<span style="font-family: 宋体">重置</span>" class="button"&gt;<span>&nbsp;&nbsp; </span></p>
<p>6. &lt;/form&gt; </p>
<p>HTML<span style="font-family: 宋体">框架加了一个&#8220;检查&#8221;的按钮</span>(<span style="font-family: 宋体">使用手动校验的方法</span>)<span style="font-family: 宋体">，</span>jQuery<span style="font-family: 宋体">如下：</span></p>
<p>1. &lt;script language="javascript" src="jquery.min.js"&gt;&lt;/script&gt;<span>&nbsp;&nbsp; </span></p>
<p>2. &lt;script language="javascript" src="jquery.form.js"&gt;&lt;/script&gt;<span>&nbsp;&nbsp; </span></p>
<p>3. &lt;script language="javascript"&gt;<span>&nbsp;&nbsp; </span></p>
<p>4. function startCheck(oInput){<span>&nbsp;&nbsp; </span></p>
<p>5.<span>&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">首先判断是否有输入，没有输入直接返回，并提示</span><span>&nbsp;&nbsp; </span></p>
<p>6.<span>&nbsp;&nbsp;&nbsp;&nbsp; if(!oInput.value){&nbsp;&nbsp; </span></p>
<p>7.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oInput.focus(); //</span><span style="font-family: 宋体">聚焦到用户名的输入框</span><span>&nbsp;&nbsp; </span></p>
<p>8.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById("UserResult").innerHTML = "User cannot be empty.";&nbsp;&nbsp; </span></p>
<p>9.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;&nbsp;&nbsp; </span></p>
<p>10.<span>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </span></p>
<p>11. }<span>&nbsp;&nbsp; </span></p>
<p>12. $(function(){<span>&nbsp;&nbsp; </span></p>
<p>13.<span>&nbsp;&nbsp;&nbsp;&nbsp; $("input[type=button]").click(function(){&nbsp;&nbsp; </span></p>
<p>14.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var options={&nbsp;&nbsp; </span></p>
<p>15.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target: "#UserResult"&nbsp;&nbsp; </span></p>
<p>16.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };&nbsp;&nbsp; </span></p>
<p>17.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">表单的</span>Ajax<span style="font-family: 宋体">化</span><span>&nbsp;&nbsp; </span></p>
<p>18.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $("#myform").ajaxSubmit(options);&nbsp;&nbsp; </span></p>
<p>19.<span>&nbsp;&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp; </span></p>
<p>20. });<span>&nbsp;&nbsp; </span></p>
<p>21. &lt;/script&gt; </p>
<p><span style="font-family: 宋体">必要说明：</span></p>
<p>&nbsp;</p>
<p>1<span style="font-family: 宋体">、使用表单插件，必须加载</span>jquery.form.js<span style="font-family: 宋体">文件。</span></p>
<p>&nbsp;</p>
<p>2<span style="font-family: 宋体">、按</span>Ajax<span style="font-family: 宋体">方式提交数据，可以使用表单插件的</span>ajaxSubmit(options)<span style="font-family: 宋体">来按照</span>Ajax<span style="font-family: 宋体">的方式直接提交表单或者使用</span>ajaxform(options)<span style="font-family: 宋体">方法，通常在页面加载完成时执行，用来将表单统一</span>Ajax<span style="font-family: 宋体">化，并且提交表单依然使用传统的</span>submit<span style="font-family: 宋体">按钮，只不过进行的是</span>Ajax<span style="font-family: 宋体">提交。其中参数</span>options<span style="font-family: 宋体">与</span>$.ajax(options)<span style="font-family: 宋体">的参数基本相同。</span></p>
<p><span>&nbsp;&nbsp; </span><span style="font-family: 宋体">您正在看的文章来自疯狂软件教育中心</span> <a href="http://www.fkjava.org/">www.fkjava.org</a></p>
<p><span>&nbsp;&nbsp; </span><span style="font-family: 宋体">信息咨询：</span>Q564205990<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">星老师</span></p><img src ="http://www.blogjava.net/fkjava/aggbug/388312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fkjava/" target="_blank">疯狂软件</a> 2012-09-22 11:22 <a href="http://www.blogjava.net/fkjava/archive/2012/09/22/388312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中常见的违规编码</title><link>http://www.blogjava.net/fkjava/archive/2012/09/21/388258.html</link><dc:creator>疯狂软件</dc:creator><author>疯狂软件</author><pubDate>Fri, 21 Sep 2012 06:45:00 GMT</pubDate><guid>http://www.blogjava.net/fkjava/archive/2012/09/21/388258.html</guid><wfw:comment>http://www.blogjava.net/fkjava/comments/388258.html</wfw:comment><comments>http://www.blogjava.net/fkjava/archive/2012/09/21/388258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fkjava/comments/commentRss/388258.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fkjava/services/trackbacks/388258.html</trackback:ping><description><![CDATA[<p align="center"><strong><span style="font-size: 16pt">Java</span></strong><strong><span style="font-family: 宋体; font-size: 16pt">中常见的违规编码</span></strong><strong><span style="font-size: 16pt"></span></strong></p>
<p>&nbsp;</p>
<p>&nbsp;<span style="font-family: 宋体">一、</span>Eclipse<span style="font-family: 宋体">编译器提供源代码格式输入</span></p>
<p><span>&nbsp;&nbsp;&nbsp; Eclipse</span><span style="font-family: 宋体">提供自动源码格式选项，并且组织输入（删除未使用的代码）。你可以使用下面的这些快捷键进行操作。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; Ctrl + Shift + F--</span><span style="font-family: 宋体">源代码格式</span></p>
<p><span>&nbsp;&nbsp;&nbsp; Ctrl + Shift + O--</span><span style="font-family: 宋体">组织输入并删除未使用的代码</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">代替手动调用这两个函数，只需根据</span>Eclipse<span style="font-family: 宋体">自动格式和自动组织选项，可以随时保存文件。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">操作步骤，在</span>Eclipse<span style="font-family: 宋体">中进入</span>Window -&gt; Preferences -&gt; Java -&gt; Editor -&gt; Save Actions,<span style="font-family: 宋体">然后以选定的方式保存，最后检查</span>Format source code + Organize imports.</p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">二、避免多个返回（退出点）</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">依照你的方法，确保只有一个退出点。不要在同一个地方或多个地方使用返回。比如，下面的代码，</span>NOT RECOMMENDED<span style="font-family: 宋体">（不建议），这是因为有多个退出点（返回语句）。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 1.private boolean isEligible</span><span style="font-family: 宋体">（</span>int age<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 2.&nbsp;if</span><span style="font-family: 宋体">（</span>age &gt; 18<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 3.&nbsp;&nbsp;&nbsp; return true;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 4.&nbsp;}else{</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 5.&nbsp;&nbsp;&nbsp; return false;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 6.&nbsp;}</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 7.}</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">下面的代码有所提升，这是更高版本的。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 1.private boolean isEligible</span><span style="font-family: 宋体">（</span>int age<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 2.&nbsp;boolean result;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 3.&nbsp;if</span><span style="font-family: 宋体">（</span>age &gt; 18<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 4.&nbsp;&nbsp;&nbsp; result = true;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 5.&nbsp;}else{</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 6.&nbsp;&nbsp;&nbsp; result = false;</span></p>
<p>&nbsp;<span>&nbsp;&nbsp;7.&nbsp;}</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 8.&nbsp;return result;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 9.}</span></p>
<p><span style="font-family: 宋体">三、简化</span>if-else</p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">我写了几个实用的方法作为参考，检查语句条件并且基于该条件返回值。比如，考虑到</span>isEligible<span style="font-family: 宋体">方法，正如你之前所看到的：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 1.private boolean isEligible</span><span style="font-family: 宋体">（</span>int age<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 2.&nbsp;boolean result;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 3.&nbsp;if</span><span style="font-family: 宋体">（</span>age &gt; 18<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 4.&nbsp;&nbsp;&nbsp; result = true;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 5.&nbsp;}else{</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 6.&nbsp;&nbsp;&nbsp; result = false;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 7.&nbsp;}</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 8.&nbsp;return result;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 9.}</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">整个方法以一个单一的</span>return<span style="font-family: 宋体">语句重新编写：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 1.private boolean isEligible</span><span style="font-family: 宋体">（</span>int age<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 2.3.return age &gt; 18;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 4.5.}</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">四、不要给</span>Boolean, Integer<span style="font-family: 宋体">或者</span>String<span style="font-family: 宋体">创建新的实例</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">避免给</span>Boolean,Integer,String<span style="font-family: 宋体">创建新的实例。比如，使用</span>new Boolean<span style="font-family: 宋体">（</span>true<span style="font-family: 宋体">），</span>Boolean,valueOf<span style="font-family: 宋体">（</span>true<span style="font-family: 宋体">）。修改后的语句与之前的效果基本相同，除了在性能上有所提升。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">五、使用大括号模块语句</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">永远别忘了使用大括号模块语句比如</span>if<span style="font-family: 宋体">、</span>for<span style="font-family: 宋体">、</span>while.<span style="font-family: 宋体">这样做的好处是当你在修改模块级语句时减少了模糊代码并且避免引进</span>bug<span style="font-family: 宋体">的机会。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">不建议：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 1.if</span><span style="font-family: 宋体">（</span>age &gt; 18<span style="font-family: 宋体">）</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 2.&nbsp;result = true;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 3.else</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 4.&nbsp;result = false;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">建议：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 1.if</span><span style="font-family: 宋体">（</span>age &gt; 18<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 2.&nbsp;result = true;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 3.}else{</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 4.&nbsp;result = false;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 5.}</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">六、以</span>final<span style="font-family: 宋体">类型标记方法参数，任何时候都适用</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">请记住，以</span>final<span style="font-family: 宋体">类型标记方法参数，任何时候都适用。这样做的好处在于当你不小心修改参数值时，编译器会给你警告，同时它还能以更好的方式优化编译器代码字节。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">建议：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; private boolean isEligible</span><span style="font-family: 宋体">（</span>final int age<span style="font-family: 宋体">）</span>{ <span style="font-family: 宋体">&#8230;</span> }</p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">七、在</span>UPPERCASE<span style="font-family: 宋体">中命名</span>public static final<span style="font-family: 宋体">字段</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">在</span>UPPERCASE<span style="font-family: 宋体">中命名</span>public static final<span style="font-family: 宋体">字段（通常也被称之为常量）。这个可以让你轻松区分常量字段和局部变量之间的不同。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">不建议：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; public static final String testAccountNo = "12345678";</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">建议：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; public static final String TEST_ACCOUNT_NO = "12345678";,</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">八、组合成单一的</span>if<span style="font-family: 宋体">语句</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">在尽可能多的情况下，把多个</span>if<span style="font-family: 宋体">语句组合成单一的</span>if<span style="font-family: 宋体">语句，比如下面的代码：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 1.if</span><span style="font-family: 宋体">（</span>age &gt; 18<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 2.&nbsp;if</span><span style="font-family: 宋体">（</span> voted == false<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 3.&nbsp;&nbsp;&nbsp; // eligible to vote.</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 4.&nbsp;}</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 5.}</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">合并成单一的</span>if<span style="font-family: 宋体">语句：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 1.if</span><span style="font-family: 宋体">（</span>age &gt; 18 &amp;&amp; !voted<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 2.&nbsp;// eligible to vote</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 3.}</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">九、</span>Switch<span style="font-family: 宋体">应该有</span>default</p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">始终给</span>Switch<span style="font-family: 宋体">语句添加</span>default.</p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">十、使用常量来避免重复定义相同的字符串值</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">如果你在多个地方必须使用字符串，那么使用常量来避免重复定义拥有相同值的字符串。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">比如，看下面的代码：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 1.private void someMethod</span><span style="font-family: 宋体">（）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 2.&nbsp;logger.log</span><span style="font-family: 宋体">（</span>"My Application" + e<span style="font-family: 宋体">）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 3.&nbsp;&#8230;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 4.&nbsp;&#8230;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 5.&nbsp;logger.log</span><span style="font-family: 宋体">（</span>"My Application" + f<span style="font-family: 宋体">）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 6.}</span></p>
<p><span>&nbsp;&nbsp;&nbsp; string literal"</span><span style="font-family: 宋体">我的应用</span>"<span style="font-family: 宋体">可以作为常量并且能在代码中使用。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 1.public static final String MY_APP = "My Application";</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 2.</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 3.private void someMethod</span><span style="font-family: 宋体">（）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; 4.&nbsp;logger.log</span><span style="font-family: 宋体">（</span>MY_APP + e<span style="font-family: 宋体">）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 5.&nbsp;&#8230;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 6.&nbsp;&#8230;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; 7.&nbsp;logger.log</span><span style="font-family: 宋体">（</span>MY_APP + f<span style="font-family: 宋体">）；</span></p>
<p style="text-indent: 21.75pt">8.}</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">您正在看的文章来自疯狂软件教育中心</span> <a href="http://www.fkjava.org/">www.fkjava.org</a></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">信息咨询：</span>Q564205990<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">星老师</span></p><img src ="http://www.blogjava.net/fkjava/aggbug/388258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fkjava/" target="_blank">疯狂软件</a> 2012-09-21 14:45 <a href="http://www.blogjava.net/fkjava/archive/2012/09/21/388258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML5或带来行业洗牌</title><link>http://www.blogjava.net/fkjava/archive/2012/09/20/388162.html</link><dc:creator>疯狂软件</dc:creator><author>疯狂软件</author><pubDate>Thu, 20 Sep 2012 03:26:00 GMT</pubDate><guid>http://www.blogjava.net/fkjava/archive/2012/09/20/388162.html</guid><wfw:comment>http://www.blogjava.net/fkjava/comments/388162.html</wfw:comment><comments>http://www.blogjava.net/fkjava/archive/2012/09/20/388162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fkjava/comments/commentRss/388162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fkjava/services/trackbacks/388162.html</trackback:ping><description><![CDATA[<p align="center">&nbsp;</p>
<p style="text-indent: 26.25pt">2012<span style="font-family: 宋体">年中国移动互联网大会上，欧朋浏览器总经理宋麟在名为&#8220;移动互联网的未来&#8221;的主题演讲中表示，新一代网络标准</span>HTML5<span style="font-family: 宋体">对于移动浏览器性能和用户体验的提升有重要意义，虽然目前国内</span>HTML5<span style="font-family: 宋体">存在一定虚火，但最晚到明年年中</span>HTML5<span style="font-family: 宋体">技术会趋向成熟。伴随着</span>HTML5<span style="font-family: 宋体">标准的普及，或将带来整个浏览器行业的重新洗牌。</span></p>
<p><span style="font-family: 宋体">　　&#8220;</span>HTML5<span style="font-family: 宋体">作为一个技术而言，是最符合互联网精神的一项技术。&#8221;宋麟说。作为一个开放的网络标准，</span>HTML5<span style="font-family: 宋体">具有跨平台、多设备、及时更新等多项优势，在统一的</span>HTML5<span style="font-family: 宋体">标准下，移动浏览器可以在不同平台、不同设备上实现一致的用户体验。对开发者和用户而言，</span>HTML5<span style="font-family: 宋体">都能带来极大便利；同时，</span>HTML5<span style="font-family: 宋体">的开放性使其不会被任何一家企业垄断，有利于促进整个行业的良性发展。</span></p>
<p><span style="font-family: 宋体">　　虽然</span>HTML5<span style="font-family: 宋体">目前存在性能不够完善、盈利模式不清晰等许多争议，但宋麟认为</span>HTML5<span style="font-family: 宋体">与移动互联网的未来密切相关，伴随</span>HTML5<span style="font-family: 宋体">技术标准的成熟，移动浏览器将更好地承担平台的功能。</span></p>
<p><span style="font-family: 宋体">　　从去年年底到今年年中，国内主流移动浏览器厂商先后推出支持</span>HTML5<span style="font-family: 宋体">标准的产品，并展开在</span>HTML5<span style="font-family: 宋体">跑分上的比拼。&#8220;现阶段</span>HTML5<span style="font-family: 宋体">在国内有点被过度吹捧。&#8221;宋麟认为，&#8220;主要表现在目前</span>HTML5<span style="font-family: 宋体">技术无论是用户体验还是性能支持上都还不是十分成熟。&#8221;作为</span>HTML5<span style="font-family: 宋体">标准的发明人，</span>Opera<span style="font-family: 宋体">欧朋与全球其他领先企业都把</span>HTML5<span style="font-family: 宋体">研发作为现阶段的重点，预计到明年年中，</span>HTML5<span style="font-family: 宋体">标准将得到初步的普及。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">谈及</span>HTML5<span style="font-family: 宋体">标准普及对移动互联网市场竞争带来的影响，宋麟认为</span>HTML5<span style="font-family: 宋体">既是全行业的机会，也会对现有市场格局带来冲击。&#8220;变局中有人会跑赢，也会有被淘汰。&#8221;宋麟表示。</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">您正在看的文章来自疯狂软件教育中心</span> <a href="http://www.fkjava.org/">www.fkjava.org</a></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">信息咨询：</span>Q564205990<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">星老师</span></p><img src ="http://www.blogjava.net/fkjava/aggbug/388162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fkjava/" target="_blank">疯狂软件</a> 2012-09-20 11:26 <a href="http://www.blogjava.net/fkjava/archive/2012/09/20/388162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java学习小结</title><link>http://www.blogjava.net/fkjava/archive/2012/09/18/387992.html</link><dc:creator>疯狂软件</dc:creator><author>疯狂软件</author><pubDate>Tue, 18 Sep 2012 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/fkjava/archive/2012/09/18/387992.html</guid><wfw:comment>http://www.blogjava.net/fkjava/comments/387992.html</wfw:comment><comments>http://www.blogjava.net/fkjava/archive/2012/09/18/387992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fkjava/comments/commentRss/387992.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fkjava/services/trackbacks/387992.html</trackback:ping><description><![CDATA[<p>&nbsp;<span style="font-family: 宋体">最近，经过几次课，算是复习，也算是学习吧。修补了一些，以前自学时的漏洞，熟悉了一些关于</span>JAVA<span style="font-family: 宋体">的基础知识。以下是，这几天的一个简单的总结。</span> </p>
<p>1.Java<span style="font-family: 宋体">的环境</span>JDK(Java development Kit) </p>
<p><span style="font-family: 宋体">在</span>Sun<span style="font-family: 宋体">公司</span>http<span style="font-family: 宋体">：</span>//www.oracle.com<span style="font-family: 宋体">的网页上有各种版本的</span>Jdk<span style="font-family: 宋体">，供用户下载使用。安装</span>jdk<span style="font-family: 宋体">后，一定要修改环境变量。就实际上而言，说修改不如说是添加环境变量。最后进入</span>cmd<span style="font-family: 宋体">界面验证</span>JDK<span style="font-family: 宋体">首安装成功！若安装不成功，</span>oracle<span style="font-family: 宋体">公司的网页上也有一些列的解决方案。</span> </p>
<p>2.Java<span style="font-family: 宋体">的类名</span> </p>
<p>Java<span style="font-family: 宋体">是大小写敏感的一种语言，只能以字母开头，可以含有下划线和数字，不能使用关键字和保留字。</span> </p>
<p>Java <span style="font-family: 宋体">关键字列表</span> (<span style="font-family: 宋体">依字母排序</span> <span style="font-family: 宋体">共</span>51<span style="font-family: 宋体">组</span>): </p>
<p>abstract, assert,boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum,extends, final, finally, float, for, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while </p>
<p>Java <span style="font-family: 宋体">保留字列表</span> (<span style="font-family: 宋体">依字母排序</span> <span style="font-family: 宋体">共</span>14<span style="font-family: 宋体">组</span>) : Java<span style="font-family: 宋体">保留字是指现有</span>Java<span style="font-family: 宋体">版本尚未使用</span> <span style="font-family: 宋体">但以后版本可能会作为关键字使用。</span> </p>
<p>byValue, cast, false, future, generic, inner, operator, outer, rest, true, var <span style="font-family: 宋体">，</span> goto <span style="font-family: 宋体">，</span>const,null </p>
<p><span style="font-family: 宋体">类名在使用中习惯将每个单词首字母大写。且于文件名相同。</span> </p>
<p>3.Java<span style="font-family: 宋体">的数据类型</span> </p>
<p><span style="font-family: 宋体">一般而言，</span>Java<span style="font-family: 宋体">的数据类型可分为基本类型和引用类型</span> </p>
<p><span style="font-family: 宋体">基本类型：</span> </p>
<p>boolean <span style="font-family: 宋体">布尔值，作二元判断</span> true, false</p>
<p>byte 8<span style="font-family: 宋体">位有符号整数</span> <span style="font-family: 宋体">最小值</span>-128<span style="font-family: 宋体">，最大值</span>127</p>
<p>short 16<span style="font-family: 宋体">位有符号整数</span> <span style="font-family: 宋体">最小值</span>-32768<span style="font-family: 宋体">，最大值</span>32767</p>
<p>int 32<span style="font-family: 宋体">位有符号整数</span> <span style="font-family: 宋体">最小值</span>-2147483648<span style="font-family: 宋体">，最大值</span>2147483647</p>
<p>long 64<span style="font-family: 宋体">位有符号整数</span> <span style="font-family: 宋体">最小值</span>-9223372036854775808<span style="font-family: 宋体">，最大值</span> 9223372036854775807</p>
<p>float 32<span style="font-family: 宋体">位浮点数</span> 1.4E-45~3.4028235E38</p>
<p>double 64<span style="font-family: 宋体">位浮点数</span> 4.9E-324~1.7976931348623157E308</p>
<p>char 16<span style="font-family: 宋体">位</span>Unicode<span style="font-family: 宋体">字符</span> <span style="font-family: 宋体">不适用</span></p>
<p><span style="font-family: 宋体">基本类型（</span>Primitive Types<span style="font-family: 宋体">）也称作内置类型，是其他类型的基础。所有的其他类型（包括</span>Java<span style="font-family: 宋体">核心库和用户自定义类型）都是通过基本类型扩展而来的。这些类型是我们描述对象最基本的方式。比如：判断是否使用</span>boolean<span style="font-family: 宋体">；衡量大小、长度使用各种整型（包括</span>short, int, long<span style="font-family: 宋体">）和浮点数（</span>float<span style="font-family: 宋体">和</span>double<span style="font-family: 宋体">）；表达字符使用</span>char<span style="font-family: 宋体">；而处理二进制数据块使用</span>byte<span style="font-family: 宋体">。</span> </p>
<p><span style="font-family: 宋体">引用类型</span> </p>
<p><span style="font-family: 宋体">有数组和对象，究其根本数组也是对象</span> </p>
<p><span style="font-family: 宋体">最后不得不提一下</span>String<span style="font-family: 宋体">型</span> </p>
<p>String s="abc";//s<span style="font-family: 宋体">不为对象</span> </p>
<p>String s=new String("abc");//s<span style="font-family: 宋体">为一个对象</span> </p>
<p>4.<span style="font-family: 宋体">对象与类</span> </p>
<p><span style="font-family: 宋体">类：类似于生物界的门纲目科属种的分类，在</span>Java<span style="font-family: 宋体">语言中，只有类这个概念，而可以通过父类和子类的方式来表达这种层次家哪的关系。比如，我们可以说食物是一个类，而面食就是一个子类。</span> </p>
<p><span style="font-family: 宋体">对象：就像是一个类的一个实例，比如我们说电脑，这就是一个类，泛指电脑这类东西，而我们说，这台电脑，这就是一个实例了，就是一个对象。当然，类也可以是看不见摸不着的东西，比如说语言就是一个类，而中国普通话就是一个对象。</span> </p>
<p><span style="font-family: 宋体">类名</span> <span style="font-family: 宋体">对象名</span>=new <span style="font-family: 宋体">类名（）；</span>//<span style="font-family: 宋体">实例化对象的格式</span> </p>
<p><span style="font-family: 宋体">总之，类相当于一个概念，而类就是这个概念下的一个实体。</span> </p>
<p>5.<span style="font-family: 宋体">参数传递</span> </p>
<p>Java<span style="font-family: 宋体">中参数传递的方式和</span>C<span style="font-family: 宋体">中一样，可分为两类：值传递和引用传递</span></p>
<p><span style="font-family: 宋体">值传递</span> </p>
<p>int a=10;//<span style="font-family: 宋体">定义一个变量</span> </p>
<p>fun b=new fun();//<span style="font-family: 宋体">假设已有一个类为</span>fun,<span style="font-family: 宋体">实例化一个对象</span>b; </p>
<p>b.function(a);//<span style="font-family: 宋体">将</span>a<span style="font-family: 宋体">的值传递给</span>b<span style="font-family: 宋体">的方法</span> </p>
<p><span style="font-family: 宋体">值传递中，只会传递原有变量的值，传递之后，会有一块新的你内存存储变量值，其后的一切动作均与原来变量无关。</span></p>
<p><span style="font-family: 宋体">引用传递</span> </p>
<p>fun f1=new fun();//<span style="font-family: 宋体">实例化一个对象</span>b </p>
<p>fun f2=new fun();//<span style="font-family: 宋体">实例化一个对象</span>b </p>
<p>f1=f2;//<span style="font-family: 宋体">将</span>f2<span style="font-family: 宋体">的值赋给</span>f1 </p>
<p><span style="font-family: 宋体">引用传递中</span>f1<span style="font-family: 宋体">，</span>f2<span style="font-family: 宋体">相当于</span>C<span style="font-family: 宋体">中指针，分别指向一个对象的首地址。</span>f1=f2<span style="font-family: 宋体">则是将</span>f2<span style="font-family: 宋体">指向的地址赋给</span>f1<span style="font-family: 宋体">。传递了一个地址。</span> </p>
<p>6.<span style="font-family: 宋体">构造方法</span> </p>
<p><span style="font-family: 宋体">构造方法是在实例化对象时，由系统自动运行的函数，且只运行一次。每一个对象均有其构造方法，系统自动为类配有一个无参的构造方法，若程序员自己写有构造方法，则系统的构造方法失效。</span> </p>
<p>7.<span style="font-family: 宋体">方法的重载</span> </p>
<p>public class student{ </p>
<p>public void student(){}; </p>
<p>public void student(Book book){}; </p>
<p>public void student(Book book,Computer computer){}; </p>
<p>} </p>
<p><span style="font-family: 宋体">这里有三个方法的名字相同，可是他们却可以执行不用的功能，只要参数的个数，类型，次序不同就可以写出一个新的名字相同的方法。这就是一种重载，当然前面所提到的构造方法，也可以重载。</span> </p>
<p>8.this<span style="font-family: 宋体">关键字</span> </p>
<p>public class student{ </p>
<p>String name; </p>
<p>public void setName(String name){ </p>
<p>this.name=name; </p>
<p>} </p>
<p>} </p>
<p><span style="font-family: 宋体">这里的</span>this<span style="font-family: 宋体">关键字就指向类的头。不同的类的</span>this<span style="font-family: 宋体">关键字指向自身的头。</span> </p>
<p><span>&nbsp;&nbsp; </span><span style="font-family: 宋体">您正在看的文章来自疯狂软件教育中心</span> <a href="http://www.fkjava.org/">www.fkjava.org</a></p>
<p><span>&nbsp;&nbsp; </span><span style="font-family: 宋体">信息咨询：</span>Q<span>&nbsp;&nbsp; 564205990&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">星老师</span></p><img src ="http://www.blogjava.net/fkjava/aggbug/387992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fkjava/" target="_blank">疯狂软件</a> 2012-09-18 15:49 <a href="http://www.blogjava.net/fkjava/archive/2012/09/18/387992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 获取像素点的值及R,G,B分量的值</title><link>http://www.blogjava.net/fkjava/archive/2012/09/17/387923.html</link><dc:creator>疯狂软件</dc:creator><author>疯狂软件</author><pubDate>Mon, 17 Sep 2012 09:19:00 GMT</pubDate><guid>http://www.blogjava.net/fkjava/archive/2012/09/17/387923.html</guid><wfw:comment>http://www.blogjava.net/fkjava/comments/387923.html</wfw:comment><comments>http://www.blogjava.net/fkjava/archive/2012/09/17/387923.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fkjava/comments/commentRss/387923.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fkjava/services/trackbacks/387923.html</trackback:ping><description><![CDATA[<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">package sy; </p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">import java.awt.Color; </p>
<p style="text-indent: 21.75pt">import java.awt.Graphics; </p>
<p style="text-indent: 21.75pt">import java.awt.image.BufferedImage; </p>
<p style="text-indent: 21.75pt">import java.io.File; </p>
<p style="text-indent: 21.75pt">import java.io.IOException; </p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">import javax.imageio.ImageIO; </p>
<p style="text-indent: 21.75pt">import javax.swing.BorderFactory; </p>
<p style="text-indent: 21.75pt">import javax.swing.JPanel; </p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">public class PanelTest extends JPanel { </p>
<p style="text-indent: 21.75pt">public BufferedImage image; </p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; @Override </span></p>
<p style="text-indent: 21.75pt">protected void paintComponent(Graphics g) { </p>
<p style="text-indent: 21.75pt">// TODO Auto-generated method stub </p>
<p style="text-indent: 21.75pt">super.paintComponent(g); </p>
<p style="text-indent: 21.75pt">BufferedImage subImage=this.image.getSubimage(30, 30, 100, 100); </p>
<p style="text-indent: 21.75pt">g.drawImage(subImage,100,100,100,100,null); </p>
<p style="text-indent: 21.75pt">int color_point=subImage.getRGB(24, 4); </p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color color=new Color(color_point); </span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(color_point); </span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print(color.getGreen()); </span></p>
<p style="text-indent: 21.75pt">} </p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; public PanelTest() </span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; { </span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; try { </span></p>
<p style="text-indent: 21.75pt">this.image=ImageIO.read(new File("D:/black.jpg")); </p>
<p style="text-indent: 21.75pt">} catch (IOException e) { </p>
<p style="text-indent: 21.75pt">// TODO Auto-generated catch block </p>
<p style="text-indent: 21.75pt">e.printStackTrace(); </p>
<p style="text-indent: 21.75pt">} </p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; this.setSize(300, 200); </span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; this.setLocation(100, 100); </span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; this.setBorder(BorderFactory.createTitledBorder("title")); </span></p>
<p style="text-indent: 21.75pt">&nbsp;// repaint(); </p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; } </span></p>
<p style="text-indent: 21.75pt">} </p><img src ="http://www.blogjava.net/fkjava/aggbug/387923.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fkjava/" target="_blank">疯狂软件</a> 2012-09-17 17:19 <a href="http://www.blogjava.net/fkjava/archive/2012/09/17/387923.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Command模式(命令)</title><link>http://www.blogjava.net/fkjava/archive/2012/09/16/387828.html</link><dc:creator>疯狂软件</dc:creator><author>疯狂软件</author><pubDate>Sun, 16 Sep 2012 09:36:00 GMT</pubDate><guid>http://www.blogjava.net/fkjava/archive/2012/09/16/387828.html</guid><wfw:comment>http://www.blogjava.net/fkjava/comments/387828.html</wfw:comment><comments>http://www.blogjava.net/fkjava/archive/2012/09/16/387828.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fkjava/comments/commentRss/387828.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fkjava/services/trackbacks/387828.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; Java</span><span style="font-family: 宋体">深入到一定程度</span>,<span style="font-family: 宋体">就不可避免的碰到设计模式这一概念</span>,<span style="font-family: 宋体">了解设计模式</span>,<span style="font-family: 宋体">将使自己对</span>java<span style="font-family: 宋体">中的接口或抽象类应用有更深的理解</span>.<span style="font-family: 宋体">设计模式在</span>java<span style="font-family: 宋体">的中型系统中应用广泛</span>,<span style="font-family: 宋体">遵循一定的编程模式</span>,<span style="font-family: 宋体">才能使自己的代码便于理解</span>,<span style="font-family: 宋体">易于交流</span>,Command(<span style="font-family: 宋体">命令模式</span>)<span style="font-family: 宋体">模式是比较常用的一个模式</span>.</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; Command</span><span style="font-family: 宋体">命令模式</span>: Command<span style="font-family: 宋体">模式通过被称为</span>Command<span style="font-family: 宋体">的类封装了对目标对象的调用行为以及调用参数。将一个请求封装为一个对象，从而使你不同的请求对客户进行参数化；对请求排队或记录请求日志，以及支持可撤销的操作。</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; </span><span style="font-family: 宋体">优点</span>: <span style="font-family: 宋体">解耦了调用者和接受者之间联系。调用者调用一个操作，接受者接受请求执行相应的动作，因为使用</span>Command<span style="font-family: 宋体">模式解耦，调用者无需知道接受者任何接口。</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; </span><span style="font-family: 宋体">缺点</span>: <span style="font-family: 宋体">造成出现过多的具体命令类</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp; </span><span style="font-family: 宋体">在此写了</span>7<span style="font-family: 宋体">个</span>java<span style="font-family: 宋体">类来描述说明</span>Command<span style="font-family: 宋体">设计模式的实现方式；</span></p>
<p style="text-indent: 21.75pt">&nbsp;1<span style="font-family: 宋体">、</span> Control.java<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">命令控制者对象类</span>&nbsp;(<span style="font-family: 宋体">命令控制器在这里至关重要，相当于遥控器的作用</span>)</p>
<p style="text-indent: 21.75pt">&nbsp;2<span style="font-family: 宋体">、</span> Tv.java<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">命令接收者对象类</span></p>
<p style="text-indent: 21.75pt">&nbsp;3<span style="font-family: 宋体">、</span> Command.java<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">命令接口类</span></p>
<p style="text-indent: 21.75pt">&nbsp;4<span style="font-family: 宋体">、</span> CommandChannel.java <span style="font-family: 宋体">频道切换命令类</span></p>
<p style="text-indent: 21.75pt">&nbsp;5<span style="font-family: 宋体">、</span> CommandOff.java<span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">关机命令类</span></p>
<p style="text-indent: 21.75pt">&nbsp;6<span style="font-family: 宋体">、</span> CommandOn.java<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">开机命令类</span></p>
<p style="text-indent: 21.75pt">&nbsp;7<span style="font-family: 宋体">、</span> CommandTest.java<span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">带有</span>main<span style="font-family: 宋体">方法的测试类</span>(<span style="font-family: 宋体">命令发送者</span>)</p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 1</span><span style="font-family: 宋体">、</span> Control.java</p>
<p style="text-indent: 21.75pt">package command;</p>
<p style="text-indent: 21.75pt">//<span style="font-family: 宋体">命令控制者</span></p>
<p style="text-indent: 21.75pt">public class Control {</p>
<p style="text-indent: 21.75pt">&nbsp;private Command onCommand, offCommand, changeChannel;</p>
<p style="text-indent: 21.75pt">&nbsp;public Control(Command on, Command off, Command channel) {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; onCommand = on;</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; offCommand = off;</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; changeChannel = channel;</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">&nbsp;public void turnOn() {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; onCommand.execute();</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">&nbsp;public void turnOff() {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; offCommand.execute();</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">&nbsp;public void changeChannel() {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; changeChannel.execute();</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">}</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 1 end</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 2</span><span style="font-family: 宋体">、</span> Tv.java</p>
<p style="text-indent: 21.75pt">package command;</p>
<p style="text-indent: 21.75pt">//<span style="font-family: 宋体">命令接收者</span></p>
<p style="text-indent: 21.75pt">public class Tv {</p>
<p style="text-indent: 21.75pt">&nbsp;public int currentChannel = 0;</p>
<p style="text-indent: 21.75pt">&nbsp;public void turnOn() {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; System.out.println("The televisino is on.");</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">&nbsp;public void turnOff() {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; System.out.println("The television is off.");</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">&nbsp;public void changeChannel(int channel) {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; this.currentChannel = channel;</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; System.out.println("Now TV channel is " + channel);</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">}</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 2 end</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 3</span><span style="font-family: 宋体">、</span> Command.java</p>
<p style="text-indent: 21.75pt">package command;</p>
<p style="text-indent: 21.75pt">//<span style="font-family: 宋体">命令接口</span></p>
<p style="text-indent: 21.75pt">public interface Command {</p>
<p style="text-indent: 21.75pt">&nbsp;void execute();</p>
<p style="text-indent: 21.75pt">}</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 3 end</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 4</span><span style="font-family: 宋体">、</span> CommandChannel.java</p>
<p style="text-indent: 21.75pt">package command;</p>
<p style="text-indent: 21.75pt">//<span style="font-family: 宋体">频道切换命令</span></p>
<p style="text-indent: 21.75pt">public class CommandChannel implements Command {</p>
<p style="text-indent: 21.75pt">&nbsp;private Tv myTv;</p>
<p style="text-indent: 21.75pt">&nbsp;private int channel;</p>
<p style="text-indent: 21.75pt">&nbsp;public CommandChannel(Tv tv, int channel) {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; myTv = tv;</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; this.channel = channel;</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">&nbsp;public void execute() {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; myTv.changeChannel(channel);</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">}</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 4 end</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 5</span><span style="font-family: 宋体">、</span> CommandOff.java</p>
<p style="text-indent: 21.75pt">package command;</p>
<p style="text-indent: 21.75pt">//<span style="font-family: 宋体">关机命令</span></p>
<p style="text-indent: 21.75pt">public class CommandOff implements Command {</p>
<p style="text-indent: 21.75pt">&nbsp;private Tv myTv;</p>
<p style="text-indent: 21.75pt">&nbsp;public CommandOff(Tv tv) {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; myTv = tv;</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">&nbsp;public void execute() {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; myTv.turnOff();</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">}</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 5 end</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 6</span><span style="font-family: 宋体">、</span> CommandOn.java</p>
<p style="text-indent: 21.75pt">package command;</p>
<p style="text-indent: 21.75pt">//<span style="font-family: 宋体">开机命令</span></p>
<p style="text-indent: 21.75pt">public class CommandOn implements Command {</p>
<p style="text-indent: 21.75pt">&nbsp;private Tv myTv;</p>
<p style="text-indent: 21.75pt">&nbsp;public CommandOn(Tv tv) {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; myTv = tv;</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">&nbsp;public void execute() {</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; myTv.turnOn();</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">}</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 6 end</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 7</span><span style="font-family: 宋体">、</span> CommandTest.java</p>
<p style="text-indent: 21.75pt">package command;</p>
<p style="text-indent: 21.75pt">//<span style="font-family: 宋体">命令发送者</span></p>
<p style="text-indent: 21.75pt">public class CommandTest{</p>
<p style="text-indent: 21.75pt">&nbsp;public static void main(String[] args){</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">命令接收者</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; Tv&nbsp;myTv = new Tv();</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">开机命令</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; CommandOn on = new CommandOn(myTv);</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">关机命令</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; CommandOff off = new CommandOff(myTv);</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">频道切换命令</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; CommandChannel channel = new CommandChannel(myTv, 2);</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">命令控制对象</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; Control control = new Control( on, off, channel);</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">开机</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; control.turnOn();</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">切换频道</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; control.changeChannel();</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; //</span><span style="font-family: 宋体">关机</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; control.turnOff();</span></p>
<p style="text-indent: 21.75pt">&nbsp;}</p>
<p style="text-indent: 21.75pt">}</p>
<p style="text-indent: 21.75pt">===============<span>&nbsp;&nbsp; 7 end</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">&nbsp;Command<span style="font-family: 宋体">模式通常可应用到以下场景：</span></p>
<p style="text-indent: 21.75pt">&nbsp;1 Multi-level undo<span style="font-family: 宋体">（多级</span>undo<span style="font-family: 宋体">操作）</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">如果系统需要实现多级回退操作，这时如果所有用户的操作都以</span>command<span style="font-family: 宋体">对象的形式实现，系统可以简</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">单地用</span>stack<span style="font-family: 宋体">来保存最近执行的命令，如果用户需要执行</span>undo<span style="font-family: 宋体">操作，系统只需简单地</span>popup<span style="font-family: 宋体">一个最近的</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; command</span><span style="font-family: 宋体">对象然后执行它的</span>undo()<span style="font-family: 宋体">方法既可。</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">&nbsp;2 Transactional behavior<span style="font-family: 宋体">（原子事务行为）</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">借助</span>command<span style="font-family: 宋体">模式，可以简单地实现一个具有原子事务的行为。当一个事务失败时，往往需要回退到执</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">行前的状态，可以借助</span>command<span style="font-family: 宋体">对象保存这种状态，简单地处理回退操作。</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">&nbsp;3 Progress bars<span style="font-family: 宋体">（状态条）</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">假如系统需要按顺序执行一系列的命令操作，如果每个</span>command<span style="font-family: 宋体">对象都提供一个</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; getEstimatedDuration()</span><span style="font-family: 宋体">方法，那么系统可以简单地评估执行状态并显示出合适的状态条。</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">&nbsp;4 Wizards<span style="font-family: 宋体">（导航）</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">通常一个使用多个</span>wizard<span style="font-family: 宋体">页面来共同完成一个简单动作。一个自然的方法是使用一个</span>command<span style="font-family: 宋体">对象来封</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">装</span>wizard<span style="font-family: 宋体">过程，该</span>command<span style="font-family: 宋体">对象在第一个</span>wizard<span style="font-family: 宋体">页面显示时被创建，每个</span>wizard<span style="font-family: 宋体">页面接收用户输入并设</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">置到该</span>command<span style="font-family: 宋体">对象中，当最后一个</span>wizard<span style="font-family: 宋体">页面用户按下&#8220;</span>Finish<span style="font-family: 宋体">&#8221;按钮时，可以简单地触发一个事件</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">调用</span>execute()<span style="font-family: 宋体">方法执行整个动作。通过这种方法，</span>command<span style="font-family: 宋体">类不包含任何跟用户界面有关的代码，可以</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">分离用户界面与具体的处理逻辑。</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">&nbsp;5 GUI buttons and menu items<span style="font-family: 宋体">（</span>GUI<span style="font-family: 宋体">按钮与菜单条等等）</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; Swing</span><span style="font-family: 宋体">系统里，用户可以通过工具条按钮，菜单按钮执行命令，可以用</span>command<span style="font-family: 宋体">对象来封装命令的执行。</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">&nbsp;6 Thread pools<span style="font-family: 宋体">（线程池）</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">通常一个典型的线程池实现类可能有一个名为</span>addTask()<span style="font-family: 宋体">的</span>public<span style="font-family: 宋体">方法，用来添加一项工作任务到任务</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">队列中。该任务队列中的所有任务可以用</span>command<span style="font-family: 宋体">对象来封装，通常这些</span>command<span style="font-family: 宋体">对象会实现一个通用的</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">接口比如</span>java.lang.Runnable<span style="font-family: 宋体">。</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">&nbsp;7 Macro recording<span style="font-family: 宋体">（宏纪录）</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">可以用</span>command<span style="font-family: 宋体">对象来封装用户的一个操作，这样系统可以简单通过队列保存一系列的</span>command<span style="font-family: 宋体">对象的状</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">态就可以记录用户的连续操作。这样通过执行队列中的</span>command<span style="font-family: 宋体">对象，就可以完成</span>"Play back"<span style="font-family: 宋体">操作了。</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">&nbsp;8 Networking</p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">通过网络发送</span>command<span style="font-family: 宋体">命令到其他机器上运行。</span></p>
<p style="text-indent: 21.75pt">&nbsp;</p>
<p style="text-indent: 21.75pt">&nbsp;9 Parallel Processing<span style="font-family: 宋体">（并发处理）</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">当一个调用共享某个资源并被多个线程并发处理时。</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">您正在看的文章来自疯狂软件教育中心</span> <a href="http://www.fkjava.org/">www.fkjava.org</a></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">信息咨询：</span>Q564205990<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">星老师</span></p><img src ="http://www.blogjava.net/fkjava/aggbug/387828.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fkjava/" target="_blank">疯狂软件</a> 2012-09-16 17:36 <a href="http://www.blogjava.net/fkjava/archive/2012/09/16/387828.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java读取配置文件的几种方法</title><link>http://www.blogjava.net/fkjava/archive/2012/09/15/387771.html</link><dc:creator>疯狂软件</dc:creator><author>疯狂软件</author><pubDate>Sat, 15 Sep 2012 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/fkjava/archive/2012/09/15/387771.html</guid><wfw:comment>http://www.blogjava.net/fkjava/comments/387771.html</wfw:comment><comments>http://www.blogjava.net/fkjava/archive/2012/09/15/387771.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fkjava/comments/commentRss/387771.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fkjava/services/trackbacks/387771.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p><span style="font-family: 宋体">　在现实工作中，我们常常需要保存一些系统配置信息，大家一般都会选择配置文件来完成，本文根据笔者工作中用到的读取配置文件的方法小小总结一下，主要叙述的是</span>spring<span style="font-family: 宋体">读取配置文件的方法。</span></p>
<p><span style="font-family: 宋体">　　一、读取</span>xml<span style="font-family: 宋体">配置文件</span></p>
<p><span style="font-family: 宋体">　　</span>(<span style="font-family: 宋体">一</span>)<span style="font-family: 宋体">新建一个</span>java bean</p>
<p><span style="font-family: 宋体">　　</span>package chb.demo.vo;</p>
<p><span style="font-family: 宋体">　　</span>public class HelloBean {</p>
<p><span style="font-family: 宋体">　　</span>private String helloWorld;</p>
<p><span style="font-family: 宋体">　　</span>public String getHelloWorld() {</p>
<p><span style="font-family: 宋体">　　</span>return helloWorld;</p>
<p><span style="font-family: 宋体">　　</span>}</p>
<p><span style="font-family: 宋体">　　</span>public void setHelloWorld(String helloWorld) {</p>
<p><span style="font-family: 宋体">　　</span>this.helloWorld = helloWorld;</p>
<p><span style="font-family: 宋体">　　</span>}</p>
<p><span style="font-family: 宋体">　　</span>}</p>
<p><span style="font-family: 宋体">　　</span>(<span style="font-family: 宋体">二</span>)<span style="font-family: 宋体">构造一个配置文件</span></p>
<p><span style="font-family: 宋体">　　</span></p>
<p><span style="font-family: 宋体">　　</span></p>
<p><span style="font-family: 宋体">　　</span></p>
<p><span style="font-family: 宋体">　　</span></p>
<p><span style="font-family: 宋体">　　</span></p>
<p><span style="font-family: 宋体">　　</span>Hello!chb!</p>
<p><span style="font-family: 宋体">　　</span></p>
<p><span style="font-family: 宋体">　　</span></p>
<p><span style="font-family: 宋体">　　</span></p>
<p><span style="font-family: 宋体">　　</span>(<span style="font-family: 宋体">三</span>)<span style="font-family: 宋体">读取</span>xml<span style="font-family: 宋体">文件</span></p>
<p><span style="font-family: 宋体">　　</span>1.<span style="font-family: 宋体">利用</span>ClassPathXmlApplicationContext</p>
<p><span style="font-family: 宋体">　　</span>ApplicationContext context = new ClassPathXmlApplicationContext("beanConfig.xml");</p>
<p><span style="font-family: 宋体">　　</span>HelloBean helloBean = (HelloBean)context.getBean("helloBean");</p>
<p><span style="font-family: 宋体">　　</span>System.out.println(helloBean.getHelloWorld());</p>
<p><span style="font-family: 宋体">　　</span>2.<span style="font-family: 宋体">利用</span>FileSystemResource<span style="font-family: 宋体">读取</span></p>
<p><span style="font-family: 宋体">　　</span>Resource rs = new FileSystemResource("D:/software/tomcat/webapps/springWebDemo/WEB-INF/classes/beanConfig.xml");</p>
<p><span style="font-family: 宋体">　　</span>BeanFactory factory = new XmlBeanFactory(rs);</p>
<p><span style="font-family: 宋体">　　</span>HelloBean helloBean = (HelloBean)factory.getBean("helloBean");</p>
<p><span style="font-family: 宋体">　　</span>System.out.println(helloBean.getHelloWorld());</p>
<p><span style="font-family: 宋体">　　值得注意的是：利用</span>FileSystemResource<span style="font-family: 宋体">，则配置文件必须放在</span>project<span style="font-family: 宋体">直接目录下，或者写明绝对路径，否则就会抛出找不到文件的异常</span></p>
<p><span style="font-family: 宋体">　　二、读取</span>properties<span style="font-family: 宋体">配置文件</span></p>
<p><span style="font-family: 宋体">　　这里介绍两种技术：利用</span>spring<span style="font-family: 宋体">读取</span>properties <span style="font-family: 宋体">文件和利用</span>java.util.Properties<span style="font-family: 宋体">读取</span></p>
<p><span style="font-family: 宋体">　　</span>(<span style="font-family: 宋体">一</span>)<span style="font-family: 宋体">利用</span>spring<span style="font-family: 宋体">读取</span>properties <span style="font-family: 宋体">文件</span></p>
<p><span style="font-family: 宋体">　　我们还利用上面的</span>HelloBean.java<span style="font-family: 宋体">文件，构造如下</span>beanConfig.properties<span style="font-family: 宋体">文件：</span></p>
<p><span style="font-family: 宋体">　　</span>helloBean.class=chb.demo.vo.HelloBean</p>
<p><span style="font-family: 宋体">　　</span>helloBean.helloWorld=Hello!chb!</p>
<p><span style="font-family: 宋体">　　属性文件中的</span>"helloBean"<span style="font-family: 宋体">名称即是</span>Bean<span style="font-family: 宋体">的别名设定，</span>.class<span style="font-family: 宋体">用于指定类来源。</span></p>
<p><span style="font-family: 宋体">　　然后利用</span>org.springframework.beans.factory.support.PropertiesBeanDefinitionReader<span style="font-family: 宋体">来读取属性文件</span></p>
<p><span style="font-family: 宋体">　　</span>BeanDefinitionRegistry reg = new DefaultListableBeanFactory();</p>
<p><span style="font-family: 宋体">　　</span>PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(reg);</p>
<p><span style="font-family: 宋体">　　</span>reader.loadBeanDefinitions(new ClassPathResource("beanConfig.properties"));</p>
<p><span style="font-family: 宋体">　　</span>BeanFactory factory = (BeanFactory)reg;</p>
<p><span style="font-family: 宋体">　　</span>HelloBean helloBean = (HelloBean)factory.getBean("helloBean");</p>
<p><span style="font-family: 宋体">　　</span>System.out.println(helloBean.getHelloWorld());</p>
<p><span style="font-family: 宋体">　　</span>(<span style="font-family: 宋体">二</span>)<span style="font-family: 宋体">利用</span>java.util.Properties<span style="font-family: 宋体">读取属性文件</span></p>
<p><span style="font-family: 宋体">　　比如，我们构造一个</span>ipConfig.properties<span style="font-family: 宋体">来保存服务器</span>ip<span style="font-family: 宋体">地址和端口，如：</span></p>
<p><span style="font-family: 宋体">　　</span>ip=192.168.0.1</p>
<p><span style="font-family: 宋体">　　</span>port=8080</p>
<p><span style="font-family: 宋体">　　则，我们可以用如下程序来获得服务器配置信息：</span></p>
<p><span style="font-family: 宋体">　　</span>InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ipConfig.properties");</p>
<p><span style="font-family: 宋体">　　</span>Properties p = new Properties();</p>
<p><span style="font-family: 宋体">　　</span>try {</p>
<p><span style="font-family: 宋体">　　</span>p.load(inputStream);</p>
<p><span style="font-family: 宋体">　　</span>} catch (IOException e1) {</p>
<p><span style="font-family: 宋体">　　</span>e1.printStackTrace();</p>
<p><span style="font-family: 宋体">　　</span>}</p>
<p style="text-indent: 21pt">System.out.println("ip:"+p.getProperty("ip")+",port:"+p.getProperty("port"));</p>
<p style="text-indent: 21pt"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">您正在看的文章来自疯狂软件教育中心</span> <a href="http://www.fkjava.org/">www.fkjava.org</a></p>
<p style="text-indent: 21pt"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">信息咨询：</span>Q564205990<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">星老师</span></p><img src ="http://www.blogjava.net/fkjava/aggbug/387771.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fkjava/" target="_blank">疯狂软件</a> 2012-09-15 16:30 <a href="http://www.blogjava.net/fkjava/archive/2012/09/15/387771.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中两个容易犯错的地方</title><link>http://www.blogjava.net/fkjava/archive/2012/09/14/387720.html</link><dc:creator>疯狂软件</dc:creator><author>疯狂软件</author><pubDate>Fri, 14 Sep 2012 06:15:00 GMT</pubDate><guid>http://www.blogjava.net/fkjava/archive/2012/09/14/387720.html</guid><wfw:comment>http://www.blogjava.net/fkjava/comments/387720.html</wfw:comment><comments>http://www.blogjava.net/fkjava/archive/2012/09/14/387720.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fkjava/comments/commentRss/387720.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fkjava/services/trackbacks/387720.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>1,byte[]<span style="font-family: 宋体">的长度</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">写了一个从文件里读字符串的函数：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; public static String readFile</span><span style="font-family: 宋体">（</span>String fFileName<span style="font-family: 宋体">）</span>{//, String fEncoding<span style="font-family: 宋体">）</span> {</p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; char[] buffer = new char[1024];</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; StringBuilder text = new StringBuilder</span><span style="font-family: 宋体">（）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; InputStreamReader reader = null;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; try {</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; reader = new InputStreamReader</span><span style="font-family: 宋体">（</span>new FileInputStream<span style="font-family: 宋体">（</span>fFileName<span style="font-family: 宋体">））；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; while </span><span style="font-family: 宋体">（</span>reader.read<span style="font-family: 宋体">（</span>buffer, 0, 1024<span style="font-family: 宋体">）！</span>=-1<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; text.append</span><span style="font-family: 宋体">（</span>buffer<span style="font-family: 宋体">）；</span>&nbsp;&lt;==<span style="font-family: 宋体">有错</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; }</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; }</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; catch</span><span style="font-family: 宋体">（</span>Exception e<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; e.printStackTrace</span><span style="font-family: 宋体">（）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; }</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; finally{</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; if</span><span style="font-family: 宋体">（</span>reader!=null<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; try {</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; reader.close</span><span style="font-family: 宋体">（）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; } catch </span><span style="font-family: 宋体">（</span>IOException e<span style="font-family: 宋体">）</span> {</p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; // TODO Auto-generated catch block</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; e.printStackTrace</span><span style="font-family: 宋体">（）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; }</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; }</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; }</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; return text.toString</span><span style="font-family: 宋体">（）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; }</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">粗看这段代码没有问题。但是读出的字符总比实际要多。问题在</span>text.append<span style="font-family: 宋体">（</span>buffer<span style="font-family: 宋体">）。</span> buffer<span style="font-family: 宋体">是一个</span>1024<span style="font-family: 宋体">的</span>char<span style="font-family: 宋体">数组。每次</span>append<span style="font-family: 宋体">固定的</span>1024<span style="font-family: 宋体">个</span>char.<span style="font-family: 宋体">改成就好了。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; reader = new InputStreamReader</span><span style="font-family: 宋体">（</span>new FileInputStream<span style="font-family: 宋体">（</span>fFileName<span style="font-family: 宋体">））；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; int readed;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; while </span><span style="font-family: 宋体">（（</span>readed = reader.read<span style="font-family: 宋体">（</span>buffer, 0, 1024<span style="font-family: 宋体">））！</span>=-1<span style="font-family: 宋体">）</span>{</p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; text.append</span><span style="font-family: 宋体">（</span>new String<span style="font-family: 宋体">（</span>buffer, 0, readed<span style="font-family: 宋体">））；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; }</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; 2,</span><span style="font-family: 宋体">优先级的错误</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; Log.d</span><span style="font-family: 宋体">（</span>TAG, "location="+where+", "+locationService==null?"null":locationService.getLocation<span style="font-family: 宋体">（））；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">这行代码的本意是如果</span>locationService==null,<span style="font-family: 宋体">就输出</span>"null",<span style="font-family: 宋体">避免</span>NullPointerException.<span style="font-family: 宋体">但实际上仍然发生</span>NullPointerException.<span style="font-family: 宋体">原来</span>"+"<span style="font-family: 宋体">的优先级大于</span>"?",<span style="font-family: 宋体">所以上面代码实际上是：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; Log.d</span><span style="font-family: 宋体">（</span>TAG, <span style="font-family: 宋体">（</span>"location="+where+", "+locationService<span style="font-family: 宋体">）</span>==null?"null":locationService.getLocation<span style="font-family: 宋体">（））</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">括号里的当然不会是</span>null.<span style="font-family: 宋体">改成</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; Log.d</span><span style="font-family: 宋体">（</span>TAG, "location="+where+", "+<span style="font-family: 宋体">（</span>locationService==null?"null":locationService.getLocation<span style="font-family: 宋体">（）））；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-indent: 21.75pt"><span style="font-family: 宋体">就好了。</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">您正在看的文章来自疯狂软件教育中心</span> <a href="http://www.fkjava.org/">www.fkjava.org</a></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">信息咨询：</span>Q564205990<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">星老师</span></p><img src ="http://www.blogjava.net/fkjava/aggbug/387720.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fkjava/" target="_blank">疯狂软件</a> 2012-09-14 14:15 <a href="http://www.blogjava.net/fkjava/archive/2012/09/14/387720.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在JSP中发送一个动态图像</title><link>http://www.blogjava.net/fkjava/archive/2012/09/13/387632.html</link><dc:creator>疯狂软件</dc:creator><author>疯狂软件</author><pubDate>Thu, 13 Sep 2012 05:52:00 GMT</pubDate><guid>http://www.blogjava.net/fkjava/archive/2012/09/13/387632.html</guid><wfw:comment>http://www.blogjava.net/fkjava/comments/387632.html</wfw:comment><comments>http://www.blogjava.net/fkjava/archive/2012/09/13/387632.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fkjava/comments/commentRss/387632.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fkjava/services/trackbacks/387632.html</trackback:ping><description><![CDATA[<p>&nbsp;<span style="font-family: 宋体">当一个</span>web<span style="font-family: 宋体">页面带有</span>image/jpeg <span style="font-family: 宋体">（或者其他的图像格式）的</span>MIME<span style="font-family: 宋体">类型被发送时，你的浏览器将那个返回结果当作一个图像，然后浏览器显示图像，作为页面的一部分或者完全作为图像自身。要为你的</span>jsp<span style="font-family: 宋体">页面设置</span>MIME<span style="font-family: 宋体">类型，你需要设置页面的</span>contentType<span style="font-family: 宋体">属性：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; &lt;%@ page contentType=&#8220;image/jpeg&#8221; &#8230; %&gt;</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">然后你需要创建一个</span>BufferedImage<span style="font-family: 宋体">绘制你的动态图像：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; BufferedImage image = new BufferedImage</span><span style="font-family: 宋体">（</span>width,height, BufferedImage.TYPE_INT_RGB<span style="font-family: 宋体">）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">创建完一个</span>BufferedImage<span style="font-family: 宋体">后，你需要得到图形环境进行绘制，一个</span>Graphics<span style="font-family: 宋体">或者</span>Graphics2D<span style="font-family: 宋体">对象：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; Graphics g = image.getGraphics</span><span style="font-family: 宋体">（）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; // or Graphics2d g2d = image.createGraphics</span><span style="font-family: 宋体">（）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">从现在起你就可以绘制图像内容了。对图形环境绘制就会画到</span>BufferedImage.<span style="font-family: 宋体">最开始这个图像都是黑色的，因此用你希望的背景颜色填充图像是一个不错的主意，然后，当你完成图像的绘制，你需要</span>dispose<span style="font-family: 宋体">图形环境：</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; g.dispose</span><span style="font-family: 宋体">（）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; // or g2d.dispose</span><span style="font-family: 宋体">（）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">一旦完成图像的绘制，你在</span>response<span style="font-family: 宋体">中返回那个图像。你可以使用非标准的</span>com.sun.image.codec.jpeg<span style="font-family: 宋体">包中的</span>JPEGImageEncoder<span style="font-family: 宋体">类编码图像，或者如果你使用</span>JDK1.4,<span style="font-family: 宋体">你可以使用标准的</span>ImageIO<span style="font-family: 宋体">类。在使用</span>JPEGImageEncoder<span style="font-family: 宋体">时有一个技巧，你必须从</span>ServletResponse<span style="font-family: 宋体">取来</span>ServletOutputStream<span style="font-family: 宋体">而不能使用隐含的</span>JSP<span style="font-family: 宋体">输出变量</span>out.</p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; ServletOutputStream sos = response.getOutputStream</span><span style="font-family: 宋体">（）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder</span><span style="font-family: 宋体">（</span>sos<span style="font-family: 宋体">）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; encoder.encode</span><span style="font-family: 宋体">（</span>image<span style="font-family: 宋体">）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; // or ImageIO.write</span><span style="font-family: 宋体">（</span>image, <span style="font-family: 宋体">&#8220;</span>JPEG<span style="font-family: 宋体">&#8221;</span>, out<span style="font-family: 宋体">）；</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">这里有一个从所有的可能方案中（例如</span>g.dispose<span style="font-family: 宋体">（）；或者</span>g2d.dispose<span style="font-family: 宋体">（）；）选取的一个完整的范例。这个例子使用</span>Graphics<span style="font-family: 宋体">对象绘制一个随机的多边形，图像通过</span>JPEGImageEncoder<span style="font-family: 宋体">绘制，你可以自由设置多边形的顶点数得到更复杂的形状，换言之，有更多顶点和边。</span></p>
<p><span>&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-indent: 21.75pt"><span style="font-family: 宋体">要运行这个范例，将从&#8220;</span>&lt;%@<span style="font-family: 宋体">&#8221;到最后一个&#8220;</span>%&gt;<span style="font-family: 宋体">&#8221;之间的</span>jsp<span style="font-family: 宋体">代码放到一个名为</span>image.jsp<span style="font-family: 宋体">的文件中，将那个文件放到你的</span>web<span style="font-family: 宋体">服务器可以找到的地方。</span></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">您正在看的文章来自疯狂软件教育中心</span> <a href="http://www.fkjava.org/">www.fkjava.org</a></p>
<p style="text-indent: 21.75pt"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">信息咨询：</span>Q564205990<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">星老师</span></p><img src ="http://www.blogjava.net/fkjava/aggbug/387632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fkjava/" target="_blank">疯狂软件</a> 2012-09-13 13:52 <a href="http://www.blogjava.net/fkjava/archive/2012/09/13/387632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>