﻿<?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-kermart</title><link>http://www.blogjava.net/kermart/</link><description>k</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 14:06:39 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 14:06:39 GMT</pubDate><ttl>60</ttl><item><title>Eclipse版本、插件介绍 </title><link>http://www.blogjava.net/kermart/archive/2012/07/26/384064.html</link><dc:creator>kermart</dc:creator><author>kermart</author><pubDate>Thu, 26 Jul 2012 06:32:00 GMT</pubDate><guid>http://www.blogjava.net/kermart/archive/2012/07/26/384064.html</guid><wfw:comment>http://www.blogjava.net/kermart/comments/384064.html</wfw:comment><comments>http://www.blogjava.net/kermart/archive/2012/07/26/384064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kermart/comments/commentRss/384064.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kermart/services/trackbacks/384064.html</trackback:ping><description><![CDATA[<div><span style="color: #3333ff">Eclipse IDE for Java Developers 是Eclipse的platform加上JDT插件，用来java开发的</span></div>
<p><span style="color: #3333ff">Eclipse IDE for Java EE Developers 应该是Eclipse的platform加上WTP插件，用来java企业级开发的</span></p>
<p><span style="color: #3333ff">Eclipse IDE for C/C++ Developers 是Eclipse的platform加上CDT插件，用来做C和C++开发的</span></p>
<p><span style="color: #3333ff">Eclipse for RCP/Plug-in Developers 是Eclipse的SDK，主要用来插件开发</span></p>
<p><span style="color: #3333ff">Eclipse Classic 就是原来的Eclipse，是Eclipse的基本版，还是主要用来开发java</span></p>
<p>Eclipse的功能是通过插件来实现的，下面了解主要插件的功能。</p>
<p><span style="color: #ff0000">JDT（Java Development Tools）：Java设计工具。<br />PDT：用于开发PHP语言的工具。<br />C/C++ IDE：用于设计C/C++项目。<br />PDE（Plugin Development Environment）：插件设计环境，用于设计自定义插件。<br />Platform：Eclipse的核心运行平台。<br />EMF（Eclipse Modeling Framework）：Eclipse模型框架。<br />GEF（Graphical Editor Framework）：图形编辑框架，用于辅助图形设计。<br />UML2：UML编辑器。</span></p>
<p><span style="color: #ff0000">WTP(Web Tools Platform )：是一个开发J2EE Web应用程序的工具集。WTP包含以下工具：</span><br />&nbsp;&nbsp;&nbsp;&nbsp; * 一个源码编辑器可以用来编辑HTML, Javascript, CSS, JSP, SQL, XML, DTD, XSD, 和WSDL。<br />&nbsp;&nbsp;&nbsp;&nbsp; * 一个图形编辑器用来编辑XSD与WSDL。<br />&nbsp; &nbsp;&nbsp; * J2EE项目构建器和一个J2EE向导工具。<br />&nbsp;&nbsp; &nbsp; * 一个Web服务创建向导和管理器，和WS-I 测试工具。<br />&nbsp;&nbsp;&nbsp;&nbsp; * 一个数据库访问，查询工具等。<br />　 WTP由两个子项目构成:WST(Web标准工具集) 与JST(J2EE标准工具集)<br /><span style="color: #ff0000">VE（Visual Editor）：可视化图形编辑组件，用于提供AWT/SWT/Swing的图形编辑。<br />J2EE Standard Tools：用于设计J2EE应用程序的插件。<br />WST-Web Standards Tools：用于设计Web应用程序的插件。<br />Eclipse Test and Performance Tools Platform：用于调试，单元测试和测试项目的插件。<br />Business Intelligence and Reporting Tools（BIRT）：商业智能和商业报表开发插件，它包括ChartEngine（图形引擎）、Report Framework（报表框架）、Runtime ENV（运行时环境）。<br />AJDT-AspectJ Development Tools：用于开发AOP（面向方面编程）的开发Eclipse插件。<br />AspectJ：用于开发AOP的开发环境。<br />CME（Concern Manipulation Environment）：用于开发AOP的一组可视化工具插件。</span></p><img src ="http://www.blogjava.net/kermart/aggbug/384064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kermart/" target="_blank">kermart</a> 2012-07-26 14:32 <a href="http://www.blogjava.net/kermart/archive/2012/07/26/384064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分层Pane结构与Swing组件高级特性的实现 </title><link>http://www.blogjava.net/kermart/archive/2012/07/26/384032.html</link><dc:creator>kermart</dc:creator><author>kermart</author><pubDate>Thu, 26 Jul 2012 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/kermart/archive/2012/07/26/384032.html</guid><wfw:comment>http://www.blogjava.net/kermart/comments/384032.html</wfw:comment><comments>http://www.blogjava.net/kermart/archive/2012/07/26/384032.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kermart/comments/commentRss/384032.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kermart/services/trackbacks/384032.html</trackback:ping><description><![CDATA[&nbsp; 这个题目起的有点难懂，但也实在想不出更好的题目来。所谓分层Pane结构是指JFrame/JApplet/JDialog等Swing顶层容器的JRootPane/JLayeredPane/GlassPane/ContentPane结构。所谓Swing组件高级特性其实是指某些组件的特殊功能的实现，比如弹出菜单、Tooltip、JComboBox的下拉窗口、Drag and Drop实现、Docking Pallete窗口等等。这些特性同普通组件不同，它们往往需要动态的变化、覆盖其他组件，它们之间存在一定层次关系。那么Swing中是怎么样实现这些功能呢？ 
<div>　　一直以来想写一篇文章来描述这个关键结构，但每次总被自己的语言表达能力所限制。Swing这个精巧结构是我叹服的原因之一。虽然一般的GUI系统设计原理我都知道，但是细节如此处精细却不是一开始就能清楚的。我在2000年以前曾经写过大量基于AWT Canvas的自定义组件，当时认为Swing的自定义组件也不过如此，原理不过也是给我一个刷子，我给你画出来。但是上述所说的这些特性，却从来没能实现过。我想过很多方法，做过很多实验，但终究没有想透这一层。之后某次偶然机会，看到了下面这张著名的图，使我豁然开朗。让我又一次理解了创新需要跳出旧的思维模式勇气和智慧。</div>
<div><span><img alt="" src="http://hi.csdn.net/attachment/201109/27/0_1317103945qgzV.gif" /><br /></span></div>
<div>　　简单来说Swing中这些顶层容器的多Pane结构是实现这些特性的基础。这些Pane实际是一些特殊的JComponent，它们之间存在包含被包含、覆盖被覆盖的树状多层次结构。我重新画了上面这张图，使得其更具体、更直观，更容易理解些：</div>
<div></div>
<div><span><img alt="" src="http://hi.csdn.net/attachment/201109/27/0_13171039907302.gif" /><br />其实有了这张图，加上图形系统中Z-order的概念，就不难理解并实现上面提到的特性。Z-order概念和图形学中Z深度是一致的。离观察点近的物体总是会遮挡离观察点远的物体。物体所在法平面离观察点的距离就是所谓Z深度。Swing中通过先画出Z-order远（小）的组件，再画Z-order近（大）的组件的方法实现组件之间的遮挡关系。每个组件所在平面的都有一个数字描述其位置，这个位置同三维坐标系中的Z轴类似，离观察者越近，坐标越大： 
<div></div>
<div><span><img alt="" src="http://hi.csdn.net/attachment/201109/27/0_1317104005G0Hj.gif" /><br /></span></div>
<div>　　Swing的顶层容器都包含有一个JRootPane，该JRootPane是一切Swing组件起点。JRootPane中包含了一个JLayeredPane和一个GlassPane。GlassPane和JLayeredPane都是充满JRootPane的。GlassPane缺省情况下是不可见的，因此我们看到都是JLayeredPane。GlassPane如果是可见的，它Z-order大于任何其他组件，因此它会覆盖住整个窗口，使得所有的鼠标事件都被它截获。另外通常可见情况下它是透明的，因此你能仍然看到JLayeredPane上面的一切，但是JLayeredPane上面的组件都得不到鼠标事件。<br />GlassPane这个奇怪的组件主要是用来实现Drag &amp; Drop以及跨组件渲染用的。NetBeans和Eclipse中哪种常见的Docking Frame的实现就和这种组件相关。这些工程、文件、源代码的窗口其实不过是普通的Swing组件，它们本身并不能实现这种拖拽功能。鼠标在它们上面标题栏区域按下之后，标题栏组件会检测到这种事件，经过粘连性判断后，如果发现这些鼠标事件目的是拖拽窗口，这种Docking系统就会将拖拽区域（即所谓的ClientArea)的GlassPane设置为可见，于是下面的一些列拖拽鼠标事件就被这个GlassPane所接管了过去。GlassPane是覆盖于应用程序ClientArea的透明组件，它处理这些事件时计算出当前鼠标位置所蕴含着的拖拽动作，并根据这些动作画出相应的焦点矩形。NetBeans的Docking Framework一个拖拽过程如下图所示.注意GlassPane是背景透明的，所以可以在上面画背景透明的焦点矩形： 
<div></div>
<div><span><img alt="" src="http://hi.csdn.net/attachment/201109/27/0_1317104059pGtc.gif" /><br /></span>　　JLayeredPane是实现弹出式窗口或类似Pallete浮动窗口的主要组件。如同它的名字一样，它将自己的内部结构也分成许多亚层。在使用它的add(Component, Object)方法加入组件时，第二个参数是一个Integer值，这个值决定了加入的层。这个值相当于前面所说的Z-order值。目前主要有下面几个预定义值：</div></div>
<div>public final static Integer DEFAULT_LAYER = new Integer(0); 
<div><span style="font-family: 宋体">这层加入的缺省层。<br />　　public final static Integer PALETTE_LAYER = new Integer(100);</span></div>
<div><span style="font-family: 宋体">这层是定义Palette窗口的层。那种浮动选项窗口属于这一层。<br />　　public final static Integer MODAL_LAYER = new Integer(200);</span></div>
<div><span style="font-family: 宋体">这层是模态对话框的层。这个模态对话框应该是指JInternalFrame的模态对话框，而不是JDialog。<br />　　public final static Integer POPUP_LAYER = new Integer(300);</span></div>
<div><span style="font-family: 宋体">这层是菜单、下拉框窗口、Tooltip等窗口浮动的层。<br />　　public final static Integer DRAG_LAYER = new Integer(400);</span></div>
<div>这一层是拖拽层，组件可以在这一层被托拽。</div>
<div><span style="font-family: 宋体">　　public final static Integer FRAME_CONTENT_LAYER = new Integer(-30000);</span></div>
<div>这一层是ContentPane和MenuBar所在的层。注意它非常小，前面所有层的组件都会覆盖这一层的组件。我们知道ContentPane是所有应用程序组件所在的地方。</div>
<div>　　JLayeredPane直接包含有ContentPane组件。应用程序如果定了MenuBar，JLayeredPane还包含MenuBar。注意JLayeredPane本身没有布局管理器，它对组件的布局是由它的父容器JRootPane的布局管理器RootLayout来完成的。简单来说，所在层数值小的组件有可能被高层组件所覆盖。Swing将不同类型的组件放置在不同层面上，就实现了文章一开始提到的特性：菜单、浮动窗口、下拉框窗口和Tooltip等。当然这些窗口有可能不是JLayeredPane上的轻量级Swing组件，当它们的边界超过顶层容器的窗口时，这些窗口的就变成了重量级AWT窗口。这在上一篇文章《<a href="http://blog.sina.com.cn/u/4b6047bc01000a6z" target="_blank">如何混排Swing和AWT组件</a>》<span style="font-family: 宋体">中已经提到过。</span></div>
<div>　　下面是这些Pane组件之间的树状包含关系图：</div>
<div></div>
<div><span><img alt="" src="http://hi.csdn.net/attachment/201109/27/0_1317104087sqaE.gif" /><br /></span>　　本文的目的是讲述Swing的这种组件层次结构，并不是讲述如何使用JLayeredPane和GlassPane来实现某中特殊的功能。如果需要学习如何使用它们实现某些特殊效果，Java Tutorial的Swing部分提供了详尽的编程资料。Java Tutorial的Swing部分编程在：</div>
<div><a href="http://java.sun.com/docs/books/tutorial/uiswing/index.html"><span style="font-family: 宋体">http://java.sun.com/docs/books/tutorial/uiswing/index.html</span></a></div>
<div>　　如何使用RootPane、GlassPane和JLayeredPane分别见下面的章节：</div>
<div><a href="http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.html"><span style="font-family: 宋体">http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.html</span></a></div>
<div>
<p><a href="http://java.sun.com/docs/books/tutorial/uiswing/components/layeredpane.html"><span style="font-family: 宋体">http://java.sun.com/docs/books/tutorial/uiswing/components/layeredpane.html</span></a></p></div></div></span></div><img src ="http://www.blogjava.net/kermart/aggbug/384032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kermart/" target="_blank">kermart</a> 2012-07-26 11:21 <a href="http://www.blogjava.net/kermart/archive/2012/07/26/384032.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NetBeans中自动生成JFrame的布局管理器 </title><link>http://www.blogjava.net/kermart/archive/2012/07/26/384030.html</link><dc:creator>kermart</dc:creator><author>kermart</author><pubDate>Thu, 26 Jul 2012 03:02:00 GMT</pubDate><guid>http://www.blogjava.net/kermart/archive/2012/07/26/384030.html</guid><wfw:comment>http://www.blogjava.net/kermart/comments/384030.html</wfw:comment><comments>http://www.blogjava.net/kermart/archive/2012/07/26/384030.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kermart/comments/commentRss/384030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kermart/services/trackbacks/384030.html</trackback:ping><description><![CDATA[<span style="font-family: comic sans ms,sans-serif">NetBeans自动生成的JFrame窗体默认使用了自由设计的布局GroupLayout。</span> 
<p><span style="font-family: comic sans ms,sans-serif"><span style="font-size: 16px"><br /></span></span></p>
<p><span style="font-family: comic sans ms,sans-serif"><span style="font-size: 16px">&nbsp;&nbsp; 默认添加的面板（JPanel)等容器也都是用了自由布局GroupLayout方式。</span></span></p>
<p><span style="font-family: comic sans ms,sans-serif"><span style="font-size: 16px"><br /></span></span></p>
<p><span style="font-family: comic sans ms,sans-serif"><span style="font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;这将导致我们自己在代码中动态添加的组件无法显示在窗体上，因此需要手工重设容器的布局方式。（对需要动态添加的组件，可以先画一个面板，重设布局，再在面板上添加自己的组件。）（即重新弹出一个窗口）</span></span></p>
<p><span style="font-family: comic sans ms,sans-serif"><span style="font-size: 16px"><br /></span></span></p>
<p><span style="font-family: comic sans ms,sans-serif"><span style="font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp; NetBeans对GridBagLayout提供了可定制的布局，对GridLayout，BorderLayout,FlowLayout也有比较好的支持。绝对布局，需要NetBeans的包支持，不建议使用。</span></span></p>
<p><span style="font-family: comic sans ms,sans-serif"><span style="font-size: 16px"><br /></span></span></p>
<p><span style="font-family: comic sans ms,sans-serif"><span style="font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp; 对BoxLayout支持不够好，不可调间隙。自由布局和NULL布局，不会自动适应窗体变化。</span></span></p>
<p><span style="font-family: comic sans ms,sans-serif"><span style="font-size: 16px"><br /></span></span></p>
<p><span style="font-family: comic sans ms,sans-serif"><span style="font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp; 由于GridBagLayout布局在改变窗体大小的时候，可以基本保持原形，建议在NetBeans中设计窗体时使用GridBagLayout布局，也可以结合GridLayout,BorderLayout,FlowLayout进行布局</span></span></p><img src ="http://www.blogjava.net/kermart/aggbug/384030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kermart/" target="_blank">kermart</a> 2012-07-26 11:02 <a href="http://www.blogjava.net/kermart/archive/2012/07/26/384030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Freemarker </title><link>http://www.blogjava.net/kermart/archive/2012/07/20/383586.html</link><dc:creator>kermart</dc:creator><author>kermart</author><pubDate>Fri, 20 Jul 2012 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/kermart/archive/2012/07/20/383586.html</guid><wfw:comment>http://www.blogjava.net/kermart/comments/383586.html</wfw:comment><comments>http://www.blogjava.net/kermart/archive/2012/07/20/383586.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kermart/comments/commentRss/383586.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kermart/services/trackbacks/383586.html</trackback:ping><description><![CDATA[广大 Freemarker 用户可以更深入地了解一下 Freemarker&nbsp;&nbsp; <br />
<p><br />FreeMarker是一个模板引擎，一个基于模板生成文本输出的通用工具，使用纯Java编写</p>
<p>FreeMarker被设计用来生成HTML Web页面，特别是基于MVC模式的应用程序</p>
<p>虽然FreeMarker具有一些编程的能力，但通常由Java程序准备要显示的数据，由FreeMarker生成页面，通过模板显示准备的数据</p>
<p><br /><br />FreeMarker不是一个Web应用框架，而适合作为Web应用框架一个组件</p>
<p>FreeMarker与容器无关，因为它并不知道HTTP或Servlet；FreeMarker同样可以应用于非Web应用程序环境</p>
<p>FreeMarker更适合作为Model2框架（如Struts）的视图组件，你也可以在模板中使用JSP标记库</p>
<p>FreeMarker是免费的</p>
<p>而且你还可以通过<a href="http://www.oschina.net/p/freemarker+ide">Eclipse的插件</a>来编辑FreeMarker，经过验证，FreeMarker 最好的 Eclipse 编辑插件是 <a href="http://www.oschina.net/p/jbosstools">JBoss Tools</a>。</p>
<p><span style="font-size: small"><strong>FreeMarker</strong><strong>特性</strong><strong></strong></span></p>
<p><strong><span style="font-size: small">1、通用目标</span></strong></p>
<p><span style="font-size: small">能够生成各种文本：HTML、XML、RTF、Java源代码等等</span></p>
<p><span style="font-size: small">易于嵌入到你的产品中：轻量级；不需要Servlet环境</span></p>
<p><span style="font-size: small">插件式模板载入器：可以从任何源载入模板，如本地文件、数据库等等</span></p>
<p><span style="font-size: small">你可以按你所需生成文本：保存到本地文件；作为Email发送；从Web应用程序发送它返回给Web浏览器</span></p>
<p><strong><span style="font-size: small">2、强大的模板语言</span></strong></p>
<p><span style="font-size: small">所有常用的指令：include、if/elseif/else、循环结构</span></p>
<p><span style="font-size: small">在模板中创建和改变变量</span></p>
<p><span style="font-size: small">几乎在任何地方都可以使用复杂表达式来指定值</span></p>
<p><span style="font-size: small">命名的宏，可以具有位置参数和嵌套内容</span></p>
<p><span style="font-size: small">名字空间有助于建立和维护可重用的宏库，或者将一个大工程分成模块，而不必担心名字冲突</span></p>
<p><span style="font-size: small">输出转换块：在嵌套模板片段生成输出时，转换HTML转义、压缩、语法高亮等等；你可以定义自己的转换</span></p>
<p><strong><span style="font-size: small">3、通用数据模型</span></strong></p>
<p><span style="font-size: small">FreeMarker不是直接反射到Java对象，Java对象通过插件式对象封装，以变量方式在模板中显示</span></p>
<p><span style="font-size: small">你可以使用抽象（接口）方式表示对象（JavaBean、XML文档、SQL查询结果集等等），告诉模板开发者使用方法，使其不受技术细节的打扰</span></p>
<p><strong><span style="font-size: small">4、为Web准备</span></strong></p>
<p><span style="font-size: small">在模板语言中内建处理典型Web相关任务（如HTML转义）的结构</span></p>
<p><span style="font-size: small">能够集成到Model2 Web应用框架中作为JSP的替代</span></p>
<p><span style="font-size: small">支持JSP标记库</span></p>
<p><span style="font-size: small">为MVC模式设计：分离可视化设计和应用程序逻辑；分离页面设计员和程序员</span></p>
<p><strong><span style="font-size: small">5、智能的国际化和本地化</span></strong></p>
<p><span style="font-size: small">字符集智能化（内部使用UNICODE）</span></p>
<p><span style="font-size: small">数字格式本地化敏感</span></p>
<p><span style="font-size: small">日期和时间格式本地化敏感</span></p>
<p><span style="font-size: small">非US字符集可以用作标识（如变量名）</span></p>
<p><span style="font-size: small">多种不同语言的相同模板</span></p>
<p><strong><span style="font-size: small">6、强大的XML处理能力</span></strong></p>
<p><span style="font-size: small">&lt;#recurse&gt; 和&lt;#visit&gt;指令（2.3版本）用于递归遍历XML树</span></p>
<p><span style="font-size: small">在模板中清楚和直觉的访问XML对象模型</span></p><br /><br /><img src ="http://www.blogjava.net/kermart/aggbug/383586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kermart/" target="_blank">kermart</a> 2012-07-20 11:46 <a href="http://www.blogjava.net/kermart/archive/2012/07/20/383586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 中的 各种变量、代码块执行时机</title><link>http://www.blogjava.net/kermart/archive/2012/07/10/382700.html</link><dc:creator>kermart</dc:creator><author>kermart</author><pubDate>Tue, 10 Jul 2012 05:00:00 GMT</pubDate><guid>http://www.blogjava.net/kermart/archive/2012/07/10/382700.html</guid><wfw:comment>http://www.blogjava.net/kermart/comments/382700.html</wfw:comment><comments>http://www.blogjava.net/kermart/archive/2012/07/10/382700.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kermart/comments/commentRss/382700.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kermart/services/trackbacks/382700.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: Georgia"><strong>前言：</strong>这属于 java 的基础知识，你可以不了解，也可以不拿它当一回事，代码也一样能敲的顺畅；这是很久之前，我从 C++ 转 java 刚入门那会的看法，那会我坚持自己的理念：<br />&nbsp;&nbsp;&nbsp;&nbsp;重实践，讲运用，轻理论。当然，对同一样事物，在不同阶段也会有不一样的看法，这理念在某个时段已经不适合我，早就被抛弃了。不扯淡了，直接进入主题。<br /><br />java 中的变量大致分为 成员变量 和 局部变量 两大类。<br /><br /><strong>成员变量：<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;在类体里面定义的变量称为成员变量；<br />&nbsp;&nbsp;&nbsp;&nbsp;如果该成员变量有 static 关键字修饰，则该成员变量称为 <strong>静态变量</strong> 或 <strong>类变量</strong>；<br />&nbsp;&nbsp;&nbsp;&nbsp;如果该成员变量没有 static 关键字修饰，则该成员变量被称为 <strong>非静态变量</strong> 或 <strong>实例变量</strong>。<br /><br /><strong>局部变量：<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;形参、方法内定义的变量、代码块中定义的变量，都属于局部变量。<br /><br /><strong>类变量 （<strong>静态变量</strong>）<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;1. 可以向前引用<br />&nbsp;&nbsp;&nbsp;&nbsp;2. 变量属于类本身<br />&nbsp;&nbsp;&nbsp;&nbsp;3. 类变量不依赖类的实例，类变量只在初始化时候在栈内存中被分配一次空间，无论类的实例被创建几次，都不再为类变量分配空间<br />&nbsp;&nbsp;&nbsp;&nbsp;4. 通过类的任意一个实例来访问类变量，底层都将将其转为通过类本身来访问类变量，它们的效果是一样的<br />&nbsp;&nbsp;&nbsp;&nbsp;5. 一旦类变量的值被改变，通过类或类的任意一个实例来访问类变量，得到的都将是被改变后的值<br />&nbsp;&nbsp;&nbsp;&nbsp;6. 将在类的初始化之前初始化<br /><br /><strong>实例变量（非静态变量）<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;1. 不能向前引用，如果向前引用，则称为非法向前引用，这是不允许的<br />&nbsp;&nbsp;&nbsp;&nbsp;2. 变量属于类的实例对象<br />&nbsp;&nbsp;&nbsp;&nbsp;3. 随着类的实例被创建而分配内存空间<br /><br /><strong>非静态代码块<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;直接由 { } 包起来的代码，称为非静态代码块<br /><br /><strong>静态代码块<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;直接由 static {&nbsp;} 包起来的代码，称为静态代码块<br /><br /><strong>类变量（静态变量）、实例变量（非静态变量）、静态代码块、非静态代码块 的初始化时机<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;由 static 关键字修饰的（如：类变量[静态变量]、静态代码块）将在类被初始化创建实例对象之前被初始化，而且是按顺序从上到下依次被执行；<br />&nbsp;&nbsp;&nbsp;&nbsp;没有 static 关键字修饰的（如：实例变量[非静态变量]、非静态代码块）初始化实际上是会被提取到类的构造器中被执行的，但是会比类构造器中的<br />&nbsp;&nbsp;&nbsp;&nbsp;代码块优先执行到，其也是按顺序从上到下依次被执行。<br /><br />- 以上是本人在翻完 PDF 后的个人笔记和理解以及见解，不见得百分百对，以下附上本人测试示例代码，会更有说服性<br /><br />示例代码<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_1_192_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1_192_Open_Text.style.display='none'; Codehighlighter1_1_192_Closed_Image.style.display='inline'; Codehighlighter1_1_192_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_1_192_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1_192_Closed_Text.style.display='none'; Codehighlighter1_1_192_Open_Image.style.display='inline'; Codehighlighter1_1_192_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_1_192_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;3</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*&nbsp;-----------------------------------------<br /></span><span style="color: #008080">&nbsp;4</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*&nbsp;@文件:&nbsp;Statical.java<br /></span><span style="color: #008080">&nbsp;5</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*&nbsp;@作者:&nbsp;fancy<br /></span><span style="color: #008080">&nbsp;6</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*&nbsp;@邮箱:&nbsp;fancydeepin@yeah.net<br /></span><span style="color: #008080">&nbsp;7</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*&nbsp;@时间:&nbsp;2012-7-9<br /></span><span style="color: #008080">&nbsp;8</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*&nbsp;@描述:&nbsp;TEST<br /></span><span style="color: #008080">&nbsp;9</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;*&nbsp;-----------------------------------------<br /></span><span style="color: #008080">10</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /></span><span style="color: #008080">11</span><span style="color: #000000"><img id="Codehighlighter1_216_1051_Open_Image" onclick="this.style.display='none'; Codehighlighter1_216_1051_Open_Text.style.display='none'; Codehighlighter1_216_1051_Closed_Image.style.display='inline'; Codehighlighter1_216_1051_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_216_1051_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_216_1051_Closed_Text.style.display='none'; Codehighlighter1_216_1051_Open_Image.style.display='inline'; Codehighlighter1_216_1051_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Statical&nbsp;</span><span id="Codehighlighter1_216_1051_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Codehighlighter1_216_1051_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" /><br /></span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_220_268_Open_Image" onclick="this.style.display='none'; Codehighlighter1_220_268_Open_Text.style.display='none'; Codehighlighter1_220_268_Closed_Image.style.display='inline'; Codehighlighter1_220_268_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_220_268_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_220_268_Closed_Text.style.display='none'; Codehighlighter1_220_268_Open_Image.style.display='inline'; Codehighlighter1_220_268_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;</span><span id="Codehighlighter1_220_268_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">14</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;静态代码块<br /></span><span style="color: #008080">15</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;类变量(静态变量)可以向前引用(即：先引用,再定义)<br /></span><span style="color: #008080">16</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /></span><span style="color: #008080">17</span><span style="color: #000000"><img id="Codehighlighter1_278_369_Open_Image" onclick="this.style.display='none'; Codehighlighter1_278_369_Open_Text.style.display='none'; Codehighlighter1_278_369_Closed_Image.style.display='inline'; Codehighlighter1_278_369_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_278_369_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_278_369_Closed_Text.style.display='none'; Codehighlighter1_278_369_Open_Image.style.display='inline'; Codehighlighter1_278_369_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_278_369_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Codehighlighter1_278_369_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">fancydeepin</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;name&nbsp;的定义在使用之后</span><span style="color: #008000"><br /></span><span style="color: #008080">19</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">---&gt;&nbsp;&nbsp;静态代码块被执行&nbsp;&nbsp;&nbsp;&lt;---</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">21</span><span style="color: #000000"><img id="Codehighlighter1_372_534_Open_Image" onclick="this.style.display='none'; Codehighlighter1_372_534_Open_Text.style.display='none'; Codehighlighter1_372_534_Closed_Image.style.display='inline'; Codehighlighter1_372_534_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_372_534_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_372_534_Closed_Text.style.display='none'; Codehighlighter1_372_534_Open_Image.style.display='inline'; Codehighlighter1_372_534_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;</span><span id="Codehighlighter1_372_534_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">22</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;类变量(静态变量)在类的初始化之前初始化,无论类的实例将被创建多少个<br /></span><span style="color: #008080">23</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;类变量(静态变量)都将只在初始化时候在栈内存上分配一次空间<br /></span><span style="color: #008080">24</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;凡&nbsp;static&nbsp;修饰的,都将按位置被顺序执行，所以，<br /></span><span style="color: #008080">25</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;name&nbsp;的值最终输出&nbsp;fancy&nbsp;而不是上面的&nbsp;fancydeepin<br /></span><span style="color: #008080">26</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /></span><span style="color: #008080">27</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&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;String&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">fancy</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">类变量(静态变量)</span><span style="color: #008000"><br /></span><span style="color: #008080">28</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;mail&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">myEmail</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">实例变量(非静态变量)，定义时指定初始值，会比在构造器赋予值更早执行</span><span style="color: #008000"><br /></span><span style="color: #008080">29</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">30</span><span style="color: #000000"><img id="Codehighlighter1_677_758_Open_Image" onclick="this.style.display='none'; Codehighlighter1_677_758_Open_Text.style.display='none'; Codehighlighter1_677_758_Closed_Image.style.display='inline'; Codehighlighter1_677_758_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_677_758_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_677_758_Closed_Text.style.display='none'; Codehighlighter1_677_758_Open_Image.style.display='inline'; Codehighlighter1_677_758_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Statical() </span><span id="Codehighlighter1_677_758_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Codehighlighter1_677_758_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">31</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mail&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">fancydeepin@yeah.net</span><span style="color: #000000">"</span><span style="color: #000000">;<br /></span><span style="color: #008080">32</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">---&gt;&nbsp;构造器代码块被执行&nbsp;&lt;---</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">33</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">34</span><span style="color: #000000"><img id="Codehighlighter1_761_938_Open_Image" onclick="this.style.display='none'; Codehighlighter1_761_938_Open_Text.style.display='none'; Codehighlighter1_761_938_Closed_Image.style.display='inline'; Codehighlighter1_761_938_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_761_938_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_761_938_Closed_Text.style.display='none'; Codehighlighter1_761_938_Open_Image.style.display='inline'; Codehighlighter1_761_938_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;</span><span id="Codehighlighter1_761_938_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">35</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;非静态代码块<br /></span><span style="color: #008080">36</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;实际上，非静态代码块在类初始化创建实例时，将会被提取到类的构造器中，<br /></span><span style="color: #008080">37</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;但是，非静态代码块会比构造器中的代码块优先被执行<br /></span><span style="color: #008080">38</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;所以，mail&nbsp;最终输出的是类构造器中给定的值，也就是&nbsp;fancydeepin@yeah.net<br /></span><span style="color: #008080">39</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;而不是&nbsp;1525336367@qq.com，更不是&nbsp;myEmail<br /></span><span style="color: #008080">40</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /></span><span style="color: #008080">41</span><span style="color: #000000"><img id="Codehighlighter1_941_1019_Open_Image" onclick="this.style.display='none'; Codehighlighter1_941_1019_Open_Text.style.display='none'; Codehighlighter1_941_1019_Closed_Image.style.display='inline'; Codehighlighter1_941_1019_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_941_1019_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_941_1019_Closed_Text.style.display='none'; Codehighlighter1_941_1019_Open_Image.style.display='inline'; Codehighlighter1_941_1019_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_941_1019_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"></span><span id="Codehighlighter1_941_1019_Open_Text"><span style="color: #000000">{<br /></span><span style="color: #008080">42</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mail&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">1525336367@qq.com</span><span style="color: #000000">"</span><span style="color: #000000">;<br /></span><span style="color: #008080">43</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">---&gt;&nbsp;非静态代码块被执行&nbsp;&lt;---</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">44</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /></span><span style="color: #008080">45</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">46</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;getting&nbsp;and&nbsp;setting&nbsp;<br /></span><span style="color: #008080">47</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" /></span></div>
<p dir="ltr"></span><br />测试类示例代码</p>
<p dir="ltr"></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_1_40_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1_40_Open_Text.style.display='none'; Codehighlighter1_1_40_Closed_Image.style.display='inline'; Codehighlighter1_1_40_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_1_40_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1_40_Closed_Text.style.display='none'; Codehighlighter1_1_40_Open_Image.style.display='inline'; Codehighlighter1_1_40_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span id="Codehighlighter1_1_40_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;3</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;类变量(静态变量)在类被初始化创建实例之前被初始化<br /></span><span style="color: #008080">&nbsp;4</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@1&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">name&nbsp;---&gt;&gt;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;Statical.name);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;</span><span style="color: red">@1</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;7</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@1&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img id="Codehighlighter1_233_255_Open_Image" onclick="this.style.display='none'; Codehighlighter1_233_255_Open_Text.style.display='none'; Codehighlighter1_233_255_Closed_Image.style.display='inline'; Codehighlighter1_233_255_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_233_255_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_233_255_Closed_Text.style.display='none'; Codehighlighter1_233_255_Open_Image.style.display='inline'; Codehighlighter1_233_255_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_233_255_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;9</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;创建类的实例对象<br /></span><span style="color: #008080">10</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /></span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@6&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statical&nbsp;statical&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Statical();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;</span><span style="color: red">@6</span><span style="color: #008000"><br /></span><span style="color: #008080">13</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@6&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">14</span><span style="color: #000000"><img id="Codehighlighter1_433_475_Open_Image" onclick="this.style.display='none'; Codehighlighter1_433_475_Open_Text.style.display='none'; Codehighlighter1_433_475_Closed_Image.style.display='inline'; Codehighlighter1_433_475_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_433_475_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_433_475_Closed_Text.style.display='none'; Codehighlighter1_433_475_Open_Image.style.display='inline'; Codehighlighter1_433_475_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span id="Codehighlighter1_433_475_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">15</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;通过实例来访问类变量,底层将转化成通过类本身来访问类变量<br /></span><span style="color: #008080">16</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /></span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@2&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">name&nbsp;---&gt;&gt;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;statical.name);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;</span><span style="color: red">@2</span><span style="color: #008000"><br /></span><span style="color: #008080">19</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@2&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">20</span><span style="color: #000000"><img id="Codehighlighter1_668_709_Open_Image" onclick="this.style.display='none'; Codehighlighter1_668_709_Open_Text.style.display='none'; Codehighlighter1_668_709_Closed_Image.style.display='inline'; Codehighlighter1_668_709_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_668_709_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_668_709_Closed_Text.style.display='none'; Codehighlighter1_668_709_Open_Image.style.display='inline'; Codehighlighter1_668_709_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_668_709_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">21</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;如果类变量的值被改变,再访问类变量,将得到被改变后的值<br /></span><span style="color: #008080">22</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /></span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statical.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">fancydeepin</span><span style="color: #000000">"</span><span style="color: #000000">;<br /></span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@3&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">26</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">name&nbsp;---&gt;&gt;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;statical.name);&nbsp;</span><span style="color: #008000">//</span><span style="color: red">&nbsp;@3</span><span style="color: #008000"><br /></span><span style="color: #008080">27</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@3&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">28</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">29</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@4&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">30</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">name&nbsp;---&gt;&gt;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;Statical.name);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;</span><span style="color: red">@4</span><span style="color: #008000"><br /></span><span style="color: #008080">31</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@4&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">32</span><span style="color: #000000"><img id="Codehighlighter1_1130_1163_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1130_1163_Open_Text.style.display='none'; Codehighlighter1_1130_1163_Closed_Image.style.display='inline'; Codehighlighter1_1130_1163_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_1130_1163_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1130_1163_Closed_Text.style.display='none'; Codehighlighter1_1130_1163_Open_Image.style.display='inline'; Codehighlighter1_1130_1163_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1130_1163_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">33</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;非静态代码块&nbsp;和&nbsp;构造器&nbsp;被执行的时机<br /></span><span style="color: #008080">34</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /></span><span style="color: #008080">35</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@5&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">36</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">mail&nbsp;---&gt;&gt;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;statical.getMail());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;</span><span style="color: red">@5</span><span style="color: #008000"><br /></span><span style="color: #008080">37</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">-----------------&gt;&nbsp;@5&nbsp;&lt;----------------</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">38</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span></div>
<p dir="ltr"><br />后台输出结果</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------</span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">---&gt;</span><span style="color: #000000">&nbsp;&nbsp;静态代码块被执行&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;---</span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />name&nbsp;</span><span style="color: #000000">---&gt;&gt;</span><span style="color: #000000">&nbsp;fancy<br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------<br /></span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">6</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------</span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">---&gt;</span><span style="color: #000000">&nbsp;非静态代码块被执行&nbsp;</span><span style="color: #000000">&lt;---</span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">---&gt;</span><span style="color: #000000">&nbsp;构造器代码块被执行&nbsp;</span><span style="color: #000000">&lt;---</span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">6</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------<br /></span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------</span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />name&nbsp;</span><span style="color: #000000">---&gt;&gt;</span><span style="color: #000000">&nbsp;fancy<br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------<br /></span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------</span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />name&nbsp;</span><span style="color: #000000">---&gt;&gt;</span><span style="color: #000000">&nbsp;fancydeepin<br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------<br /></span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">4</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------</span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />name&nbsp;</span><span style="color: #000000">---&gt;&gt;</span><span style="color: #000000">&nbsp;fancydeepin<br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">4</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------<br /></span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------</span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />mail&nbsp; </span><span style="color: #000000">---&gt;&gt;</span><span style="color: #000000">&nbsp;fancydeepin@yeah.net<br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-----------------&gt;</span><span style="color: #000000">&nbsp;@</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;----------------</span><span style="color: #000000"><br /><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span></div>
<p dir="ltr"><br /><br /></p>
<p dir="ltr">为了能更好的看出后台的输出是哪一行代码执行的结果，我用了 @和数字来做了标记，希望大家不要看晕了哈 ^_^<br />最后针对输出结果简单说一下：<br />@1 说明，静态（类变量、静态代码块）属于类本身，不依赖于类的实例<br />@6 说明，在创建类的实例对象的时候，非静态代码块比构造器代码块更早的执行<br />@3 4&nbsp;说明，当类变量的值改变后，再通过类或类的实例来访问类变量，得到的将是被改变后的值<br />@5 说明，非静态（实例变量、非静态代码块）的地位是相等的，它们将按顺序被执行，但会比构造器中的代码块更早的执行<br /><br /><br /></span></p><img src ="http://www.blogjava.net/kermart/aggbug/382700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kermart/" target="_blank">kermart</a> 2012-07-10 13:00 <a href="http://www.blogjava.net/kermart/archive/2012/07/10/382700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>