﻿<?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-沙漠中的鱼-文章分类-读书笔记(Thinking in Java)</title><link>http://www.blogjava.net/aoneany/category/42806.html</link><description>欲上天堂，先下地狱</description><language>zh-cn</language><lastBuildDate>Mon, 30 Nov 2009 03:53:39 GMT</lastBuildDate><pubDate>Mon, 30 Nov 2009 03:53:39 GMT</pubDate><ttl>60</ttl><item><title>类型信息-Thinking in java读书笔记</title><link>http://www.blogjava.net/aoneany/articles/304119.html</link><dc:creator>沙漠中的鱼</dc:creator><author>沙漠中的鱼</author><pubDate>Sun, 29 Nov 2009 11:23:00 GMT</pubDate><guid>http://www.blogjava.net/aoneany/articles/304119.html</guid><wfw:comment>http://www.blogjava.net/aoneany/comments/304119.html</wfw:comment><comments>http://www.blogjava.net/aoneany/articles/304119.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aoneany/comments/commentRss/304119.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aoneany/services/trackbacks/304119.html</trackback:ping><description><![CDATA[<p><strong>Class.forName("Gum");</strong></p>
<p>forName是取得Class引用的一种方法，返回一个Class对象的引用。</p>
<p>如果Gum类还没有被加载就加载它，在加载过程中，Gum的静态子句被执行。</p>
<p>可能产生的异常：ClassNotFoundException</p>
<p><strong>Class.getInterfaces("Gum")</strong></p>
<p>返回对象是Class类型，表示类Gum包含的接口</p>
<p>如类Gum implements interface1,</p>
<p>则会获取到interface1的类对象</p>
<p><strong>Class.newInstance()</strong></p>
<p>实现&#8220;虚拟构造器&#8221;的一种途径</p>
<p>&nbsp;</p>
<p><strong>类字面常量</strong></p>
<p>obj.Class生成对Class对象的引用，它比forName更加安全，因为它在编译时就接受检查。</p>
<p><span style="color: red">注意</span>:当使用.Class来创建Class对象的引用时，不会自动初始化Class对象。</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_14_179_Open_Image" onclick="this.style.display='none'; Codehighlighter1_14_179_Open_Text.style.display='none'; Codehighlighter1_14_179_Closed_Image.style.display='inline'; Codehighlighter1_14_179_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_14_179_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_14_179_Closed_Text.style.display='none'; Codehighlighter1_14_179_Open_Image.style.display='inline'; Codehighlighter1_14_179_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Initable</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_14_179_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_14_179_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;staticFinal</span><span style="color: #000000">=</span><span style="color: #000000">47</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;staticFinal2</span><span style="color: #000000">=</span><span style="color: #000000">ClassInitialization.rand.nextInt(</span><span style="color: #000000">1000</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_128_177_Open_Image" onclick="this.style.display='none'; Codehighlighter1_128_177_Open_Text.style.display='none'; Codehighlighter1_128_177_Closed_Image.style.display='inline'; Codehighlighter1_128_177_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_128_177_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_128_177_Closed_Text.style.display='none'; Codehighlighter1_128_177_Open_Image.style.display='inline'; Codehighlighter1_128_177_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_128_177_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_128_177_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Initialzing&nbsp;Initable</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_196_289_Open_Image" onclick="this.style.display='none'; Codehighlighter1_196_289_Open_Text.style.display='none'; Codehighlighter1_196_289_Closed_Image.style.display='inline'; Codehighlighter1_196_289_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_196_289_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_196_289_Closed_Text.style.display='none'; Codehighlighter1_196_289_Open_Image.style.display='inline'; Codehighlighter1_196_289_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Initable2</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_196_289_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_196_289_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;staticNonFinal</span><span style="color: #000000">=</span><span style="color: #000000">147</span><span style="color: #000000">;<br />
<img id="Codehighlighter1_237_287_Open_Image" onclick="this.style.display='none'; Codehighlighter1_237_287_Open_Text.style.display='none'; Codehighlighter1_237_287_Closed_Image.style.display='inline'; Codehighlighter1_237_287_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_237_287_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_237_287_Closed_Text.style.display='none'; Codehighlighter1_237_287_Open_Image.style.display='inline'; Codehighlighter1_237_287_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_237_287_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_237_287_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Initialzing&nbsp;Initable2</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_306_398_Open_Image" onclick="this.style.display='none'; Codehighlighter1_306_398_Open_Text.style.display='none'; Codehighlighter1_306_398_Closed_Image.style.display='inline'; Codehighlighter1_306_398_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_306_398_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_306_398_Closed_Text.style.display='none'; Codehighlighter1_306_398_Open_Image.style.display='inline'; Codehighlighter1_306_398_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Initable3</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_306_398_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_306_398_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;staticNonFinal</span><span style="color: #000000">=</span><span style="color: #000000">74</span><span style="color: #000000">;<br />
<img id="Codehighlighter1_346_396_Open_Image" onclick="this.style.display='none'; Codehighlighter1_346_396_Open_Text.style.display='none'; Codehighlighter1_346_396_Closed_Image.style.display='inline'; Codehighlighter1_346_396_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_346_396_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_346_396_Closed_Text.style.display='none'; Codehighlighter1_346_396_Open_Image.style.display='inline'; Codehighlighter1_346_396_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_346_396_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_346_396_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Initialzing&nbsp;Initable3</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_433_893_Open_Image" onclick="this.style.display='none'; Codehighlighter1_433_893_Open_Text.style.display='none'; Codehighlighter1_433_893_Closed_Image.style.display='inline'; Codehighlighter1_433_893_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_433_893_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_433_893_Closed_Text.style.display='none'; Codehighlighter1_433_893_Open_Image.style.display='inline'; Codehighlighter1_433_893_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ClassInitialization&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_433_893_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_433_893_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&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;Random&nbsp;rand</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Random(</span><span style="color: #000000">47</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_517_891_Open_Image" onclick="this.style.display='none'; Codehighlighter1_517_891_Open_Text.style.display='none'; Codehighlighter1_517_891_Closed_Image.style.display='inline'; Codehighlighter1_517_891_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_517_891_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_517_891_Closed_Text.style.display='none'; Codehighlighter1_517_891_Open_Image.style.display='inline'; Codehighlighter1_517_891_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&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)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_517_891_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_517_891_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;initable</span><span style="color: #000000">=</span><span style="color: #000000">Initable.</span><span style="color: #0000ff">class</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">After&nbsp;creating&nbsp;Initable&nbsp;ref</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Initable.staticFinal);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Initable.staticFinal2);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Initable2.staticNonFinal);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;initable3</span><span style="color: #000000">=</span><span style="color: #000000">Class.forName(</span><span style="color: #000000">"</span><span style="color: #000000">Initable3</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">After&nbsp;creating&nbsp;Initable3&nbsp;ref</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Initable3.staticNonFinal);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p>&nbsp;</p>
<p>输出结果为：</p>
<p>Initialzing Initable<br />
After creating Initable ref<br />
47<br />
258<br />
Initialzing Initable2<br />
147<br />
Initialzing Initable3<br />
After creating Initable3 ref<br />
74</p>
<p><strong>结论：</strong>如果一个static final值是"编译期常量"，就象Initable.staticFinal那样，那么这个值不需要对Initable类初使化就可以读取，但是如果只是将一个域设置为static和final的，如对Initable.staticFinal2的访问将进行强制的初使化，因为它不是一个编译型常量。</p>
<p>如果一个static而不是final的，那么在它访问时，总是要求进行链接（为这个域分配存储空间）和初始化（初始化该存储空间），就像对Initable2.staticNonFinal那样。</p>
<p><strong>泛化的Class引用</strong></p>
<p>Class&lt;Integer&gt; iniClass=int.class</p>
<p><strong>新的转型语法</strong></p>
<p>case()</p>
<p>InstanceOf</p>
<p><strong>反射</strong></p>
<p>getMethods()返回Method对象的数组</p>
<p>getConstructors()返回Contructor对象的数组</p>
<p><strong>动态代理</strong></p>
<p>实现InvocationHandler接口</p>
<p>public Object invoke(Objct proxy,Method method,Object[] args)throws Throwable｛｝方法</p>
<p>通过Proxy.newProxyInstance(ClassLoader,Class[],InvocationHandler)创建动态代理</p>
<p>具体示例参见:</p>
<p><a href="http://www.blogjava.net/aoneany/articles/271019.html" target="_blank">http://www.blogjava.net/aoneany/articles/271019.html</a></p><img src ="http://www.blogjava.net/aoneany/aggbug/304119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aoneany/" target="_blank">沙漠中的鱼</a> 2009-11-29 19:23 <a href="http://www.blogjava.net/aoneany/articles/304119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>字符串-Thinking in Java读书笔记</title><link>http://www.blogjava.net/aoneany/articles/304020.html</link><dc:creator>沙漠中的鱼</dc:creator><author>沙漠中的鱼</author><pubDate>Sat, 28 Nov 2009 05:54:00 GMT</pubDate><guid>http://www.blogjava.net/aoneany/articles/304020.html</guid><wfw:comment>http://www.blogjava.net/aoneany/comments/304020.html</wfw:comment><comments>http://www.blogjava.net/aoneany/articles/304020.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aoneany/comments/commentRss/304020.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aoneany/services/trackbacks/304020.html</trackback:ping><description><![CDATA[<p>String对象是不可变的</p>
<p>Scanner扫描字符串对象。</p>
<p>备注：</p>
<p>在java编译好的class文件中,有个区域称为Constant Pool,他是一个由数组组成的表,类型<br />
为cp_info constant_pool[],用来存储程序中使用的各种常量,包括Class<span style="color: rgb(0,0,0)">/</span><span style="color: rgb(0,0,0)">String</span><span style="color: rgb(0,0,0)">/</span><span style="color: rgb(0,0,0)">Integer等各<br />
种基本Java数据类型,详情参见The Java Virtual Machine Specification </span><span style="color: rgb(0,0,0)">4</span><span style="color: rgb(0,0,0)">.4章节.<br />
<br />
对于Constant Pool,表的基本通用结构为:<br />
cp_info {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u1 tag;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u1 info[];<br />
}<br />
<br />
tag是一个数字,用来表示存储的常量的类型,例如8表示String类型,5表示Long类型,info[]根据<br />
类型码tag的不同会发生相应变化.<br />
对于String类型,表的结构为:<br />
CONSTANT_String_info {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u1 tag;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u2 string_index;<br />
}<br />
tag固定为8,string_index是字符串内容信息,类型为:<br />
CONSTANT_Utf8_info {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u1 tag;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u2 length;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u1 bytes[length];<br />
}<br />
tag固定为1,length为字符串的长度,bytes[length]为字符串的内容.<br />
<br />
<strong>代码样例<br />
</strong>(以下代码在jdk6中编译)<br />
为了详细理解Constant Pool的结构,我们参看一些代码:<br />
&nbsp;&nbsp;&nbsp; String s1 </span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">sss111</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp; String s2 </span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">sss222</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp; System.out.println(s1 </span><span style="color: rgb(0,0,0)">+</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">+</span><span style="color: rgb(0,0,0)"> s2);<br />
由于</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">sss111</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">和</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">sss222</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">都是字符串常量,在编译期就已经创建好了存储在class文件中.<br />
在编译后的class文件中会存在这2个常量的对应表示:<br />
</span><span style="color: rgb(0,0,0)">08</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">11</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">01</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">06</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">31</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">31</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">31</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">08</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">13</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">01</span><span style="color: rgb(0,0,0)"> ; ......sss111....<br />
</span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">06</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">32</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">32</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">32</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; ..sss222<br />
<br />
根据上面说的String常量结构,我们分析一下<br />
开始的08为CONSTANT_String_info结构中的tag,而11应该是它的相对引用,01为<br />
CONSTANT_Utf8_info的tag,06为对应字符串的长度,</span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">31</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">31</span><span style="color: rgb(0,0,0)"> 31为字符串对<br />
应的编码,接着分析,会发现后面的是对应</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">sss222</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">的存储结构.<br />
<br />
经过上面分析,我们知道了11和13是两个字符串的相对引用,就可以修改class文件<br />
来修改打印的内容,把class文件中的<br />
</span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> 6E </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">04</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">03</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">24</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">12</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">10</span><span style="color: rgb(0,0,0)"> 4C </span><span style="color: rgb(0,0,0)">12</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">12</span><span style="color: rgb(0,0,0)"> 4D<br />
改成<br />
</span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> 6E </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">04</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">03</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">24</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">12</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">10</span><span style="color: rgb(0,0,0)"> 4C </span><span style="color: rgb(0,0,0)">12</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">10</span><span style="color: rgb(0,0,0)"> 4D<br />
程序就会输出sss111 sss111,而不是和原程序一样输出sss111 sss222,因为我<br />
们把对</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">sss222</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">的相对引用12改成了对</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">sss111</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">的相对引用10.<br />
<br />
</span><span style="color: rgb(0,0,0)">------------</span><span style="color: rgb(0,0,0)">分割线<br />
</span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,255)">class</span><span style="color: rgb(0,0,0)"> Test {<br />
&nbsp;&nbsp;&nbsp; </span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,255)">static</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,255)">void</span><span style="color: rgb(0,0,0)"> main(String[] args) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String s1 </span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">sss111</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String s2 </span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">sss111</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<br />
在上面程序中存在2个相同的常量</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">sss111</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">,对于n个值相同的String常量,在Constant Pool中<br />
只会创建一个,所以在编译好的class文件中,我们只能找到一个对</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">sss111</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">的表示:<br />
000000abh: </span><span style="color: rgb(0,0,0)">08</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">11</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">01</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">00</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">06</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">73</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">31</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">31</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,0)">31</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; ......sss111<br />
<br />
在程序执行的时候,Constant Pool会储存在Method Area,而不是heap中.<br />
<br />
另外,对于</span><span style="color: rgb(0,0,0)">""</span><span style="color: rgb(0,0,0)">内容为空的字符串常量,会创建一个长度为0,内容为空的字符串放到Constant Pool中,<br />
而且Constant Pool在运行期是可以动态扩展的.<br />
<br />
<strong>关于String类的说明<br />
<br />
</strong></span><span style="color: rgb(0,0,0)">1</span><span style="color: rgb(0,0,0)">.String使用private </span><span style="color: rgb(0,0,255)">final</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,255)">char</span><span style="color: rgb(0,0,0)"> value[]来实现字符串的存储,也就是说String对象创建之后,就不能<br />
再修改此对象中存储的字符串内容,就是因为如此,才说String类型是不可变的(immutable).<br />
<br />
</span><span style="color: rgb(0,0,0)">2</span><span style="color: rgb(0,0,0)">.String类有一个特殊的创建方法,就是使用</span><span style="color: rgb(0,0,0)">""</span><span style="color: rgb(0,0,0)">双引号来创建.例如new String(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">i am</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">)实际创建了2个<br />
String对象,一个是</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">i am</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">通过</span><span style="color: rgb(0,0,0)">""</span><span style="color: rgb(0,0,0)">双引号创建的,另一个是通过new创建的.只不过他们创建的时期不同,<br />
一个是编译期,一个是运行期</span><span style="color: rgb(0,0,0)">!</span><span style="color: rgb(0,0,0)"><br />
<br />
</span><span style="color: rgb(0,0,0)">3</span><span style="color: rgb(0,0,0)">.java对String类型重载了</span><span style="color: rgb(0,0,0)">+</span><span style="color: rgb(0,0,0)">操作符,可以直接使用</span><span style="color: rgb(0,0,0)">+</span><span style="color: rgb(0,0,0)">对两个字符串进行连接.<br />
<br />
</span><span style="color: rgb(0,0,0)">4</span><span style="color: rgb(0,0,0)">.运行期调用String类的intern()方法可以向String Pool中动态添加对象.<br />
<br />
<strong>String的创建方法</strong><br />
<br />
一般有如下几种<br />
</span><span style="color: rgb(0,0,0)">1</span><span style="color: rgb(0,0,0)">.直接使用</span><span style="color: rgb(0,0,0)">""</span><span style="color: rgb(0,0,0)">引号创建.<br />
</span><span style="color: rgb(0,0,0)">2</span><span style="color: rgb(0,0,0)">.使用new String()创建.<br />
</span><span style="color: rgb(0,0,0)">3</span><span style="color: rgb(0,0,0)">.使用new String(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">someString</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">)创建以及其他的一些重载构造函数创建.<br />
</span><span style="color: rgb(0,0,0)">4</span><span style="color: rgb(0,0,0)">.使用重载的字符串连接操作符</span><span style="color: rgb(0,0,0)">+</span><span style="color: rgb(0,0,0)">创建.</span></p>
<p><span style="color: rgb(0,0,0)"><strong>面试题:</strong></span></p>
<p><span style="color: rgb(0,0,0)">String s1 <span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,255)">new</span><span style="color: rgb(0,0,0)"> String(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">s1</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">) ;<br />
String s2 </span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)"> </span><span style="color: rgb(0,0,255)">new</span><span style="color: rgb(0,0,0)"> String(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">s1</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">) ;<br />
上面创建了几个String对象</span><span style="color: rgb(0,0,0)">?</span><span style="color: rgb(0,0,0)"><br />
答案:3个 ,编译期Constant Pool中创建1个,运行期heap中创建2个.</span></p>
<p><br />
</p>
</span>
<img src ="http://www.blogjava.net/aoneany/aggbug/304020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aoneany/" target="_blank">沙漠中的鱼</a> 2009-11-28 13:54 <a href="http://www.blogjava.net/aoneany/articles/304020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>注释-thinking in java(读书笔记)</title><link>http://www.blogjava.net/aoneany/articles/303405.html</link><dc:creator>沙漠中的鱼</dc:creator><author>沙漠中的鱼</author><pubDate>Mon, 23 Nov 2009 16:01:00 GMT</pubDate><guid>http://www.blogjava.net/aoneany/articles/303405.html</guid><wfw:comment>http://www.blogjava.net/aoneany/comments/303405.html</wfw:comment><comments>http://www.blogjava.net/aoneany/articles/303405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aoneany/comments/commentRss/303405.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aoneany/services/trackbacks/303405.html</trackback:ping><description><![CDATA[<p>注释为特殊的interface类型，他以interface前面加一个@符号，他可以定义在任何地方（类，属性，方法）</p>
<p>@Target(ElementType.TYPE)（可选）<br />
@interface ClassInfo {<br />
&nbsp;&nbsp;&nbsp; String created() default "Jan 31 2005";<br />
&nbsp;&nbsp;&nbsp; String createdBy();<br />
&nbsp;&nbsp;&nbsp; String lastModified();<br />
&nbsp;&nbsp;&nbsp; String lastModifiedBy();<br />
&nbsp;&nbsp;&nbsp; Revision revision();<br />
}<br />
ElementType.TYPE描绘支持的范围<br />
ANNOTATION_TYPE, CONSTRUCTOR, METHOD, FIELD, LOCAL_VARIABLE, PARAMETER, PACKAGE, and TYPE<br />
他支持定义默认值<br />
它可以有0个元素</p>
<p>@ClassInfo (<br />
&nbsp;&nbsp;&nbsp; created = "Jan 31 2005",<br />
&nbsp;&nbsp;&nbsp; createdBy = "James Gosling",<br />
&nbsp;&nbsp;&nbsp; lastModified = "Jan 31 2005",<br />
&nbsp;&nbsp;&nbsp; lastModifiedBy = "James Gosling",<br />
&nbsp;&nbsp;&nbsp; revision = @Revision<br />
)<br />
public class Foo {<br />
&nbsp;&nbsp;&nbsp; // ...<br />
}</p>
<img src ="http://www.blogjava.net/aoneany/aggbug/303405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aoneany/" target="_blank">沙漠中的鱼</a> 2009-11-24 00:01 <a href="http://www.blogjava.net/aoneany/articles/303405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初使化和清除-thinking in java读书笔记</title><link>http://www.blogjava.net/aoneany/articles/303251.html</link><dc:creator>沙漠中的鱼</dc:creator><author>沙漠中的鱼</author><pubDate>Sun, 22 Nov 2009 11:08:00 GMT</pubDate><guid>http://www.blogjava.net/aoneany/articles/303251.html</guid><wfw:comment>http://www.blogjava.net/aoneany/comments/303251.html</wfw:comment><comments>http://www.blogjava.net/aoneany/articles/303251.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aoneany/comments/commentRss/303251.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aoneany/services/trackbacks/303251.html</trackback:ping><description><![CDATA[<p><strong>finalize()</strong></p>
<p>工作原理应该是这样的：一旦垃圾收集器准备好释放对象占用的存储空间，它首先调用finalize()，而且只有在下一次垃圾收集过程中，才会真正回收对象的内存。</p>
<p>为什么要使用finalize()方法</p>
<p>因为java内存回收之能回收自己java自己创建的对象，而对调用未java的对象，如C,C++创建的对象，不能自动的清除，可以通过在finalize()方法，将这些对象显示的清除。</p>
<p>finalize()最有用处的地方之一是观察垃圾收集的过程。</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_12_692_Open_Image" onclick="this.style.display='none'; Codehighlighter1_12_692_Open_Text.style.display='none'; Codehighlighter1_12_692_Closed_Image.style.display='inline'; Codehighlighter1_12_692_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_12_692_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_12_692_Closed_Text.style.display='none'; Codehighlighter1_12_692_Open_Image.style.display='inline'; Codehighlighter1_12_692_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Chair&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_12_692_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_12_692_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;gcrun&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;f&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;created&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;finalized&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i;<br />
<img id="Codehighlighter1_147_233_Open_Image" onclick="this.style.display='none'; Codehighlighter1_147_233_Open_Text.style.display='none'; Codehighlighter1_147_233_Closed_Image.style.display='inline'; Codehighlighter1_147_233_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_147_233_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_147_233_Closed_Text.style.display='none'; Codehighlighter1_147_233_Open_Image.style.display='inline'; Codehighlighter1_147_233_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;Chair()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_147_233_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_147_233_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">created;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(created&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">47</span><span style="color: #000000">)&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Created&nbsp;47</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_263_690_Open_Image" onclick="this.style.display='none'; Codehighlighter1_263_690_Open_Text.style.display='none'; Codehighlighter1_263_690_Closed_Image.style.display='inline'; Codehighlighter1_263_690_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_263_690_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_263_690_Closed_Text.style.display='none'; Codehighlighter1_263_690_Open_Image.style.display='inline'; Codehighlighter1_263_690_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;finalize()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_263_690_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_263_690_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_280_421_Open_Image" onclick="this.style.display='none'; Codehighlighter1_280_421_Open_Text.style.display='none'; Codehighlighter1_280_421_Closed_Image.style.display='inline'; Codehighlighter1_280_421_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_280_421_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_280_421_Closed_Text.style.display='none'; Codehighlighter1_280_421_Open_Image.style.display='inline'; Codehighlighter1_280_421_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">gcrun)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_280_421_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_280_421_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcrun&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Beginning&nbsp;to&nbsp;finalize&nbsp;after&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;created&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Chairs&nbsp;have&nbsp;been&nbsp;created</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_439_570_Open_Image" onclick="this.style.display='none'; Codehighlighter1_439_570_Open_Text.style.display='none'; Codehighlighter1_439_570_Closed_Image.style.display='inline'; Codehighlighter1_439_570_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_439_570_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_439_570_Closed_Text.style.display='none'; Codehighlighter1_439_570_Open_Image.style.display='inline'; Codehighlighter1_439_570_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(i&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">47</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_439_570_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_439_570_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Finalizing&nbsp;Chair&nbsp;#47,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Setting&nbsp;flag&nbsp;to&nbsp;stop&nbsp;Chair&nbsp;creation</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;finalized</span><span style="color: #000000">++</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(finalized&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;created)<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">All&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;finalized&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;finalized</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img id="Codehighlighter1_716_1455_Open_Image" onclick="this.style.display='none'; Codehighlighter1_716_1455_Open_Text.style.display='none'; Codehighlighter1_716_1455_Closed_Image.style.display='inline'; Codehighlighter1_716_1455_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_716_1455_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_716_1455_Closed_Text.style.display='none'; Codehighlighter1_716_1455_Open_Image.style.display='inline'; Codehighlighter1_716_1455_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Garbage&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_716_1455_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_716_1455_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_759_1453_Open_Image" onclick="this.style.display='none'; Codehighlighter1_759_1453_Open_Text.style.display='none'; Codehighlighter1_759_1453_Closed_Image.style.display='inline'; Codehighlighter1_759_1453_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_759_1453_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_759_1453_Closed_Text.style.display='none'; Codehighlighter1_759_1453_Open_Image.style.display='inline'; Codehighlighter1_759_1453_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_759_1453_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_759_1453_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_786_920_Open_Image" onclick="this.style.display='none'; Codehighlighter1_786_920_Open_Text.style.display='none'; Codehighlighter1_786_920_Closed_Image.style.display='inline'; Codehighlighter1_786_920_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_786_920_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_786_920_Closed_Text.style.display='none'; Codehighlighter1_786_920_Open_Image.style.display='inline'; Codehighlighter1_786_920_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(args.length&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_786_920_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_786_920_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(</span><span style="color: #000000">"</span><span style="color: #000000">Usage:&nbsp;\n</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">java&nbsp;Garbage&nbsp;before\n&nbsp;&nbsp;or:\n</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">java&nbsp;Garbage&nbsp;after</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_942_1005_Open_Image" onclick="this.style.display='none'; Codehighlighter1_942_1005_Open_Text.style.display='none'; Codehighlighter1_942_1005_Closed_Image.style.display='inline'; Codehighlighter1_942_1005_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_942_1005_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_942_1005_Closed_Text.style.display='none'; Codehighlighter1_942_1005_Open_Image.style.display='inline'; Codehighlighter1_942_1005_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">Chair.f)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_942_1005_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_942_1005_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Chair();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(</span><span style="color: #000000">"</span><span style="color: #000000">To&nbsp;take&nbsp;up&nbsp;space</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">After&nbsp;all&nbsp;Chairs&nbsp;have&nbsp;been&nbsp;created:\n</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">total&nbsp;created&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;Chair.created&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;total&nbsp;finalized&nbsp;=&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;Chair.finalized);<br />
<img id="Codehighlighter1_1205_1345_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1205_1345_Open_Text.style.display='none'; Codehighlighter1_1205_1345_Closed_Image.style.display='inline'; Codehighlighter1_1205_1345_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1205_1345_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1205_1345_Closed_Text.style.display='none'; Codehighlighter1_1205_1345_Open_Image.style.display='inline'; Codehighlighter1_1205_1345_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(args[</span><span style="color: #000000">0</span><span style="color: #000000">].equals(</span><span style="color: #000000">"</span><span style="color: #000000">before</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1205_1345_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1205_1345_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">gc():</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.gc();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">runFinalization():</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.runFinalization();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">bye!</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(args[</span><span style="color: #000000">0</span><span style="color: #000000">].equals(</span><span style="color: #000000">"</span><span style="color: #000000">after</span><span style="color: #000000">"</span><span style="color: #000000">))<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.runFinalizersOnExit(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">/:~</span></div>
<p>输入结果为：</p>
<pre>Created 47
Beginning to finalize after 8694 Chairs have been created
Finalizing Chair #47, Setting flag to stop Chair creation
After all Chairs have been created:
total created = 9834, total finalized = 108
bye!</pre>
<pre><strong>成员初使化</strong></pre>
<pre>可以方法赋值初使化成员</pre>
<pre>下面这样做是合法的：<br />
<br />
class CInit {<br />
int i = f();<br />
int j = g(i);<br />
//...<br />
}<br />
<br />
但下面这样做是非法的：<br />
<br />
class CInit {<br />
int j = g(i);<br />
int i = f();<br />
//...<br />
}<br />
</pre>
<pre><strong>构造器初使化</strong></pre>
<pre>class Counter {<br />
int i;<br />
Counter() { i = 7; }</pre>
<pre>i首先会初始化成零，然后变成7。</pre>
<pre><strong>1.初使化顺序</strong></pre>
<pre>先初使化成员，然后执行构造器内容</pre>
<pre><strong>2.静态数据初使化</strong></pre>
<pre>&nbsp;
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_17_192_Open_Image" onclick="this.style.display='none'; Codehighlighter1_17_192_Open_Text.style.display='none'; Codehighlighter1_17_192_Closed_Image.style.display='inline'; Codehighlighter1_17_192_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_17_192_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_17_192_Closed_Text.style.display='none'; Codehighlighter1_17_192_Open_Image.style.display='inline'; Codehighlighter1_17_192_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Dog&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_17_192_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_17_192_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&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;Dog&nbsp;sDog</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Dog(</span><span style="color: #000000">"</span><span style="color: #000000">static&nbsp;dog</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_89_119_Open_Image" onclick="this.style.display='none'; Codehighlighter1_89_119_Open_Text.style.display='none'; Codehighlighter1_89_119_Closed_Image.style.display='inline'; Codehighlighter1_89_119_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_89_119_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_89_119_Closed_Text.style.display='none'; Codehighlighter1_89_119_Open_Image.style.display='inline'; Codehighlighter1_89_119_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Dog(String&nbsp;str)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_89_119_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_89_119_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(str);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_160_190_Open_Image" onclick="this.style.display='none'; Codehighlighter1_160_190_Open_Text.style.display='none'; Codehighlighter1_160_190_Closed_Image.style.display='inline'; Codehighlighter1_160_190_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_160_190_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_160_190_Closed_Text.style.display='none'; Codehighlighter1_160_190_Open_Image.style.display='inline'; Codehighlighter1_160_190_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&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)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_160_190_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_160_190_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dog&nbsp;dog</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Dog(</span><span style="color: #000000">"</span><span style="color: #000000">init</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div>
</pre>
<pre>输入出结果</pre>
<pre>static dog<br />
init</pre>
<p>(1) 类型为Dog的一个对象首次创建时，或者Dog类的static方法／static字段首次访问时，Java解释器必须找到Dog.class（在事先设好的类路径里搜索）。<br />
(2) 找到Dog.class后（它会创建一个Class对象，这将在后面学到），它的所有static初始化模块都会运行。因此，static初始化仅发生一次——在Class对象首次载入的时候。<br />
(3) 创建一个new Dog()时，Dog对象的构建进程首先会在内存堆（Heap）里为一个Dog对象分配足够多的存储空间。<br />
(4) 这种存储空间会清为零，将Dog中的所有基本类型设为它们的默认值（零用于数字，以及boolean和char的等价设定）。<br />
(5) 进行字段定义时发生的所有初始化都会执行。<br />
(6) 执行构建器。</p>
<pre><strong>3.明确进行的静态初始化</strong></pre>
<pre><span id="Codehighlighter1_12_53_Open_Text">
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_12_71_Open_Image" onclick="this.style.display='none'; Codehighlighter1_12_71_Open_Text.style.display='none'; Codehighlighter1_12_71_Closed_Image.style.display='inline'; Codehighlighter1_12_71_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_12_71_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_12_71_Closed_Text.style.display='none'; Codehighlighter1_12_71_Open_Image.style.display='inline'; Codehighlighter1_12_71_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Spoon&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_12_71_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_12_71_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_45_69_Open_Image" onclick="this.style.display='none'; Codehighlighter1_45_69_Open_Text.style.display='none'; Codehighlighter1_45_69_Closed_Image.style.display='inline'; Codehighlighter1_45_69_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_45_69_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_45_69_Closed_Text.style.display='none'; Codehighlighter1_45_69_Open_Image.style.display='inline'; Codehighlighter1_45_69_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_45_69_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_45_69_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">47</span><span style="color: #000000">;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div>
</span></pre>
<pre>这段代码仅执行一次——首次生成那个类的一个对象时，或者首次访问属于那个类的一个static成员时</pre>
<pre><strong>4.非静态实例的初始化</strong></pre>
<pre>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_10_83_Open_Image" onclick="this.style.display='none'; Codehighlighter1_10_83_Open_Text.style.display='none'; Codehighlighter1_10_83_Closed_Image.style.display='inline'; Codehighlighter1_10_83_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_10_83_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_10_83_Closed_Text.style.display='none'; Codehighlighter1_10_83_Open_Image.style.display='inline'; Codehighlighter1_10_83_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Mug&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_10_83_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_10_83_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_30_81_Open_Image" onclick="this.style.display='none'; Codehighlighter1_30_81_Open_Text.style.display='none'; Codehighlighter1_30_81_Closed_Image.style.display='inline'; Codehighlighter1_30_81_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_30_81_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_30_81_Closed_Text.style.display='none'; Codehighlighter1_30_81_Open_Image.style.display='inline'; Codehighlighter1_30_81_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;Mug(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;marker)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_30_81_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_30_81_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Mug(</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;marker&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img id="Codehighlighter1_104_349_Open_Image" onclick="this.style.display='none'; Codehighlighter1_104_349_Open_Text.style.display='none'; Codehighlighter1_104_349_Closed_Image.style.display='inline'; Codehighlighter1_104_349_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_104_349_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_104_349_Closed_Text.style.display='none'; Codehighlighter1_104_349_Open_Image.style.display='inline'; Codehighlighter1_104_349_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Mugs&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_104_349_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_104_349_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;Mug&nbsp;c1;<br />
<img id="Codehighlighter1_118_185_Open_Image" onclick="this.style.display='none'; Codehighlighter1_118_185_Open_Text.style.display='none'; Codehighlighter1_118_185_Closed_Image.style.display='inline'; Codehighlighter1_118_185_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_118_185_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_118_185_Closed_Text.style.display='none'; Codehighlighter1_118_185_Open_Image.style.display='inline'; Codehighlighter1_118_185_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_118_185_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_118_185_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;c1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Mug(</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">c1&nbsp;initialized</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_196_234_Open_Image" onclick="this.style.display='none'; Codehighlighter1_196_234_Open_Text.style.display='none'; Codehighlighter1_196_234_Closed_Image.style.display='inline'; Codehighlighter1_196_234_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_196_234_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_196_234_Closed_Text.style.display='none'; Codehighlighter1_196_234_Open_Image.style.display='inline'; Codehighlighter1_196_234_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;Mugs()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_196_234_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_196_234_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Mugs()</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_277_347_Open_Image" onclick="this.style.display='none'; Codehighlighter1_277_347_Open_Text.style.display='none'; Codehighlighter1_277_347_Closed_Image.style.display='inline'; Codehighlighter1_277_347_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_277_347_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_277_347_Closed_Text.style.display='none'; Codehighlighter1_277_347_Open_Image.style.display='inline'; Codehighlighter1_277_347_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_277_347_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_277_347_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Inside&nbsp;main()</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;Mugs&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Mugs();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div>
<br />
输入出结果</pre>
<pre>Inside main()<br />
Mug(1)<br />
c1 initialized<br />
Mugs()</pre>
<pre>&nbsp;</pre>
<img src ="http://www.blogjava.net/aoneany/aggbug/303251.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aoneany/" target="_blank">沙漠中的鱼</a> 2009-11-22 19:08 <a href="http://www.blogjava.net/aoneany/articles/303251.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>