﻿<?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-liuqiang5151-文章分类-java</title><link>http://www.blogjava.net/liuqiang5151/category/25667.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 11 Apr 2008 11:56:23 GMT</lastBuildDate><pubDate>Fri, 11 Apr 2008 11:56:23 GMT</pubDate><ttl>60</ttl><item><title>转：关于java的hashCode方法</title><link>http://www.blogjava.net/liuqiang5151/articles/192249.html</link><dc:creator>刘强</dc:creator><author>刘强</author><pubDate>Fri, 11 Apr 2008 10:05:00 GMT</pubDate><guid>http://www.blogjava.net/liuqiang5151/articles/192249.html</guid><wfw:comment>http://www.blogjava.net/liuqiang5151/comments/192249.html</wfw:comment><comments>http://www.blogjava.net/liuqiang5151/articles/192249.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuqiang5151/comments/commentRss/192249.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuqiang5151/services/trackbacks/192249.html</trackback:ping><description><![CDATA[<li class="content" style="font-size: 10pt"><clk>有许多人学了很长时间的Java，但一直不明白hashCode<nobr oncontextmenu="return false;" onmousemove="kwM(2);" id="clickeyekey2" onmouseover="kwE(event,2, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,2)" onmouseout="kwL(event, this);" target="_1">方法</nobr>的作用，我来解释一下吧。</clk><br />
首先，想要明白hashCode的作用，你必须要先知道Java中的集合。<br />
<clk>　　总的来说，<nobr oncontextmenu="return false;" onmousemove="kwM(6);" id="clickeyekey6" onmouseover="kwE(event,6, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,6)" onmouseout="kwL(event, this);" target="_1">Java</nobr>中的集合（Collection）有两类，一类是List，再有一类是Set。你知道它们的区别吗？前者集合内的元素是有序的，元素可以重复；后者元素无序，但元素不可重复。那么这里就有一个比较严重的<nobr oncontextmenu="return false;" onmousemove="kwM(3);" id="clickeyekey3" onmouseover="kwE(event,3, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,3)" onmouseout="kwL(event, this);" target="_1">问题</nobr>了：要想保证元素不重复，可两个元素是否重复应该依据什么来判断呢？这就是Object.equals方法了。但是，如果每增加一个元素就检查一次，那么当元素很多时，后添加到集合中的元素比较的次数就非常多了。也就是说，如果集合中现在已经有1000个元素，那么第1001个元素加入集合时，它就要调用1000次equals方法。这显然会大大降低效率。</clk><br />
<clk>&nbsp;&nbsp;&nbsp; 于是，Java采用了哈希表的原理。哈希（Hash）实际上是个人名，由于他提出一哈希算法的<nobr oncontextmenu="return false;" onmousemove="kwM(0);" id="clickeyekey0" onmouseover="kwE(event,0, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,0)" onmouseout="kwL(event, this);" target="_1">概念</nobr>，所以就以他的名字命名了。哈希算法也称为散列算法，是将数据依特定算法直接指定到一个地址上。如果详细讲解哈希算法，那需要更多的<nobr oncontextmenu="return false;" onmousemove="kwM(4);" id="clickeyekey4" onmouseover="kwE(event,4, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,4)" onmouseout="kwL(event, this);" target="_1">文章</nobr>篇幅，我在这里就不介绍了。初学者可以这样理解，hashCode方法实际上返回的就是对象存储的物理地址（实际可能并不是）。</clk><br />
<clk>&nbsp;&nbsp;&nbsp; 这样一来，当集合要添加新的元素时，先调用这个元素的hashCode方法，就一下子能定位到它应该放置的物理位置上。如果这个位置上没有元素，它就可以直接<nobr oncontextmenu="return false;" onmousemove="kwM(7);" id="clickeyekey7" onmouseover="kwE(event,7, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,7)" onmouseout="kwL(event, this);" target="_1">存储</nobr>在这个位置上，不用再进行任何比较了；如果这个位置上已经有元素了，就调用它的equals方法与新元素进行比较，相同的话就不存了，不相同就散列其它的地址。所以这里存在一个冲突<nobr oncontextmenu="return false;" onmousemove="kwM(10);" id="clickeyekey10" onmouseover="kwE(event,10, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,10)" onmouseout="kwL(event, this);" target="_1">解决</nobr>的问题。这样一来实际调用equals方法的次数就大大降低了，几乎只需要一两次。</clk><br />
&nbsp;&nbsp;&nbsp; 所以，Java对于eqauls方法和hashCode方法是这样规定的：<br />
1、如果两个对象相同，那么它们的hashCode值一定要相同；<br />
2、如果两个对象的hashCode相同，它们并不一定相同<br />
&nbsp;&nbsp;&nbsp; 上面说的对象相同指的是用eqauls方法比较。<br />
<clk>&nbsp;&nbsp;&nbsp; 你当然可以不按要求去做了，但你会发现，相同的对象可以出现在Set集合中。同时，增加新元素的<nobr oncontextmenu="return false;" onmousemove="kwM(5);" id="clickeyekey5" onmouseover="kwE(event,5, this);" style="color: #6600ff; border-bottom: #6600ff 1px dotted; background-color: transparent; text-decoration: underline" onclick="return kwC(event,5)" onmouseout="kwL(event, this);" target="_1">效率</nobr>会大大下降。 </clk></li>
<img src ="http://www.blogjava.net/liuqiang5151/aggbug/192249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuqiang5151/" target="_blank">刘强</a> 2008-04-11 18:05 <a href="http://www.blogjava.net/liuqiang5151/articles/192249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sax和Dom解析xml的区别</title><link>http://www.blogjava.net/liuqiang5151/articles/192248.html</link><dc:creator>刘强</dc:creator><author>刘强</author><pubDate>Fri, 11 Apr 2008 10:02:00 GMT</pubDate><guid>http://www.blogjava.net/liuqiang5151/articles/192248.html</guid><wfw:comment>http://www.blogjava.net/liuqiang5151/comments/192248.html</wfw:comment><comments>http://www.blogjava.net/liuqiang5151/articles/192248.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuqiang5151/comments/commentRss/192248.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuqiang5151/services/trackbacks/192248.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在公司用到xml的地方很多，今天就总结一下两种最常见解析xml的方法。DOM 简介： DOM 对于 XML 的处理方式就是把整个 XML 读到内存中形成一棵树状结构，然后用各种方法对这棵数进行遍历、插入、删除、修剪等操作。因为 DOM 是 W3C 的正式标准，所有的语言都有支持 DOM 的解析器，包括 Java、C/C++、Perl、JavaScript 等等。DOM 的优点是信息量丰富（...&nbsp;&nbsp;<a href='http://www.blogjava.net/liuqiang5151/articles/192248.html'>阅读全文</a><img src ="http://www.blogjava.net/liuqiang5151/aggbug/192248.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuqiang5151/" target="_blank">刘强</a> 2008-04-11 18:02 <a href="http://www.blogjava.net/liuqiang5151/articles/192248.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转：利用Dom4J生成xml</title><link>http://www.blogjava.net/liuqiang5151/articles/167763.html</link><dc:creator>刘强</dc:creator><author>刘强</author><pubDate>Fri, 14 Dec 2007 06:15:00 GMT</pubDate><guid>http://www.blogjava.net/liuqiang5151/articles/167763.html</guid><wfw:comment>http://www.blogjava.net/liuqiang5151/comments/167763.html</wfw:comment><comments>http://www.blogjava.net/liuqiang5151/articles/167763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuqiang5151/comments/commentRss/167763.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuqiang5151/services/trackbacks/167763.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.dom4j.Document;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.dom4j.DocumentHelper;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.dom4j.Element;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.dom4j.io.XMLWriter;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_168_3058_Open_Image" onclick="this.style.display='none'; Codehighlighter1_168_3058_Open_Text.style.display='none'; Codehighlighter1_168_3058_Closed_Image.style.display='inline'; Codehighlighter1_168_3058_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_168_3058_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_168_3058_Closed_Text.style.display='none'; Codehighlighter1_168_3058_Open_Image.style.display='inline'; Codehighlighter1_168_3058_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;createXML_chinese&nbsp;</span><span id="Codehighlighter1_168_3058_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_168_3058_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_201_320_Open_Image" onclick="this.style.display='none'; Codehighlighter1_201_320_Open_Text.style.display='none'; Codehighlighter1_201_320_Closed_Image.style.display='inline'; Codehighlighter1_201_320_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_201_320_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_201_320_Closed_Text.style.display='none'; Codehighlighter1_201_320_Open_Image.style.display='inline'; Codehighlighter1_201_320_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;createXML_chinese()&nbsp;</span><span id="Codehighlighter1_201_320_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_201_320_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_215_247_Open_Image" onclick="this.style.display='none'; Codehighlighter1_215_247_Open_Text.style.display='none'; Codehighlighter1_215_247_Closed_Image.style.display='inline'; Codehighlighter1_215_247_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_215_247_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_215_247_Closed_Text.style.display='none'; Codehighlighter1_215_247_Open_Image.style.display='inline'; Codehighlighter1_215_247_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_215_247_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_215_247_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jbInit();<br />
<img id="Codehighlighter1_270_314_Open_Image" onclick="this.style.display='none'; Codehighlighter1_270_314_Open_Text.style.display='none'; Codehighlighter1_270_314_Closed_Image.style.display='inline'; Codehighlighter1_270_314_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_270_314_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_270_314_Closed_Text.style.display='none'; Codehighlighter1_270_314_Open_Image.style.display='inline'; Codehighlighter1_270_314_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;ex)&nbsp;</span><span id="Codehighlighter1_270_314_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_270_314_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_358_2874_Open_Image" onclick="this.style.display='none'; Codehighlighter1_358_2874_Open_Text.style.display='none'; Codehighlighter1_358_2874_Closed_Image.style.display='inline'; Codehighlighter1_358_2874_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_358_2874_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_358_2874_Closed_Text.style.display='none'; Codehighlighter1_358_2874_Open_Image.style.display='inline'; Codehighlighter1_358_2874_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;generateDocument()</span><span id="Codehighlighter1_358_2874_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_358_2874_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">此API为了生成一个xml文件</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;document&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DocumentHelper.createDocument();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使用&nbsp;DocumentHelper&nbsp;类创建一个文档实例。DocumentHelper&nbsp;是生成&nbsp;XML&nbsp;文档节点的&nbsp;dom4j&nbsp;API&nbsp;工厂类</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;catalogElement&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.addElement(</span><span style="color: #000000">"</span><span style="color: #000000">catalog</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使用&nbsp;addElement()&nbsp;方法创建根元素&nbsp;catalog。&nbsp;addElement()&nbsp;用于向&nbsp;XML&nbsp;文档中增加元素</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catalogElement.addComment(</span><span style="color: #000000">"</span><span style="color: #000000">An&nbsp;XML&nbsp;Catalog</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;catalog&nbsp;元素中使用&nbsp;addComment()&nbsp;方法添加注释&#8220;An&nbsp;XML&nbsp;catalog&#8221;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catalogElement.addProcessingInstruction(</span><span style="color: #000000">"</span><span style="color: #000000">target</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">text</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;catalog&nbsp;元素中使用&nbsp;addProcessingInstruction()&nbsp;方法增加一个处理指令</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;journalElement&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;catalogElement.addElement(</span><span style="color: #000000">"</span><span style="color: #000000">journal</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;catalog&nbsp;元素中使用&nbsp;addElement()&nbsp;方法增加&nbsp;journal&nbsp;元素</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;journalElement.addAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">title</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">XML&nbsp;Zone</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;journalElement.addAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">publisher</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">IBM&nbsp;developerWorks</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使用&nbsp;addAttribute()&nbsp;方法向&nbsp;journal&nbsp;元素添加&nbsp;title&nbsp;和&nbsp;publisher&nbsp;属性。</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;articleElement</span><span style="color: #000000">=</span><span style="color: #000000">journalElement.addElement(</span><span style="color: #000000">"</span><span style="color: #000000">文章</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">向journal&nbsp;&nbsp;元素中添加&nbsp;article&nbsp;元素</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;articleElement.addAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">level</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Intermediate</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;articleElement.addAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">date</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">December-2001</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">为&nbsp;article&nbsp;元素增加&nbsp;level&nbsp;和&nbsp;date&nbsp;属性</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;&nbsp;titleElement</span><span style="color: #000000">=</span><span style="color: #000000">articleElement.addElement(</span><span style="color: #000000">"</span><span style="color: #000000">title</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">向&nbsp;article&nbsp;元素中增加&nbsp;title&nbsp;元素</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;titleElement.setText(</span><span style="color: #000000">"</span><span style="color: #000000">Java&nbsp;configuration&nbsp;with&nbsp;XML&nbsp;Schema</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使用&nbsp;setText()&nbsp;方法设置&nbsp;article&nbsp;元素的文本</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;authorElement</span><span style="color: #000000">=</span><span style="color: #000000">articleElement.addElement(</span><span style="color: #000000">"</span><span style="color: #000000">author</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;article&nbsp;元素中增加&nbsp;author&nbsp;元素</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;&nbsp;firstNameElement</span><span style="color: #000000">=</span><span style="color: #000000">authorElement.addElement(</span><span style="color: #000000">"</span><span style="color: #000000">firstname</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;firstNameElement.setText(</span><span style="color: #000000">"</span><span style="color: #000000">Marcello</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;author&nbsp;元素中增加&nbsp;firstname&nbsp;元素并设置该元素的文本</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;lastNameElement</span><span style="color: #000000">=</span><span style="color: #000000">authorElement.addElement(</span><span style="color: #000000">"</span><span style="color: #000000">lastname</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastNameElement.setText(</span><span style="color: #000000">"</span><span style="color: #000000">Vitaletti</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;author&nbsp;元素中增加&nbsp;lastname&nbsp;元素并设置该元素的文本<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">document.addDocType("catalog",&nbsp;null,"file:</span><span style="color: #008000">//</span><span style="color: #008000">c:/Dtds/catalog.dtd");<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">可以使用&nbsp;addDocType()&nbsp;方法添加文档类型说明。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;这样就向&nbsp;XML&nbsp;文档中增加文档类型说明：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&lt;!DOCTYPE&nbsp;catalog&nbsp;SYSTEM&nbsp;"file:</span><span style="color: #008000">//</span><span style="color: #008000">c:/Dtds/catalog.dtd"&gt;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_2285_2688_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2285_2688_Open_Text.style.display='none'; Codehighlighter1_2285_2688_Closed_Image.style.display='inline'; Codehighlighter1_2285_2688_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2285_2688_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2285_2688_Closed_Text.style.display='none'; Codehighlighter1_2285_2688_Open_Image.style.display='inline'; Codehighlighter1_2285_2688_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span id="Codehighlighter1_2285_2688_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2285_2688_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;XMLWriter&nbsp;output&nbsp;=&nbsp;new&nbsp;XMLWriter(new&nbsp;FileWriter(&nbsp;new&nbsp;File("c:/test.xml")&nbsp;));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">通过如下改变代码彻底解决中文输入问题<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;XML&nbsp;声明&nbsp;&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;&nbsp;自动添加到&nbsp;XML&nbsp;文档中。</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.dom4j.io.XMLWriter&nbsp;output&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;org.dom4j.io.XMLWriter(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(</span><span style="color: #000000">"</span><span style="color: #000000">E:/JavaCodeCollection/java学习/test/test.xml</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.write(&nbsp;document&nbsp;);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.close();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_2715_2751_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2715_2751_Open_Text.style.display='none'; Codehighlighter1_2715_2751_Closed_Image.style.display='inline'; Codehighlighter1_2715_2751_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2715_2751_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2715_2751_Closed_Text.style.display='none'; Codehighlighter1_2715_2751_Open_Image.style.display='inline'; Codehighlighter1_2715_2751_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">(IOException&nbsp;e)</span><span id="Codehighlighter1_2715_2751_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2715_2751_Open_Text"><span style="color: #000000">{System.out.println(e.getMessage());}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;如果文档要使用文档类型定义（DTD）文档验证则必须有&nbsp;Doctype。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;XML&nbsp;声明&nbsp;&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;&nbsp;自动添加到&nbsp;XML&nbsp;文档中。</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_2919_3002_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2919_3002_Open_Text.style.display='none'; Codehighlighter1_2919_3002_Closed_Image.style.display='inline'; Codehighlighter1_2919_3002_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2919_3002_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2919_3002_Closed_Text.style.display='none'; Codehighlighter1_2919_3002_Open_Image.style.display='inline'; Codehighlighter1_2919_3002_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;argv)</span><span id="Codehighlighter1_2919_3002_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2919_3002_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;createXML_chinese&nbsp;dom4j</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;createXML_chinese();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;dom4j.generateDocument();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_3048_3054_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3048_3054_Open_Text.style.display='none'; Codehighlighter1_3048_3054_Closed_Image.style.display='inline'; Codehighlighter1_3048_3054_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_3048_3054_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_3048_3054_Closed_Text.style.display='none'; Codehighlighter1_3048_3054_Open_Image.style.display='inline'; Codehighlighter1_3048_3054_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;jbInit()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;</span><span id="Codehighlighter1_3048_3054_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_3048_3054_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/liuqiang5151/aggbug/167763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuqiang5151/" target="_blank">刘强</a> 2007-12-14 14:15 <a href="http://www.blogjava.net/liuqiang5151/articles/167763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转 深入理解abstract class和interface </title><link>http://www.blogjava.net/liuqiang5151/articles/146173.html</link><dc:creator>刘强</dc:creator><author>刘强</author><pubDate>Tue, 18 Sep 2007 07:25:00 GMT</pubDate><guid>http://www.blogjava.net/liuqiang5151/articles/146173.html</guid><wfw:comment>http://www.blogjava.net/liuqiang5151/comments/146173.html</wfw:comment><comments>http://www.blogjava.net/liuqiang5151/articles/146173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuqiang5151/comments/commentRss/146173.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuqiang5151/services/trackbacks/146173.html</trackback:ping><description><![CDATA[<p><a name="1"><span class="atitle">理解抽象类</span></a></p>
<p>&nbsp;</p>
<p>abstract class和interface在Java语言中都是用来进行抽象类（本文中的抽象类并非从abstract class翻译而来，它表示的是一个抽象体，而abstract class为Java语言中用于定义抽象类的一种方法，请读者注意区分）定义的，那么什么是抽象类，使用抽象类能为我们带来什么好处呢？</p>
<p>在面向对象的概念中，我们知道所有的对象都是通过类来描绘的，但是反过来却不是这样。并不是所有的类都是用来描绘对象的，如果一个类中没有包含足够的信息来描绘一个具体的对象，这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念，是对一系列看上去不同，但是本质上相同的具体概念的抽象。比如：如果我们进行一个图形编辑软件的开发，就会发现问题领域存在着圆、三角形这样一些具体概念，它们是不同的，但是它们又都属于形状这样一个概念，形状这个概念在问题领域是不存在的，它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念，所以用以表征抽象概念的抽象类是不能够实例化的。</p>
<p>在面向对象领域，抽象类主要用来进行类型隐藏。我们可以构造出一个固定的一组行为的抽象描述，但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类，而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体，因此它可以是不允许修改的；同时，通过从这个抽象体派生，也可扩展此模块的行为功能。熟悉OCP的读者一定知道，为了能够实现面向对象设计的一个最核心的原则OCP( <strong>Open-Closed Principle</strong>)，抽象类是其中的关键所在。 </p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="2"><span class="atitle">从语法定义层面看abstract class和interface</span></a></p>
<p>&nbsp;</p>
<p>在语法层面，Java语言对于abstract class和interface给出了不同的定义方式，下面以定义一个名为Demo的抽象类为例来说明这种不同。</p>
<p>使用abstract class的方式定义Demo抽象类的方式如下：</p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">abstract class Demo ｛	abstract void method1();	abstract void method2();	&#8230;｝</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>使用interface的方式定义Demo抽象类的方式如下：</p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">interface Demo {	void method1();	void method2();	&#8230;}</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>在abstract class方式中，Demo可以有自己的数据成员，也可以有非abstarct的成员方法，而在interface方式的实现中，Demo只能够有静态的不能被修改的数据成员（也就是必须是static final的，不过在interface中一般不定义数据成员），所有的成员方法都是abstract的。从某种意义上说，interface是一种特殊形式的abstract class。</p>
<p>对于abstract class和interface在语法定义层面更多的细节问题，不是本文的重点，不再赘述，读者可以参阅参考文献〔1〕获得更多的相关内容。</p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="3"><span class="atitle">从编程层面看abstract class和interface</span></a></p>
<p>&nbsp;</p>
<p>从编程的角度来看，abstract class和interface都可以用来实现"design by contract"的思想。但是在具体的使用上面还是有一些区别的。</p>
<p>首先，abstract class在Java语言中表示的是一种继承关系，一个类只能使用一次继承关系。但是，一个类却可以实现多个interface。也许，这是Java语言的设计者在考虑Java对于多重继承的支持方面的一种折中考虑吧。</p>
<p>其次，在abstract class的定义中，我们可以赋予方法的默认行为。但是在interface的定义中，方法却不能拥有默认行为，为了绕过这个限制，必须使用委托，但是这会 增加一些复杂性，有时会造成很大的麻烦。</p>
<p>在抽象类中不能定义默认行为还存在另一个比较严重的问题，那就是可能会造成维护上的麻烦。因为如果后来想修改类的界面（一般通过abstract class或者interface来表示）以适应新的情况（比如，添加新的方法或者给已用的方法中添加新的参数）时，就会非常的麻烦，可能要花费很多的时间（对于派生类很多的情况，尤为如此）。但是如果界面是通过abstract class来实现的，那么可能就只需要修改定义在abstract class中的默认行为就可以了。</p>
<p>同样，如果不能在抽象类中定义默认行为，就会导致同样的方法实现出现在该抽象类的每一个派生类中，违反了"one rule，one place"原则，造成代码重复，同样不利于以后的维护。因此，在abstract class和interface间进行选择时要非常的小心。</p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="4"><span class="atitle">从设计理念层面看abstract class和interface</span></a></p>
<p>&nbsp;</p>
<p>上面主要从语法定义和编程的角度论述了abstract class和interface的区别，这些层面的区别是比较低层次的、非本质的。本小节将从另一个层面：abstract class和interface所反映出的设计理念，来分析一下二者的区别。作者认为，从这个层面进行分析才能理解二者概念的本质所在。</p>
<p>前面已经提到过，abstarct class在Java语言中体现了一种继承关系，要想使得继承关系合理，父类和派生类之间必须存在"is a"关系，即父类和派生类在概念本质上应该是相同的（参考文献〔3〕中有关于"is a"关系的大篇幅深入的论述，有兴趣的读者可以参考）。对于interface 来说则不然，并不要求interface的实现者和interface定义在概念本质上是一致的，仅仅是实现了interface定义的契约而已。为了使论述便于理解，下面将通过一个简单的实例进行说明。</p>
<p>考虑这样一个例子，假设在我们的问题领域中有一个关于Door的抽象概念，该Door具有执行两个动作open和close，此时我们可以通过abstract class或者interface来定义一个表示该抽象概念的类型，定义方式分别如下所示：</p>
<p>使用abstract class方式定义Door：</p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">	abstract class Door {		abstract void open();		abstract void close()；}</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>使用interface方式定义Door：</p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">interface Door {		void open();	void close();}</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>其他具体的Door类型可以extends使用abstract class方式定义的Door或者implements使用interface方式定义的Door。看起来好像使用abstract class和interface没有大的区别。</p>
<p>如果现在要求Door还要具有报警的功能。我们该如何设计针对该例子的类结构呢（在本例中，主要是为了展示abstract class和interface反映在设计理念上的区别，其他方面无关的问题都做了简化或者忽略）？下面将罗列出可能的解决方案，并从设计理念层面对这些不同的方案进行分析。</p>
<p><strong>解决方案一：</strong> </p>
<p>简单的在Door的定义中增加一个alarm方法，如下：</p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">	abstract class Door {		abstract void open();		abstract void close()；		abstract void alarm();}</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>或者</p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">interface Door {		void open();	void close();	void alarm();}</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>那么具有报警功能的AlarmDoor的定义方式如下：</p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">	class AlarmDoor extends Door {		void open() { &#8230; }    		void close() { &#8230; }		void alarm() { &#8230; }}</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>或者</p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">	class AlarmDoor implements Door ｛	void open() { &#8230; }    		void close() { &#8230; }		void alarm() { &#8230; }｝</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>这种方法违反了面向对象设计中的一个核心原则ISP（Interface Segregation Priciple），在Door的定义中把Door概念本身固有的行为方法和另外一个概念"报警器"的行为方法混在了一起。这样引起的一个问题是那些仅仅依赖于Door这个概念的模块会因为"报警器"这个概念的改变（比如：修改alarm方法的参数）而改变，反之依然。</p>
<p><strong>解决方案二：</strong> </p>
<p>既然open、close和alarm属于两个不同的概念，根据ISP原则应该把它们分别定义在代表这两个概念的抽象类中。定义方式有：这两个概念都使用abstract class方式定义；两个概念都使用interface方式定义；一个概念使用abstract class方式定义，另一个概念使用interface方式定义。</p>
<p>显然，由于Java语言不支持多重继承，所以两个概念都使用abstract class方式定义是不可行的。后面两种方式都是可行的，但是对于它们的选择却反映出对于问题领域中的概念本质的理解、对于设计意图的反映是否正确、合理。我们一一来分析、说明。</p>
<p>如果两个概念都使用interface方式来定义，那么就反映出两个问题：1、我们可能没有理解清楚问题领域，AlarmDoor在概念本质上到底是Door还是报警器？2、如果我们对于问题领域的理解没有问题，比如：我们通过对于问题领域的分析发现AlarmDoor在概念本质上和Door是一致的，那么我们在实现时就没有能够正确的揭示我们的设计意图，因为在这两个概念的定义上（均使用interface方式定义）反映不出上述含义。</p>
<p>如果我们对于问题领域的理解是：AlarmDoor在概念本质上是Door，同时它有具有报警的功能。我们该如何来设计、实现来明确的反映出我们的意思呢？前面已经说过，abstract class在Java语言中表示一种继承关系，而继承关系在本质上是"is a"关系。所以对于Door这个概念，我们应该使用abstarct class方式来定义。另外，AlarmDoor又具有报警功能，说明它又能够完成报警概念中定义的行为，所以报警概念可以通过interface方式定义。如下所示：</p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">	abstract class Door {		abstract void open();		abstract void close()；	}interface Alarm {	void alarm();}class AlarmDoor extends Door implements Alarm {	void open() { &#8230; }	void close() { &#8230; }   	void alarm() { &#8230; }}</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>这种实现方式基本上能够明确的反映出我们对于问题领域的理解，正确的揭示我们的设计意图。其实abstract class表示的是"is a"关系，interface表示的是"like a"关系，大家在选择时可以作为一个依据，当然这是建立在对问题领域的理解上的，比如：如果我们认为AlarmDoor在概念本质上是报警器，同时又具有Door的功能，那么上述的定义方式就要反过来了。</p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="5"><span class="atitle">结论</span></a></p>
<p>&nbsp;</p>
<p>abstract class和interface是Java语言中的两种定义抽象类的方式，它们之间有很大的相似性。但是对于它们的选择却又往往反映出对于问题领域中的概念本质的理解、对于设计意图的反映是否正确、合理，因为它们表现了概念间的不同的关系（虽然都能够实现需求的功能）。这其实也是语言的一种的惯用法，希望读者朋友能够细细体会。</p>
<img src ="http://www.blogjava.net/liuqiang5151/aggbug/146173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuqiang5151/" target="_blank">刘强</a> 2007-09-18 15:25 <a href="http://www.blogjava.net/liuqiang5151/articles/146173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poi技术</title><link>http://www.blogjava.net/liuqiang5151/articles/143518.html</link><dc:creator>刘强</dc:creator><author>刘强</author><pubDate>Fri, 07 Sep 2007 12:07:00 GMT</pubDate><guid>http://www.blogjava.net/liuqiang5151/articles/143518.html</guid><wfw:comment>http://www.blogjava.net/liuqiang5151/comments/143518.html</wfw:comment><comments>http://www.blogjava.net/liuqiang5151/articles/143518.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuqiang5151/comments/commentRss/143518.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuqiang5151/services/trackbacks/143518.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">今天做的项目里有一项功能是将网页表格里的数据导入Excel表里，多亏了大勇。他给我传了一个例子，最后研究了一下，基本实现了功能。主要功能就是这个方法中<br />
<span id="Codehighlighter1_316_706_Open_Text"><span id="Codehighlighter1_427_706_Open_Text">
<p _extended="true"><font face="宋体" _extended="true">package ftkj.db;<br _extended="true" />
import java.io.FileOutputStream;<br _extended="true" />
import java.io.IOException;</font></p>
<p _extended="true"><font face="宋体" _extended="true">import org.apache.poi.hssf.usermodel.HSSFCell;<br _extended="true" />
import org.apache.poi.hssf.usermodel.HSSFRow;<br _extended="true" />
import org.apache.poi.hssf.usermodel.HSSFSheet;<br _extended="true" />
import org.apache.poi.hssf.usermodel.HSSFWorkbook;</font></p>
<p _extended="true"><font face="宋体" _extended="true">import ftkj.form.*;</font></p>
<p _extended="true"><font face="宋体" _extended="true">public class IntoExcel {<br _extended="true" />
&nbsp;public void votoexcel(OrderForm of,int quantity1,float amount1,int county1,int school1) throws IOException<br _extended="true" />
&nbsp;{<br _extended="true" />
&nbsp;&nbsp;HSSFWorkbook wb=new HSSFWorkbook();<br _extended="true" />
&nbsp;&nbsp;HSSFSheet sheet=wb.createSheet("lq");<br _extended="true" />
&nbsp;&nbsp;System.out.println(of.getName());<br _extended="true" />
&nbsp;&nbsp;&nbsp;//OrderForm de=(OrderForm)of.;<br _extended="true" />
&nbsp;&nbsp;&nbsp;//HSSFRow row=sheet.createRow((short));<br _extended="true" />
&nbsp;&nbsp;HSSFRow row=sheet.createRow((short)0);<br _extended="true" />
&nbsp;<br _extended="true" />
&nbsp;&nbsp;HSSFRow row1=sheet.createRow((short)1);<br />
setEncoding(row.createCell((short)0)).setCellValue(new String("产品编号"));<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row.createCell((short)1)).setCellValue("产品名称");<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row.createCell((short)2)).setCellValue("载体");<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row.createCell((short)3)).setCellValue("单位包装");<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row.createCell((short)4)).setCellValue("单价");<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row.createCell((short)5)).setCellValue("数量");<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row.createCell((short)6)).setCellValue("金额");<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row.createCell((short)7)).setCellValue("出版单位");<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row.createCell((short)8)).setCellValue("订购县区");<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row.createCell((short)9)).setCellValue("订购学校");<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row.createCell((short)10)).setCellValue("订购年度");<br />
setEncoding(row1.createCell((short)0)).setCellValue(of.getNumber());<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row1.createCell((short)1)).setCellValue(of.getName());<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row1.createCell((short)2)).setCellValue(of.getCarrier());<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row1.createCell((short)3)).setCellValue(of.getPacking());<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row1.createCell((short)4)).setCellValue(of.getPrice());<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row1.createCell((short)5)).setCellValue(quantity1);<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row1.createCell((short)6)).setCellValue(amount1);<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row1.createCell((short)7)).setCellValue(of.getPub());<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row1.createCell((short)8)).setCellValue(county1);<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row1.createCell((short)9)).setCellValue(school1);<br _extended="true" />
&nbsp;&nbsp;&nbsp;setEncoding(row1.createCell((short)10)).setCellValue(of.getYear());<br _extended="true" />
&nbsp;&nbsp;&nbsp;<br _extended="true" />
&nbsp;&nbsp;&nbsp;FileOutputStream fos=new FileOutputStream("c:\\haha.xls");<br _extended="true" />
&nbsp;&nbsp;&nbsp;wb.write(fos);<br _extended="true" />
&nbsp;&nbsp;&nbsp;fos.close(); </p>
<p _extended="true"><font face="宋体" _extended="true">}</font></p>
<p _extended="true"><font face="宋体" _extended="true">&nbsp;public HSSFCell setEncoding(HSSFCell cell)<br _extended="true" />
&nbsp;{<br _extended="true" />
&nbsp;&nbsp;cell.setEncoding(HSSFCell.ENCODING_UTF_16);<br _extended="true" />
&nbsp;&nbsp;return cell;<br _extended="true" />
&nbsp;}</font></p>
<p _extended="true"><font face="宋体" _extended="true">}<br _extended="true" />
另外需要导入三个包到你的工程中分别是：<font face="宋体" _extended="true">poi-2.5.1-final-20040804.jar</font></font></p>
<p _extended="true"><font face="宋体" _extended="true"><font face="宋体" _extended="true">poi-contrib-2.5.1-final-20040804.jar</font></font></p>
<p _extended="true"><font face="宋体" _extended="true"><font face="宋体" _extended="true">poi-scratchpad-2.5.1-final-20040804.jar</font></font></p>
<p _extended="true"><font face="宋体" _extended="true">&nbsp;</font></p>
<div class="invisible" id="reference" _extended="true">文章引用自：<a href=" _extended=" target="true"  ?></a> </div>
<p _extended="true"><br _extended="true" />
<br _extended="true" />
</font></p>
</span></span></span>
<img src ="http://www.blogjava.net/liuqiang5151/aggbug/143518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuqiang5151/" target="_blank">刘强</a> 2007-09-07 20:07 <a href="http://www.blogjava.net/liuqiang5151/articles/143518.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中常用的一些方法</title><link>http://www.blogjava.net/liuqiang5151/articles/143516.html</link><dc:creator>刘强</dc:creator><author>刘强</author><pubDate>Fri, 07 Sep 2007 11:56:00 GMT</pubDate><guid>http://www.blogjava.net/liuqiang5151/articles/143516.html</guid><wfw:comment>http://www.blogjava.net/liuqiang5151/comments/143516.html</wfw:comment><comments>http://www.blogjava.net/liuqiang5151/articles/143516.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuqiang5151/comments/commentRss/143516.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuqiang5151/services/trackbacks/143516.html</trackback:ping><description><![CDATA[字符串<br _extended="true" />
1、获取字符串的长度&nbsp;<br _extended="true" />
length()&nbsp;<br _extended="true" />
2&nbsp;、判断字符串的前缀或后缀与已知字符串是否相同&nbsp;<br _extended="true" />
前缀&nbsp;startsWith(String&nbsp;s)&nbsp;<br _extended="true" />
后缀&nbsp;endsWith(String&nbsp;s)&nbsp;<br _extended="true" />
3、比较两个字符串&nbsp;<br _extended="true" />
equals(String&nbsp;s)&nbsp;<br _extended="true" />
4、把字符串转化为相应的数值&nbsp;<br _extended="true" />
int型&nbsp;Integer.parseInt(字符串)&nbsp;<br _extended="true" />
long型&nbsp;Long.parseLong(字符串)&nbsp;<br _extended="true" />
float型&nbsp;Folat.valueOf(字符串).floatValue()&nbsp;<br _extended="true" />
double型&nbsp;Double.valueOf(字符串).doubleValue()&nbsp;<br _extended="true" />
4、将数值转化为字符串&nbsp;<br _extended="true" />
valueOf(数值)&nbsp;<br _extended="true" />
5、字符串检索&nbsp;<br _extended="true" />
indexOf(Srting&nbsp;s)&nbsp;从头开始检索&nbsp;<br _extended="true" />
indexOf(String&nbsp;s&nbsp;,int&nbsp;startpoint)&nbsp;从startpoint处开始检索&nbsp;<br _extended="true" />
如果没有检索到，将返回-1&nbsp;<br _extended="true" />
6、得到字符串的子字符串&nbsp;<br _extended="true" />
substring(int&nbsp;startpoint)&nbsp;从startpoint处开始获取&nbsp;<br _extended="true" />
substring(int&nbsp;start,int&nbsp;end)&nbsp;从start到end中间的字符&nbsp;<br _extended="true" />
7、替换字符串中的字符,去掉字符串前后空格&nbsp;<br _extended="true" />
replace(char&nbsp;old,char&nbsp;new)&nbsp;用new替换old&nbsp;<br _extended="true" />
trim()&nbsp;<br _extended="true" />
8、分析字符串&nbsp;<br _extended="true" />
StringTokenizer(String&nbsp;s)&nbsp;构造一个分析器，使用默认分隔字符（空格，换行，回车，Tab，进纸符）&nbsp;<br _extended="true" />
StringTokenizer(String&nbsp;s,String&nbsp;delim)&nbsp;delim是自己定义的分隔符&nbsp;<br _extended="true" />
nextToken()&nbsp;逐个获取字符串中的语言符号&nbsp;<br _extended="true" />
boolean&nbsp;hasMoreTokens()&nbsp;只要字符串还有语言符号将返回true，否则返回false&nbsp;<br _extended="true" />
countTokens()&nbsp;得到一共有多少个语言符号
<img src ="http://www.blogjava.net/liuqiang5151/aggbug/143516.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuqiang5151/" target="_blank">刘强</a> 2007-09-07 19:56 <a href="http://www.blogjava.net/liuqiang5151/articles/143516.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中如何计算百分比</title><link>http://www.blogjava.net/liuqiang5151/articles/143515.html</link><dc:creator>刘强</dc:creator><author>刘强</author><pubDate>Fri, 07 Sep 2007 11:53:00 GMT</pubDate><guid>http://www.blogjava.net/liuqiang5151/articles/143515.html</guid><wfw:comment>http://www.blogjava.net/liuqiang5151/comments/143515.html</wfw:comment><comments>http://www.blogjava.net/liuqiang5151/articles/143515.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuqiang5151/comments/commentRss/143515.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuqiang5151/services/trackbacks/143515.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.text.NumberFormat;<br />
<img id="Codehighlighter1_38_241_Open_Image" onclick="this.style.display='none'; Codehighlighter1_38_241_Open_Text.style.display='none'; Codehighlighter1_38_241_Closed_Image.style.display='inline'; Codehighlighter1_38_241_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_38_241_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_38_241_Closed_Text.style.display='none'; Codehighlighter1_38_241_Open_Image.style.display='inline'; Codehighlighter1_38_241_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;A</span><span id="Codehighlighter1_38_241_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_82_239_Open_Image" onclick="this.style.display='none'; Codehighlighter1_82_239_Open_Text.style.display='none'; Codehighlighter1_82_239_Closed_Image.style.display='inline'; Codehighlighter1_82_239_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_82_239_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_82_239_Closed_Text.style.display='none'; Codehighlighter1_82_239_Open_Image.style.display='inline'; Codehighlighter1_82_239_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;String&nbsp;percent(</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;p1,</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;p2)</span><span id="Codehighlighter1_82_239_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;String&nbsp;str;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;p3</span><span style="color: #000000">=</span><span style="color: #000000">p1</span><span style="color: #000000">/</span><span style="color: #000000">p2;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;NumberFormat&nbsp;nf</span><span style="color: #000000">=</span><span style="color: #000000">NumberFormat.getPercentInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;nf.setMinimumFractionDigits(</span><span style="color: #000000">2</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">nf.format(p3);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;str;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_260_400_Open_Image" onclick="this.style.display='none'; Codehighlighter1_260_400_Open_Text.style.display='none'; Codehighlighter1_260_400_Closed_Image.style.display='inline'; Codehighlighter1_260_400_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_260_400_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_260_400_Closed_Text.style.display='none'; Codehighlighter1_260_400_Open_Image.style.display='inline'; Codehighlighter1_260_400_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Test</span><span id="Codehighlighter1_260_400_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_300_398_Open_Image" onclick="this.style.display='none'; Codehighlighter1_300_398_Open_Text.style.display='none'; Codehighlighter1_300_398_Closed_Image.style.display='inline'; Codehighlighter1_300_398_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_300_398_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_300_398_Closed_Text.style.display='none'; Codehighlighter1_300_398_Open_Image.style.display='inline'; Codehighlighter1_300_398_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String&nbsp;args[])</span><span id="Codehighlighter1_300_398_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">test1:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">A.percent(</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">3</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">test2:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">A.percent(</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">4</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/liuqiang5151/aggbug/143515.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuqiang5151/" target="_blank">刘强</a> 2007-09-07 19:53 <a href="http://www.blogjava.net/liuqiang5151/articles/143515.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>