﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava- </title><link>http://www.blogjava.net/00001000/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 18 Jun 2026 12:54:14 GMT</lastBuildDate><pubDate>Thu, 18 Jun 2026 12:54:14 GMT</pubDate><ttl>60</ttl><item><title>初步了解 Maven  与 eclipse Maven 插件</title><link>http://www.blogjava.net/00001000/articles/419915.html</link><dc:creator>00001000</dc:creator><author>00001000</author><pubDate>Tue, 11 Nov 2014 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/00001000/articles/419915.html</guid><wfw:comment>http://www.blogjava.net/00001000/comments/419915.html</wfw:comment><comments>http://www.blogjava.net/00001000/articles/419915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/00001000/comments/commentRss/419915.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/00001000/services/trackbacks/419915.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: a ) Maven 能做什么 ?1 : 可以用 Maven 把项目构件成五个项目 , 而不是五个包2: 可以用 Maven 把项目需要依赖使用的jar直接导入,不需要手动一个个去官网 下载\整合\打包\ 2: 可以用 Maven 把 自己的项目按照版本号打包,还可以当作工具类传到网络上,这样别人就通过 一段配置 直接引用你的代码4: 可以用 Maven 编译打包你的代码,让其自动生成有规则的 wa...&nbsp;&nbsp;<a href='http://www.blogjava.net/00001000/articles/419915.html'>阅读全文</a><img src ="http://www.blogjava.net/00001000/aggbug/419915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/00001000/" target="_blank">00001000</a> 2014-11-11 11:31 <a href="http://www.blogjava.net/00001000/articles/419915.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>代理模式 简单模拟 ActionProxy</title><link>http://www.blogjava.net/00001000/articles/413666.html</link><dc:creator>00001000</dc:creator><author>00001000</author><pubDate>Wed, 14 May 2014 09:47:00 GMT</pubDate><guid>http://www.blogjava.net/00001000/articles/413666.html</guid><wfw:comment>http://www.blogjava.net/00001000/comments/413666.html</wfw:comment><comments>http://www.blogjava.net/00001000/articles/413666.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/00001000/comments/commentRss/413666.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/00001000/services/trackbacks/413666.html</trackback:ping><description><![CDATA[结构图：<br /><div><img src="data:image/png;base64,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" alt="" /></div><br />Action Interface ：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">interface</span><span style="color: #000000; ">&nbsp;Action&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;execute&nbsp;()&nbsp;;<br />}</span></div><br /><div>DispacherAction ：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;DispacherAction&nbsp;</span><span style="color: #0000FF; ">implements</span><span style="color: #000000; ">&nbsp;Action&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;execute()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">DispacherAction&nbsp;TODO&nbsp;somethin.</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">result</span><span style="color: #000000; ">"</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div></div><div><br />ActionProxy：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;ActionProxy&nbsp;</span><span style="color: #0000FF; ">implements</span><span style="color: #000000; ">&nbsp;Action&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;DispacherAction&nbsp;dispacherAction&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;DispacherAction();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000;">&nbsp;String&nbsp;execute()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;result&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">begin&nbsp;ActionProxy&nbsp;TODO&nbsp;somethin.</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;dispacherAction.execute()&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">end&nbsp;ActionProxy&nbsp;TODO&nbsp;somethin.</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;result;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div></div><br />执行结果：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;">begin&nbsp;ActionProxy&nbsp;TODO&nbsp;somethin.<br />DispacherAction&nbsp;TODO&nbsp;somethin.<br />end&nbsp;ActionProxy&nbsp;TODO&nbsp;somethin.</span></div><img src ="http://www.blogjava.net/00001000/aggbug/413666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/00001000/" target="_blank">00001000</a> 2014-05-14 17:47 <a href="http://www.blogjava.net/00001000/articles/413666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 责任链模式 简单模拟 &#xB;Interceptor 拦截器</title><link>http://www.blogjava.net/00001000/articles/413664.html</link><dc:creator>00001000</dc:creator><author>00001000</author><pubDate>Wed, 14 May 2014 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/00001000/articles/413664.html</guid><wfw:comment>http://www.blogjava.net/00001000/comments/413664.html</wfw:comment><comments>http://www.blogjava.net/00001000/articles/413664.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/00001000/comments/commentRss/413664.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/00001000/services/trackbacks/413664.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 结构图：Intercept Interface ：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public&nbsp;interface&nbsp;Intercept&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;public&nbs...&nbsp;&nbsp;<a href='http://www.blogjava.net/00001000/articles/413664.html'>阅读全文</a><img src ="http://www.blogjava.net/00001000/aggbug/413664.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/00001000/" target="_blank">00001000</a> 2014-05-14 17:32 <a href="http://www.blogjava.net/00001000/articles/413664.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>new String("value") 与 String string += "value" 的问题 </title><link>http://www.blogjava.net/00001000/articles/413608.html</link><dc:creator>00001000</dc:creator><author>00001000</author><pubDate>Tue, 13 May 2014 08:52:00 GMT</pubDate><guid>http://www.blogjava.net/00001000/articles/413608.html</guid><wfw:comment>http://www.blogjava.net/00001000/comments/413608.html</wfw:comment><comments>http://www.blogjava.net/00001000/articles/413608.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/00001000/comments/commentRss/413608.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/00001000/services/trackbacks/413608.html</trackback:ping><description><![CDATA[环境： JDK6.0&nbsp; Jad1.5.8(Java反编译工具)<br /><br /><span style="font-size: 24pt; color: #ffff99; background-color: #3366ff;">先看测试代码与问题：</span><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;StringObjectValueStack&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;new&nbsp;String("value")&nbsp;到底有几个对象？<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&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;methodString&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;object&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;String(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">value</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;为什么&nbsp;String&nbsp;+=&nbsp;"line";&nbsp;效率低下？<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&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;methodManyString&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;manyObject&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">""</span><span style="color: #000000; ">&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;index&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;;&nbsp;index&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">&nbsp;;&nbsp;index&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;manyObject&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">line</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;为什么要用StringBuffer呢？<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&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;methodStringBuffer&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;stringBuffer&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;StringBuffer()&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;index&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;;&nbsp;index&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">&nbsp;;&nbsp;index&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringBuffer.append(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">line</span><span style="color: #000000; ">"</span><span style="color: #000000;">)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;为什么要用StringBuilder呢？<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />&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;methodStringBuilder&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;stringBuilder&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;StringBuilder()&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;index&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;;&nbsp;index&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">&nbsp;;&nbsp;index&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringBuilder.append(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">line</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div><br /><br /><span style="font-size: 24pt; color: #ffff99; background-color: #3366ff;">看反编译结果：</span><br /><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;StringObjectValueStack&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;StringObjectValueStack()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0:aload_0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;1:invokespecial&nbsp;&nbsp;&nbsp;#8&nbsp;&nbsp;&nbsp;&lt;Method&nbsp;void&nbsp;Object()&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;4:return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&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;methodString()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;object&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;String(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">value</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0:new&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#15&nbsp;&nbsp;&lt;Class&nbsp;String&gt;&nbsp;&nbsp;&nbsp;创建了一个实例对象&nbsp;new&nbsp;String()<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;3:dup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;4:ldc1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#17&nbsp;&nbsp;&lt;String&nbsp;"value"&gt;&nbsp;创建了第二个实例对象<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;上面的&nbsp;&#8220;value&#8221;&nbsp;双引号的字符常量&nbsp;第一次创建在&nbsp;&lt;字符常量缓冲区(Data&nbsp;Segment)&gt;&nbsp;中<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;下次再发现调用&nbsp;"value"&nbsp;,&nbsp;直接去&nbsp;Data&nbsp;Segment&nbsp;中拿值&nbsp;，&nbsp;不再新建<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;6:invokespecial&nbsp;&nbsp;&nbsp;#19&nbsp;&nbsp;&lt;Method&nbsp;void&nbsp;String(String)&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;9:astore_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;10:return&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;至此共创建了两个对象&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&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;methodManyString()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;manyObject&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">""</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0:ldc1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#25&nbsp;&nbsp;&lt;String&nbsp;""&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;2:astore_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;index&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;index&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;&nbsp;index</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">*&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;3:iconst_0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">*&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;4:istore_2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">*&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;5:goto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;31</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;manyObject&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;StringBuilder(String.valueOf(manyObject))).append(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">line</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).toString();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;8:new&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#27&nbsp;&nbsp;&lt;Class&nbsp;StringBuilder&gt;&nbsp;在&nbsp;循环体内&nbsp;创建StringBuilder对象<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;虽然代码为&nbsp;String&nbsp;+=&nbsp;"line"&nbsp;;&nbsp;但编译器实际创建的还是StringBuilder对象来处理字符串<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;注意&nbsp;JDK1.4&nbsp;版本以前，编译器&nbsp;实际调用的是StringBuffer,&nbsp;直到&nbsp;JDK1.5以后，底层用StringBuilder代替<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;11:dup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;12:aload_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;13:invokestatic&nbsp;&nbsp;&nbsp;&nbsp;#29&nbsp;&nbsp;&lt;Method&nbsp;String&nbsp;String.valueOf(Object)&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;&nbsp;&nbsp;16:invokespecial&nbsp;&nbsp;&nbsp;#33&nbsp;&nbsp;&lt;Method&nbsp;void&nbsp;StringBuilder(String)&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;19:ldc1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#34&nbsp;&nbsp;&lt;String&nbsp;"line"&gt;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;如果&nbsp;&lt;字符常量缓冲区(Data&nbsp;Segment)&gt;&nbsp;没有&nbsp;"line"&nbsp;的串对象，则创建了一个对象，以后每循环一次重复使用，不再新建<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;11&nbsp;&nbsp;&nbsp;21:invokevirtual&nbsp;&nbsp;&nbsp;#36&nbsp;&nbsp;&lt;Method&nbsp;StringBuilder&nbsp;StringBuilder.append(String)&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;12&nbsp;&nbsp;&nbsp;24:invokevirtual&nbsp;&nbsp;&nbsp;#40&nbsp;&nbsp;&lt;Method&nbsp;String&nbsp;StringBuilder.toString()&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;13&nbsp;&nbsp;&nbsp;27:astore_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;14&nbsp;&nbsp;&nbsp;28:iinc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;15&nbsp;&nbsp;&nbsp;31:iload_2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;32:bipush&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;17&nbsp;&nbsp;&nbsp;34:icmplt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;18&nbsp;&nbsp;&nbsp;37:return&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;至此，使用&nbsp;String&nbsp;string&nbsp;+=&nbsp;"line"&nbsp;;&nbsp;在循环体中，循环多少次，就创建多少个全新的StringBuilder对象</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&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;methodStringBuffer()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;stringBuffer&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;StringBuffer();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0:new&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#48&nbsp;&nbsp;&lt;Class&nbsp;StringBuffer&gt;&nbsp;新建&nbsp;StringBuffer&nbsp;对象<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;3:dup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;4:invokespecial&nbsp;&nbsp;&nbsp;#50&nbsp;&nbsp;&lt;Method&nbsp;void&nbsp;StringBuffer()&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;7:astore_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;index&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;index&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;&nbsp;index</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">*&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;8:iconst_0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">*&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;9:istore_2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">*&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;10:goto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringBuffer.append(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">line</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;只是调用&nbsp;StringBuffer&nbsp;的&nbsp;append&nbsp;方法&nbsp;垒加&nbsp;字符串&nbsp;并未创建新对象<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;13:aload_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;14:ldc1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#34&nbsp;&nbsp;&lt;String&nbsp;"line"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;如果&nbsp;&lt;字符常量缓冲区(Data&nbsp;Segment)&gt;&nbsp;没有&nbsp;"line"&nbsp;的串对象，则创建了一个对象，以后每循环一次重复使用，不再新建<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;&nbsp;&nbsp;16:invokevirtual&nbsp;&nbsp;&nbsp;#51&nbsp;&nbsp;&lt;Method&nbsp;StringBuffer&nbsp;StringBuffer.append(String)&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;19:pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;11&nbsp;&nbsp;&nbsp;20:iinc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;12&nbsp;&nbsp;&nbsp;23:iload_2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;13&nbsp;&nbsp;&nbsp;24:bipush&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;14&nbsp;&nbsp;&nbsp;26:icmplt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;15&nbsp;&nbsp;&nbsp;29:return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;至次，只创建了一个StringBuffer对象</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&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;methodStringBuilder()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;stringBuilder&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;StringBuilder();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0:new&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#27&nbsp;&nbsp;&lt;Class&nbsp;StringBuilder&gt;&nbsp;&nbsp;新建&nbsp;StringBuilder&nbsp;对象<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;3:dup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;4:invokespecial&nbsp;&nbsp;&nbsp;#57&nbsp;&nbsp;&lt;Method&nbsp;void&nbsp;StringBuilder()&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;7:astore_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;index&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;index&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;&nbsp;index</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">*&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;8:iconst_0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">*&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;9:istore_2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">*&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;10:goto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringBuilder.append(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">line</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;只是调用&nbsp;StringBuilder&nbsp;的&nbsp;append&nbsp;方法&nbsp;垒加&nbsp;字符串&nbsp;并未创建新对象<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;13:aload_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;14:ldc1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#34&nbsp;&nbsp;&lt;String&nbsp;"line"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;如果&nbsp;&lt;字符常量缓冲区(Data&nbsp;Segment)&gt;&nbsp;没有&nbsp;"line"&nbsp;的串对象，则创建了一个对象，以后每循环一次重复使用，不再新建<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;&nbsp;&nbsp;16:invokevirtual&nbsp;&nbsp;&nbsp;#36&nbsp;&nbsp;&lt;Method&nbsp;StringBuilder&nbsp;StringBuilder.append(String)&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;19:pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;11&nbsp;&nbsp;&nbsp;20:iinc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;12&nbsp;&nbsp;&nbsp;23:iload_2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;13&nbsp;&nbsp;&nbsp;24:bipush&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;14&nbsp;&nbsp;&nbsp;26:icmplt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;15&nbsp;&nbsp;&nbsp;29:return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;至次，只创建了一个StringBuilder对象</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div><img src ="http://www.blogjava.net/00001000/aggbug/413608.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/00001000/" target="_blank">00001000</a> 2014-05-13 16:52 <a href="http://www.blogjava.net/00001000/articles/413608.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Try 的 Return 与 Finally 的执行顺序问题</title><link>http://www.blogjava.net/00001000/articles/413599.html</link><dc:creator>00001000</dc:creator><author>00001000</author><pubDate>Tue, 13 May 2014 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/00001000/articles/413599.html</guid><wfw:comment>http://www.blogjava.net/00001000/comments/413599.html</wfw:comment><comments>http://www.blogjava.net/00001000/articles/413599.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/00001000/comments/commentRss/413599.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/00001000/services/trackbacks/413599.html</trackback:ping><description><![CDATA[<span style="font-size: 18pt; color: #ffff99; background-color: #3366ff;">先执行 Try Return , 然后执行 Finally Return</span><br /><br />如下代码：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;TryReturnAndFinally{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(TryReturnAndFinally.execute());&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;String&nbsp;execute&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">tryBodyMethod</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;tryReturn()&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">finally</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">finallyBodyMethod</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;finallyReturn()&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;String&nbsp;tryReturn&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">tryReturnMethod</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">tryReturnResult</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;String&nbsp;finallyReturn&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">finallyReturnMethod</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">finallyReturnResult</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span></div><br /><br />如下结果：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">tryBodyMethod<br />tryReturnMethod<br />finallyBodyMethod<br />finallyReturnMethod<br />finallyReturnResult</span></div><img src ="http://www.blogjava.net/00001000/aggbug/413599.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/00001000/" target="_blank">00001000</a> 2014-05-13 16:10 <a href="http://www.blogjava.net/00001000/articles/413599.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>徒手搭建 SpringMVC / Spring3 / Mybatis3 集成开发环境</title><link>http://www.blogjava.net/00001000/articles/413567.html</link><dc:creator>00001000</dc:creator><author>00001000</author><pubDate>Mon, 12 May 2014 10:57:00 GMT</pubDate><guid>http://www.blogjava.net/00001000/articles/413567.html</guid><wfw:comment>http://www.blogjava.net/00001000/comments/413567.html</wfw:comment><comments>http://www.blogjava.net/00001000/articles/413567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/00001000/comments/commentRss/413567.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/00001000/services/trackbacks/413567.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 准备环境：spring-framework-3.2.6 + Mybatis-3.1.1 + mybatis-spring(集成包)准备spring-framework-3.2.6.RELEASE\libs下所有的jar包导入工程。另准备如下图jar包：例中使用的数据库结构：[表名User]首先需要让容器知道如何启动 Spring MVC 以及 Spring：1、配置 Spring MVC 的 Di...&nbsp;&nbsp;<a href='http://www.blogjava.net/00001000/articles/413567.html'>阅读全文</a><img src ="http://www.blogjava.net/00001000/aggbug/413567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/00001000/" target="_blank">00001000</a> 2014-05-12 18:57 <a href="http://www.blogjava.net/00001000/articles/413567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>徒手搭建 SpringMVC XML AND Annotation 版</title><link>http://www.blogjava.net/00001000/articles/413559.html</link><dc:creator>00001000</dc:creator><author>00001000</author><pubDate>Mon, 12 May 2014 04:29:00 GMT</pubDate><guid>http://www.blogjava.net/00001000/articles/413559.html</guid><wfw:comment>http://www.blogjava.net/00001000/comments/413559.html</wfw:comment><comments>http://www.blogjava.net/00001000/articles/413559.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/00001000/comments/commentRss/413559.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/00001000/services/trackbacks/413559.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 准备环境：(此例所有Spring版本：spring-framework-3.2.6)1、将spring-framework-3.2.6中的lib全部导入工程2、将Apache的Common-logging 导入工程3、将JSTL标签库包导入工程（可选，这里只是为了方便读数据而已）如下图所示：Spring MVC XML 配置：1、在 Web.xml 中 配置启动SpringMVC的Servlet映...&nbsp;&nbsp;<a href='http://www.blogjava.net/00001000/articles/413559.html'>阅读全文</a><img src ="http://www.blogjava.net/00001000/aggbug/413559.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/00001000/" target="_blank">00001000</a> 2014-05-12 12:29 <a href="http://www.blogjava.net/00001000/articles/413559.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>徒手搭建 Struts2/Spring2/Hibernate3 集成开发环境 </title><link>http://www.blogjava.net/00001000/articles/413493.html</link><dc:creator>00001000</dc:creator><author>00001000</author><pubDate>Sat, 10 May 2014 12:18:00 GMT</pubDate><guid>http://www.blogjava.net/00001000/articles/413493.html</guid><wfw:comment>http://www.blogjava.net/00001000/comments/413493.html</wfw:comment><comments>http://www.blogjava.net/00001000/articles/413493.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/00001000/comments/commentRss/413493.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/00001000/services/trackbacks/413493.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 此环境为：Struts-2.2.3 + Spring-2.5.6 + Hibernate-3.6.8所需要jar包如下：struts2：struts2-core-2.2.3.jarstruts2-spring-plugin-2.2.3.jarxwork-core-2.2.3.jarcommons-io-2.0.1.jarcommons-lang-2.5.jarcommons-fileupload-...&nbsp;&nbsp;<a href='http://www.blogjava.net/00001000/articles/413493.html'>阅读全文</a><img src ="http://www.blogjava.net/00001000/aggbug/413493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/00001000/" target="_blank">00001000</a> 2014-05-10 20:18 <a href="http://www.blogjava.net/00001000/articles/413493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse搭建 Struts1/Spring2/Hibernate3 集成开发环境</title><link>http://www.blogjava.net/00001000/articles/413490.html</link><dc:creator>00001000</dc:creator><author>00001000</author><pubDate>Sat, 10 May 2014 12:01:00 GMT</pubDate><guid>http://www.blogjava.net/00001000/articles/413490.html</guid><wfw:comment>http://www.blogjava.net/00001000/comments/413490.html</wfw:comment><comments>http://www.blogjava.net/00001000/articles/413490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/00001000/comments/commentRss/413490.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/00001000/services/trackbacks/413490.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本例用MyEclipse6.0 + Eclipse3.3 + MySQL5.1创建Web Project ：创建Package（包）目录结构：项目右键 MyEclipse 导入Struts1.3 （Strtus1.3.10 是 Apache 在 2008年12月14日 停止更新前的最后版本）项目右键 MyEclipse 导入Spring2cmd 启动数据库服务打开MyEclipse DataBas...&nbsp;&nbsp;<a href='http://www.blogjava.net/00001000/articles/413490.html'>阅读全文</a><img src ="http://www.blogjava.net/00001000/aggbug/413490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/00001000/" target="_blank">00001000</a> 2014-05-10 20:01 <a href="http://www.blogjava.net/00001000/articles/413490.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 联合查询</title><link>http://www.blogjava.net/00001000/articles/413488.html</link><dc:creator>00001000</dc:creator><author>00001000</author><pubDate>Sat, 10 May 2014 10:37:00 GMT</pubDate><guid>http://www.blogjava.net/00001000/articles/413488.html</guid><wfw:comment>http://www.blogjava.net/00001000/comments/413488.html</wfw:comment><comments>http://www.blogjava.net/00001000/articles/413488.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/00001000/comments/commentRss/413488.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/00001000/services/trackbacks/413488.html</trackback:ping><description><![CDATA[联合查询种类：<br /><div>1、Cross Join(全连接)<br />2、Inner Join(内连接)<br />3、Left Join(左连接)<br />4、Right Join(右连接)<br /><div>5、Full Out Join(全外连接)</div><br />准备演示环境：<br /><br />班级表：CLASS<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/00001000/class0001.jpg" height="48" width="253" /><br /><br />5条记录，5个唯一的班级，其中班级5中没有学生。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/00001000/class0002.jpg" height="94" width="201" /><br /><br />学生表：STUDENT<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/00001000/student0001.jpg" height="76" width="269" /><br /><br />6条记录，其中学生1与学生2是同班同学，学生6没有对应的班级。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/00001000/student0003.jpg" height="142" width="429" /><br /><br />那么Oracle中怎么实现五类联合查询呢？它们是什么意思呢？<br /><br /><div>1、Cross Join(全连接)</div>代码语句：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">SELECT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #808080; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; ">&nbsp;STUDENT&nbsp;STU&nbsp;,&nbsp;CLASS&nbsp;CLS <br /></span></div><br />执行结果：<br />返回 30 条记录 ，将 学生表的总条数(6 ROWS) 乘以 班级表的总条数(5 ROWS)（笛卡儿集）：<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/00001000/student_class_1001.jpg" height="198" width="598" /><br /><br /><div>2、Inner Join(内连接)</div>执行代码：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">SELECT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #808080; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; ">&nbsp;STUDENT&nbsp;STU<br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; ,&nbsp;CLASS&nbsp;CLS<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; </span><span style="color: #0000FF; ">WHERE</span><span style="color: #000000; ">&nbsp;STU.CLASS_ID&nbsp;</span><span style="color: #808080; ">=</span><span style="color: #000000; ">&nbsp;CLS.CLASS_ID</span></div><br />执行结果：<br /><div>返回 5 条记录 ，学生表的CLASS_ID匹配班级表的CLASS_ID，符合条件的查询出结果：</div><img alt="" src="http://www.blogjava.net/images/blogjava_net/00001000/student_class_0002.jpg" height="124" width="593" /><br /><br /><div>3、Left Join(左连接)注意：左连接&#8220;(+)&#8221;号在 右边</div><div>执行代码：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">SELECT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #808080; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; ">&nbsp;STUDENT&nbsp;STU&nbsp;&nbsp;<br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; ,&nbsp;CLASS&nbsp;CLS<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #0000FF; ">WHERE</span><span style="color: #000000; "> STU.CLASS_ID&nbsp;</span><span style="color: #808080; ">=</span><span style="color: #000000; ">&nbsp;CLS.CLASS_ID(</span><span style="color: #808080; ">+</span><span style="color: #000000; ">)</span></div></div><div>执行结果：</div><div>返回 6 条记录 ，执行可分解为两步：<br />1、先将学生表的CLASS_ID匹配班级表的CLASS_ID查询出来（此例为5条记录）<br />2、再将左（Student）表中CLASS_ID 没有匹配 右（CLASS）表CLASS_ID的记录查询出来（此例为1条记录）<br /><div><img alt="" src="http://www.blogjava.net/images/blogjava_net/00001000/student_class_2002.jpg" height="140" width="597" /></div></div><div>4、Right Join(右连接)&nbsp; 注意：右连接&#8220;(+)&#8221;号在 左边</div><div>执行代码：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">SELECT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #808080; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; ">&nbsp;STUDENT&nbsp;STU&nbsp;&nbsp;<br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; ,&nbsp;CLASS&nbsp;CLS<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span><span style="color: #0000FF; ">WHERE</span><span style="color: #000000; ">&nbsp;STU.CLASS_ID(</span><span style="color: #808080; ">+</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #808080; ">=</span><span style="color: #000000; ">&nbsp;CLS.CLASS_ID</span></div></div><div>执行结果：<br /><div>返回 6 条记录 ，执行可分解为两步：<br />1、先将班级表的CLASS_ID匹配学生表的CLASS_ID查询出来（此例为5条记录）<br /><div>2、再将左（CLASS）表中CLASS_ID 没有匹配 右（STUDENT）表CLASS_ID的记录查询出来（此例为1条记录）</div></div></div><img alt="" src="http://www.blogjava.net/images/blogjava_net/00001000/student_class_3003.jpg" height="139" width="604" /><br /><br /><div>5、Full Out Join(全外连接)</div><div>执行代码：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">SELECT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #808080; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;STUDENT&nbsp;STU&nbsp;<br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">FULL</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">OUTER</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">JOIN</span><span style="color: #000000; ">&nbsp;CLASS&nbsp;CLS<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000FF; ">ON</span><span style="color: #000000; ">&nbsp;STU.CLASS_ID&nbsp;</span><span style="color: #808080; ">=</span><span style="color: #000000; ">&nbsp;CLS.CLASS_ID</span></div></div><div>执行结果：<br /><div>返回 7 条记录 ，执行可分解为三步：</div></div><div>1、先将班级表的CLASS_ID匹配学生表的CLASS_ID查询出来（此例为5条记录）</div><div>2、再将左（Student）表中CLASS_ID 没有匹配 右（CLASS）表CLASS_ID的记录查询出来（此例为1条记录）</div><div>3、再将左（CLASS）表中CLASS_ID 没有匹配 右（STUDENT）表CLASS_ID的记录查询出来（此例为1条记录）</div><img alt="" src="http://www.blogjava.net/images/blogjava_net/00001000/student_class_4004.jpg" height="154" width="595" /><br /></div><img src ="http://www.blogjava.net/00001000/aggbug/413488.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/00001000/" target="_blank">00001000</a> 2014-05-10 18:37 <a href="http://www.blogjava.net/00001000/articles/413488.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>