﻿<?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-再一次也好-随笔分类-Java</title><link>http://www.blogjava.net/xujun7/category/39841.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 26 May 2010 05:25:58 GMT</lastBuildDate><pubDate>Wed, 26 May 2010 05:25:58 GMT</pubDate><ttl>60</ttl><item><title>EJB与JavaBean的区别</title><link>http://www.blogjava.net/xujun7/archive/2010/05/24/321739.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Mon, 24 May 2010 08:08:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2010/05/24/321739.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/321739.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2010/05/24/321739.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/321739.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/321739.html</trackback:ping><description><![CDATA[EJB不是一般的JavaBean,EJB是企业级JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean,书写EJB是需要遵循一定的规范的,具体规范你可以参考相关的资料.另外,要运行EJB,你需要相应的EJB容器,比如Weblogic,Jboss等,而JavaBean不需要,只需要安装Tomcat就可以了<br />
<br />
1.EJB用于服务端应用开发, 而JavaBeans用于客户端应用开发<br />
也可以使用JavaBeans进行服务端应用开发，但JavaBeans模型没有提供服务框架，当应用需要使用系统级服务（如事务管理,安全性,生命周期管理等）时，不适合。<br />
<br />
2.EJB构件是可部署的,EJB构件可以作为独立的单元被部署到EJB应用服务器上，是应用构件（application components）,而JavaBeans构件是不可部署的, JavaBeans构件是开发构件，不能被部署为独立的单元。<br />
<br />
3.EJB构件是部署可定制的,使用部署描述符可以在部署EJB时对其运行时配置进行定制,而JavaBeans构件在部署时不能进行定制,JavaBeans构件的定制仅发生在开发阶段,只能利用开发工具创建并组装JavaBeans构件，部署时不能定制<br />
<br />
4.EJB构件是分布式对象,可以被客户应用或者其它EJB构件进行远程访问,而JavaBeans构件不是分布式对象,JavaBeans构件只能在其构成的应用中使用,不能提供远程访问能力<br />
<br />
5.EJB构件对终端用户不可见,运行在服务端，没有人机交互界面,而部分JavaBeans构件对终端用户可见,如GUI应用中使用的按钮构件
<img src ="http://www.blogjava.net/xujun7/aggbug/321739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2010-05-24 16:08 <a href="http://www.blogjava.net/xujun7/archive/2010/05/24/321739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core Java学习笔记 对象和类</title><link>http://www.blogjava.net/xujun7/archive/2010/05/17/321190.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Mon, 17 May 2010 08:27:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2010/05/17/321190.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/321190.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2010/05/17/321190.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/321190.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/321190.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-family: 宋体">任何对象变量的值都是对一个对象的引用。</span></p>
<p><span style="font-family: 宋体">显示参数和隐式参数。</span></p>
<p>class Employee</p>
<p>{</p>
<p>&nbsp;&nbsp; . . .</p>
<p>&nbsp;&nbsp; private final String name;</p>
<p>}</p>
<p>private final Date hiredate;</p>
<p>final<span style="font-family: 宋体">应用于基本数据类型，表示值不可变，应用于类对象，表示对象的引用不可变。</span></p>
<p><span style="font-family: 宋体">一个引用不能改变作为参数的基本类型数据，但能改变对象，因为传入的参数是对象的引用，不能改变对象引用。</span></p>
<p>main()<span style="font-family: 宋体">是一个程序执行的入口，系统必须先进入这个入口，也就是先要调用</span>main()<span style="font-family: 宋体">函数，才能继续程序的执行，如果</span>main()<span style="font-family: 宋体">不用</span>static<span style="font-family: 宋体">修饰，系统就没法进行调用，因为一开始系统不能创建任何对象。而加上了</span>static<span style="font-family: 宋体">后，系统就可以直接调用</span>main()<span style="font-family: 宋体">函数了，从而继续程序的执行。</span>&nbsp;</p>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">public static void swap(Employee x, Employee y) // doesn't work</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">{</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; Employee temp = x;</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; x = y;</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; y = temp;</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">}</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">Employee a = new Employee("Alice", . . .);</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">Employee b = new Employee("Bob", . . .);</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">swap(a, b);</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">a,b</span><span style="font-size: 10.5pt">的引用没有改变。</span></pre>
<pre>&nbsp;</pre>
<pre><span style="font-size: 10.5pt">一个方法不能改变一个基本类型的参数</span></pre>
<pre><span style="font-size: 10.5pt">一个方法可以改变一个对象参数的状态</span></pre>
<pre><span style="font-size: 10.5pt">一个方法不能让对象参数引用一个新对象</span></pre>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 宋体">
<div align="center"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/xujun7/swap.JPG" width="430" height="376" /></div>
</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 宋体">默认值：数值为</span>0<span style="font-family: 宋体">，对象为</span>null<span style="font-family: 宋体">，布尔型为</span>false</p>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">public Employee(String name, double salary)</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">{</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; this.name = name;</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; this.salary = salary;</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">}</span></pre>
<p style="text-align: left" class="MsoNormal" align="left">This<span style="font-family: 宋体">指示隐式参数，即被构造的类对象。</span></p>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">public Employee(double s)</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">{</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; // calls Employee(String, double)</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; this("Employee #" + nextId, s);</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; nextId++;</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">}</span></pre>
<p style="text-align: left" class="MsoNormal" align="left">This<span style="font-family: 宋体">将调用同一个类的另一个构造函数。</span></p>
<pre><span style="font-size: 10.5pt">初始化块</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">// static initialization block</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">static</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">{</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; Random generator = new Random();</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; nextId = generator.nextInt(10000);</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">}</span></pre>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 宋体">可以为任何一个类添加</span>finalize<span style="font-family: 宋体">方法，</span>finalize<span style="font-family: 宋体">方法将在垃圾回收器清除对象之前被调用。因为某些对象使用了内存之外的其他资源，如文件。</span></p>
<img src ="http://www.blogjava.net/xujun7/aggbug/321190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2010-05-17 16:27 <a href="http://www.blogjava.net/xujun7/archive/2010/05/17/321190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core Java学习笔记 内部类</title><link>http://www.blogjava.net/xujun7/archive/2010/05/16/321112.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Sun, 16 May 2010 13:26:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2010/05/16/321112.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/321112.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2010/05/16/321112.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/321112.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/321112.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-family: 宋体">内部类是定义在一个类内部的类。</span></p>
<p><span style="font-family: 宋体">内部类方法可以访问该类定义所在的作用域的数据，包括私有数据。</span></p>
<p><span style="font-family: 宋体">内部类对同一包中的其他类不可见。</span></p>
<p><span style="font-family: 宋体">使用内部类定义回调函数可以避免写大量代码。</span></p>
<p>class TalkingClock</p>
<p>{</p>
<p>&nbsp;&nbsp; public TalkingClock(int interval, boolean beep) { . . . }</p>
<p>&nbsp;&nbsp; public void start() { . . . }</p>
<p>&nbsp;&nbsp; private int interval;</p>
<p>&nbsp;&nbsp; private boolean beep;</p>
<p>&nbsp;&nbsp; private class TimePrinter implements ActionListener</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // an inner class</p>
<p>&nbsp;&nbsp; {</p>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date now = new Date();</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("At the tone, the time is " + now);</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (beep) Toolkit.getDefaultToolkit().beep();</span></pre>
<p>&nbsp;&nbsp; }</p>
<p>}</p>
<p><span style="font-family: 宋体">内部类既可以访问自身的数据域，也可以访问创建它的外围类对象的数据域。内部类有一个隐式引用，其指向外围类对象。<br />
<br />
<div align="center"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/xujun7/referenceouter.JPG" /></div>
<br />
</span></p>
<p>public void actionPerformed(ActionEvent event)</p>
<p>{&nbsp;</p>
<p>&nbsp;&nbsp; Date now = new Date();</p>
<p>&nbsp;&nbsp; System.out.println("At the tone, the time is " + now);</p>
<p>&nbsp;&nbsp; if (<strong>outer.</strong>beep) Toolkit.getDefaultToolkit().beep();</p>
<p>}</p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 宋体">内部类的默认构造函数</span></p>
<p>public TimePrinter(TalkingClock clock) // automatically generated code<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outer&nbsp;= clock;<br />
}</p>
<p><span style="font-family: 宋体">局部内部类，不能用</span>private<span style="font-family: 宋体">和</span>public<span style="font-family: 宋体">声明，</span>start<span style="font-family: 宋体">方法都不能访问它。</span></p>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">public void start()</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">{</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; <strong>class TimePrinter implements ActionListener</strong></span></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; {</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void actionPerformed(ActionEvent event)</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Date now = new Date();</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("At the tone, the time is " + now);</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (beep) Toolkit.getDefaultToolkit().beep();</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; }</span></strong></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; ActionListener listener = new TimePrinter();</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; Timer t = new Timer(1000, listener);</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; t.start();</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">}</span></pre>
<p><span style="font-family: 宋体">匿名内部类</span></p>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">public void start(int interval, final boolean beep)</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">{</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; ActionListener listener = new</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>ActionListener()</strong></span></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;public void actionPerformed(ActionEvent event)</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Date now = new Date();</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("At the tone, the time is " + now);</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (beep) Toolkit.getDefaultToolkit().beep();</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></strong></pre>
<pre><strong><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</span></strong></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; Timer t = new Timer(1000, listener);</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; t.start();</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">}</span></pre>
<p><span style="font-family: 宋体">匿名构造了不能有构造函数，而是把构造函数参数传递给超类构造函数，</span></p>
<p>new&nbsp;SuperType(construction&nbsp;parameters)<br />
{<br />
&nbsp;&nbsp;&nbsp;inner&nbsp;class&nbsp;methods&nbsp;and&nbsp;data<br />
}</p>
<p><tt><span style="font-size: 12pt">内部类实现接口时，不能有任何参数</span></tt></p>
<p>new&nbsp;InterfaceType() {&nbsp;methods&nbsp;and&nbsp;data&nbsp;}</p>
<p><span style="font-family: 宋体">静态内部类</span></p>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">class ArrayAlg</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">{</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; public static class Pair</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; {</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . . .</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; }</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">&nbsp;&nbsp; . . .</span></pre>
<pre><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">}</span></pre>
<p><span style="font-family: 宋体">静态内部类对象除了没有对生产它的外部类对象的引用特权外，与其他的内部类完全一样。</span></p>
<img src ="http://www.blogjava.net/xujun7/aggbug/321112.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2010-05-16 21:26 <a href="http://www.blogjava.net/xujun7/archive/2010/05/16/321112.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java基础笔试题</title><link>http://www.blogjava.net/xujun7/archive/2010/05/16/321102.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Sun, 16 May 2010 09:47:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2010/05/16/321102.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/321102.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2010/05/16/321102.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/321102.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/321102.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;1、作用域public,private,protected,以及不写时的区别答：区别如下：作用域&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前类&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同一package&nbsp; 子孙类&nbsp;&nbsp;&nbsp;&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/xujun7/archive/2010/05/16/321102.html'>阅读全文</a><img src ="http://www.blogjava.net/xujun7/aggbug/321102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2010-05-16 17:47 <a href="http://www.blogjava.net/xujun7/archive/2010/05/16/321102.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core Java学习笔记 异常</title><link>http://www.blogjava.net/xujun7/archive/2010/05/16/321101.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Sun, 16 May 2010 09:40:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2010/05/16/321101.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/321101.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2010/05/16/321101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/321101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/321101.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-family: 宋体">所有的异常都是由</span>Throwable<span style="font-family: 宋体">类继承而来的，分为</span>Error<span style="font-family: 宋体">和</span>Exception<span style="font-family: 宋体">，</span>Error<span style="font-family: 宋体">类层次结构描述了</span>Java<span style="font-family: 宋体">运行时系统的内部错误和资源耗尽错误。</span>Exception<span style="font-family: 宋体">分为</span>RuntimeException<span style="font-family: 宋体">和</span>IOException<span style="font-family: 宋体">。由程序错误导致的异常属于</span>RuntimeException<span style="font-family: 宋体">。</span></p>
<p>
<div align="center"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/xujun7/exception.JPG" width="487" height="249" /></div>
<br />
The rule "If it is a RuntimeException, it was your fault"</p>
<p><span style="font-family: 宋体">一个方法必须声明所有可能抛出的已检查异常，而未检查异常要么不可控制</span>(Error)<span style="font-family: 宋体">，要么就应该避免</span>(RuntimeException)</p>
<p><span style="font-family: 宋体">如果超类方法没有抛出异常，则子类方法也不能抛出任何异常。子类方法抛出的异常不能超过超类声明的范围。</span></p>
<img src ="http://www.blogjava.net/xujun7/aggbug/321101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2010-05-16 17:40 <a href="http://www.blogjava.net/xujun7/archive/2010/05/16/321101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core Java学习笔记 集合</title><link>http://www.blogjava.net/xujun7/archive/2010/05/12/320720.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Wed, 12 May 2010 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2010/05/12/320720.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/320720.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2010/05/12/320720.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/320720.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/320720.html</trackback:ping><description><![CDATA[&nbsp;
<p>Collection是集合类的上级接口，继承与他的接口主要有Set 和List.<br />
Collections是针对集合类的一个帮助类，他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。<br />
<br />
Java<span style="font-family: 宋体">类库中用于集合类的基本接口是</span>Collection<span style="font-family: 宋体">接口。</span>Collection<span style="font-family: 宋体">接口扩展自</span>Iterable<span style="font-family: 宋体">接口，因此，可以在任何集合类中使用</span>for each<span style="font-family: 宋体">循环。</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">interface</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> <span style="background: lightgrey">Iterable</span>&lt;T&gt; {</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; Iterator&lt;T&gt; iterator();</span></p>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">}</span></p>
<p><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">interface</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> Collection&lt;E&gt; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">extends</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> Iterable&lt;E&gt;</span></p>
<p>Collection<span style="font-family: 宋体">和</span>Iterator<span style="font-family: 宋体">是泛型接口，任何集合都可以使用其方法。</span>Collection<span style="font-family: 宋体">接口中的方法：</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">public static &lt;E&gt; boolean contains(Collection&lt;E&gt; c, Object obj)</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">{&nbsp;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp; for (E element : c)</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (element.equals(obj))</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp; return false;</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">}</span></p>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">iterator</span><span style="font-family: 宋体; color: black; font-size: 10pt">方法返回一个实现了</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">Iterator</span><span style="font-family: 宋体; color: black; font-size: 10pt">接口的对象。</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">interface</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> Iterator&lt;E&gt; {</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">boolean</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> hasNext();</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; E next();</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> remove();</span></p>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">}</span></p>
<p>Java<span style="font-family: 宋体">集合类库将接口与实现分离，</span>Queue</p>
<p><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">abstract</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">class</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> AbstractCollection&lt;E&gt; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">implements</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> Collection&lt;E&gt;</span></p>
<p><span style="font-family: 宋体">一个集合类可以从</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">AbstractCollection</span><span style="font-family: 宋体; color: black; font-size: 10pt">类扩展</span></p>
<p><span style="font-family: 宋体">除了</span>Map<span style="font-family: 宋体">结尾的类，其他类都实现了</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">Collection</span><span style="font-family: 宋体; color: black; font-size: 10pt">接口。</span></p>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">ArrayList</span><span style="font-family: 宋体; color: black; font-size: 10pt">动态数组</span></p>
<p style="margin: 0cm 0cm 0pt" class="a1"><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">ArrayList</span><span style="font-size: 10.5pt">的内部实现是基于内部数组</span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">Object[]</span><span style="font-size: 10.5pt">，所以从概念上讲，它更像数组，但</span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">LinkedList</span><span style="font-size: 10.5pt">的内部实现是基于一组连接的记录，所以，它更像一个链表结构。</span></p>
<p style="margin: 0cm 0cm 0pt" class="a1"><span style="font-size: 10.5pt">在</span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">ArrayList</span><span style="font-size: 10.5pt">的前面或中间插入数据时，必须将其后的所有数据相应的后移，这样必然要花费较多时间，所以，当你的操作是在一列数据的后面添加数据而不是在前面或中间，并且需要随机地访问其中的元素时，使用</span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">ArrayList</span><span style="font-size: 10.5pt">会提供比较好的性能；</span></p>
<p style="margin: 0cm 0cm 0pt" class="a1"><span style="font-size: 10.5pt">而访问链表中的某个元素时，就必须从链表的一端开始沿着连接方向一个一个元素地去查找，直到找到所需的元素为止，所以，当你的操作是在一列数据的前面或中间添加或删除数据，并且按照顺序访问其中的元素时，就应该使用</span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">LinkedList</span><span style="font-size: 10.5pt">了。</span></p>
<p style="margin: 0cm 0cm 0pt" class="a1"><span style="font-size: 10.5pt">如果在编程中，两种情形交替出现，这时，可以考虑使用</span><span style="font-family: 'Calibri', 'sans-serif'; font-size: 10.5pt">List</span><span style="font-size: 10.5pt">这样的通用接口，而不用关心具体的实现，在具体的情形下，它的性能由具体的实现来保证。</span></p>
<p>Java<span style="font-family: 宋体">中每个链表实际上是双重链表。链表是有序的。</span>List<span style="font-family: 宋体">接口和实现了该接口的</span>LinkedList<span style="font-family: 宋体">类。</span></p>
<pre><span style="font-family: 'Courier New'; color: black; font-size: 10pt">interface ListIterator&lt;E&gt; extends Iterator&lt;E&gt;</span></pre>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">ListIterator</span><span style="font-family: 宋体; color: black; font-size: 10pt">中的</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">add</span><span style="font-family: 宋体; color: black; font-size: 10pt">方法，添加元素在迭代器之前，</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">remove</span><span style="font-family: 宋体; color: black; font-size: 10pt">方法删除上一个被访问的元素。</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">Set</span><span style="font-family: 宋体; color: black; font-size: 10pt">方法取代使用</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">next</span><span style="font-family: 宋体; color: black; font-size: 10pt">或</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">previous</span><span style="font-family: 宋体; color: black; font-size: 10pt">方法最后访问的元素。</span></p>
<p>ArrayList<span style="font-family: 宋体">封装了一个动态重新分配的数组。</span></p>
<p>Vector<span style="font-family: 宋体">类的所有方法都是同步的。可以用两个线程安全地访问</span>Vector<span style="font-family: 宋体">对象。代码会在同步操作上浪费相当多的时间。</span>ArrayList<span style="font-family: 宋体">类的方法不是同步的。</span></p>
<p>hashCode()<span style="font-family: 宋体">方法必须和</span>equals<span style="font-family: 宋体">方法相兼容。如果</span>a.equals(b)<span style="font-family: 宋体">为</span>ture,<span style="font-family: 宋体">则</span>a<span style="font-family: 宋体">和</span>b<span style="font-family: 宋体">必有相同的散列码。散列吗是通过对象实例字段产生的整数。</span></p>
<p>TreeSet<span style="font-family: 宋体">是一个有序集合，插入时可以是任意顺序，输出时为排序后的顺序。红黑树。默认情况下，</span>TreeSet<span style="font-family: 宋体">假设你插入的元素实现了</span>Comparable<span style="font-family: 宋体">接口。</span></p>
<p><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">interface</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> Comparable&lt;T&gt; {</span></p>
<p style="text-align: left" class="MsoNormal" align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">int</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> compareTo(T o);</span></p>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">}</span></p>
<p>PriorityQueue<span style="font-family: 宋体">是一种能够在以任意顺序插入元素后，再按排序顺序读取这些元素的数据结构。优先级队列和</span>TreeSet<span style="font-family: 宋体">一样，其所持有的元素可以是实现了</span>Comparable<span style="font-family: 宋体">接口的类的对象，也可以是在构造器中提供的</span>Comparator<span style="font-family: 宋体">对象。</span></p>
<p>HashMap<span style="font-family: 宋体">和</span>TreeMap<span style="font-family: 宋体">都实现了</span>Map<span style="font-family: 宋体">接口，映射表用于存放键</span>/<span style="font-family: 宋体">值对。</span></p>
<p>HashSet<span style="font-family: 宋体">类，实现了基于散列表的散列集。不存在重复元素的集合。</span></p>
<p><span style="font-family: 宋体">散列映射表用于对键进行散列，树状映射表对于键的全局顺序进行排序，并组成搜索树。<br />
<div align="center"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/xujun7/collection.JPG" width="522" height="298" /></div>
<br />
<br />
</span>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">框架就是一个类集合，它形成了创建高级功能的基础。框架包含许多超类，这些超类拥有非常有用的功能、策略和机制。框架用户建立的子类可以扩展类的功能，而不是重新创建基本的机制。</span></p>
<p><span style="font-family: 宋体">两个用于集合的基本接口，</span>Collection<span style="font-family: 宋体">和</span>Map<span style="font-family: 宋体">。</span></p>
<p>Set<span style="font-family: 宋体">接口和</span>Collection<span style="font-family: 宋体">接口，</span>Set<span style="font-family: 宋体">不允许有重复元素。</span>List<span style="font-family: 宋体">接口提供随机访问的方法，</span>ArrayList<span style="font-family: 宋体">和</span>LiknkedList<span style="font-family: 宋体">的访问算法效率是不同的。</span></p>
<div align="center"><img style="width: 573px; height: 361px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/xujun7/Classescollections.JPG" width="573" height="361" /></div>
<br />
<img src ="http://www.blogjava.net/xujun7/aggbug/320720.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2010-05-12 17:03 <a href="http://www.blogjava.net/xujun7/archive/2010/05/12/320720.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core Java学习笔记 流与文件</title><link>http://www.blogjava.net/xujun7/archive/2009/07/19/287344.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Sun, 19 Jul 2009 08:23:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/07/19/287344.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/287344.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/07/19/287344.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/287344.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/287344.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: v\:* {behavior:url(#default#VML);}o\:* {behavior:url(#default#VML);}w\:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}Normal0false7.8 磅02...&nbsp;&nbsp;<a href='http://www.blogjava.net/xujun7/archive/2009/07/19/287344.html'>阅读全文</a><img src ="http://www.blogjava.net/xujun7/aggbug/287344.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-07-19 16:23 <a href="http://www.blogjava.net/xujun7/archive/2009/07/19/287344.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core Java学习笔记 注释</title><link>http://www.blogjava.net/xujun7/archive/2009/07/17/287196.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Fri, 17 Jul 2009 10:53:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/07/17/287196.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/287196.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/07/17/287196.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/287196.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/287196.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:595.3pt 841.9pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
layout-grid:15.6pt;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="2049" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<p class="MsoNormal"><span style="font-family: 宋体;">注释</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">文件头注释</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">文件头注释以</span><span lang="EN-US"> /*</span><span style="font-family: 宋体;">开始，以</span><span lang="EN-US">*/</span><span style="font-family: 宋体;">结束，需要注明该文件创建时间，文件名，命名空间信息。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">例如：</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;" lang="EN-US">/*</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;" lang="EN-US"><span>&nbsp;</span>* @(#)Boolean.java<span>&nbsp; </span>1.51 04/05/11</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;" lang="EN-US"><span>&nbsp;</span>*</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;" lang="EN-US"><span>&nbsp;</span>* Copyright 2004 Sun Microsystems, Inc. All
rights reserved.</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;" lang="EN-US"><span>&nbsp;</span>* SUN PROPRIETARY/CONFIDENTIAL. Use is subject
to license terms.</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;" lang="EN-US"><span>&nbsp;</span>*/<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">类、接口注释</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">类、接口的注释采用</span><span lang="EN-US"> /** &#8230; */</span><span style="font-family: 宋体;">，描述部分用来书写该类的作用或者相关信息，块标记部分必须注明作者和版本。</span><span lang="EN-US">Import</span><span style="font-family: 宋体;">语句之后，类定义之前。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">例如：</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">/**</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* The Boolean class wraps a value of the
primitive type </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">boolean</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;/code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"> in an object. An object of type </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">Boolean</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;/code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"> contains a single field whose type is </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">boolean</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;/code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">. </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;p&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* In addition, this class provides many
methods for </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* converting a </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">boolean</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;/code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"> to a </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">String</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;/code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"> and a </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">String</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;/code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"> to a </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">boolean</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;/code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">, as well as other </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* constants and methods useful when dealing
with a </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">boolean</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;/code&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">. </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>*</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f9fbf;" lang="EN-US">@author</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp; </span>Arthur van Hoff</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f9fbf;" lang="EN-US">@version</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"> 1.51, 05/11/04</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>* </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f9fbf;" lang="EN-US">@since</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;&nbsp; </span>JDK1.0</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;</span>*/</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">方法注释采用</span><span lang="EN-US">/** &#8230; */</span><span style="font-family: 宋体;">，描述部分注明方法的功能，块标记部分注明方法的参数，返回值，异常等信息。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">/**</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">* Compares this </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;tt&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">Boolean</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;/tt&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"> instance with
another.</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">*</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">* </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f9fbf;" lang="EN-US">@param</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;&nbsp; </span>b the </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;tt&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">Boolean</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;/tt&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"> instance to be
compared</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">* </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f9fbf;" lang="EN-US">@return</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp; </span>zero if this object represents the same
boolean value as the</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">*<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>argument; a positive value if this
object represents true</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">*<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>and the argument represents false;
and a negative value if</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">*<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this object represents false and the
argument represents true</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">* </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f9fbf;" lang="EN-US">@throws</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp; </span>NullPointerException if the argument is </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;tt&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">null</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f7f9f;" lang="EN-US">&lt;/tt&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">* </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f9fbf;" lang="EN-US">@see</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;
</span>Comparable</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">* </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f9fbf;" lang="EN-US">@since</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US"><span>&nbsp; </span>1.5</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f5fbf;" lang="EN-US">*/<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">@param</span><span style="font-family: 宋体;">后面空格后跟着参数的变量名字（不是类型），空格后跟着对该参数的描述。</span></p>
<p class="MsoNormal"><span lang="EN-US">@return</span><span style="font-family: 宋体;">标记返回为空（</span><span lang="EN-US">void</span><span style="font-family: 宋体;">）的构造函数或者函数，</span><span lang="EN-US">@return</span><span style="font-family: 宋体;">可以省略。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">如果返回值就是输入参数，必须用与输入参数的</span><span lang="EN-US">@param</span><span style="font-family: 宋体;">相同的描述信息。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">必要的时候注明特殊条件写的返回值。</span></p>
<p class="MsoNormal"><span lang="EN-US">@deprecated</span><span style="font-family: 宋体;">由于某种原因而被宣布将要被废弃的方法。</span></p>
<p class="MsoNormal"><span lang="EN-US">@see:</span><span style="font-family: 宋体;">引用其它类的文档，相当于超链接，</span><span lang="EN-US">Javadoc</span><span style="font-family: 宋体;">会在其生成的</span><span lang="EN-US">HTML</span><span style="font-family: 宋体;">文件中，将</span><span lang="EN-US">@see</span><span style="font-family: 宋体;">标签链到其他的文档</span></p>
<p class="MsoNormal" style="text-indent: 20.25pt;"><span lang="EN-US">@see package.classname#feature
label</span></p>
<p class="MsoNormal" style="text-indent: 20.25pt;"><span lang="EN-US">@see &lt;a
href=&#8221;&#8230;&#8221;&gt;label&lt;/a&gt;</span></p>
<p class="MsoNormal" style="text-indent: 20.25pt;"><span lang="EN-US">@see &#8220;text&#8221;</span></p>
<p class="MsoNormal"><span lang="EN-US">@link</span><span style="font-family: 宋体;">标记</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">语法：</span><span lang="EN-US">{@link package.class#member label}</span></p>
<p class="MsoNormal"><span lang="EN-US">Label</span><span style="font-family: 宋体;">为链接文字。</span></p>
<p class="MsoNormal"><span lang="EN-US">package.class#member</span><span style="font-family: 宋体;">将被自动转换成指向</span><span lang="EN-US">package.class</span><span style="font-family: 宋体;">的</span><span lang="EN-US">member</span><span style="font-family: 宋体;">文件的</span><span lang="EN-US">URL</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal"><span lang="EN-US">@since</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">类注释标记。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">标明该类可以运行的</span><span lang="EN-US">JDK</span><span style="font-family: 宋体;">版本</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.blogjava.net/xujun7/aggbug/287196.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-07-17 18:53 <a href="http://www.blogjava.net/xujun7/archive/2009/07/17/287196.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core Java学习笔记 JDBC</title><link>http://www.blogjava.net/xujun7/archive/2009/07/16/287045.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Thu, 16 Jul 2009 15:11:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/07/16/287045.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/287045.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/07/16/287045.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/287045.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/287045.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:595.3pt 841.9pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
layout-grid:15.6pt;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">JDBC</span><span style="font-family: 宋体;">编程的基本概念</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">用于</span><span lang="EN-US">JDBC</span><span style="font-family: 宋体;">编程的类都包含在</span><span lang="EN-US">java.sql</span><span style="font-family: 宋体;">和</span><span lang="EN-US">javax.sql</span><span style="font-family: 宋体;">包中</span></p>
<p class="MsoNormal"><span lang="EN-US">java.sql.DriverManager</span><span style="font-family: 宋体;">类用于选择数据库驱动程序和创建新的数据库连接。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">只有在驱动管理器中注册过的驱动程序才可以被激活。</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;" lang="EN-US">"jdbc.drivers"</span><span style="font-size: 10pt; font-family: 宋体;">属性包含一系列驱动程序的类名。驱动管理器会在启动时注册这些驱动。</span></p>
<p class="MsoNormal"><span lang="EN-US">System.setProperty("jdbc.drivers",
"oracle.jdbc.driver.OracleDriver")</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">程序运行在</span><span lang="EN-US">Servlet</span><span style="font-family: 宋体;">引擎容器中时要通过加载驱动程序类来手动加载驱动程序，如</span><span lang="EN-US">Class.forName("oracle.jdbc.driver.OracleDriver");</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">调用</span><span lang="EN-US">DriverManager.getConnection</span><span style="font-family: 宋体;">方法获得</span><span lang="EN-US">java.sql.Connection</span><span style="font-family: 宋体;">对象</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">驱动管理器遍历当前所有已经注册过的驱动程序，</span><span lang="EN-US">&#8230;.</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">创建一个</span><span lang="EN-US">java.sql.Statement</span><span style="font-family: 宋体;">对象</span></p>
<p class="MsoNormal"><span lang="EN-US">Statement stat = conn.createStatement();<a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name="ch04index162"></a></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">调用</span><span lang="EN-US">Statement</span><span style="font-family: 宋体;">类中的</span><span lang="EN-US">executeUpdate</span><span style="font-family: 宋体;">方法执行字符串中的</span><span lang="EN-US">SQL</span><span style="font-family: 宋体;">语句。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">当执行查询操作时可通过</span><span lang="EN-US">executeQuery</span><span style="font-family: 宋体;">方法返回一个</span><span lang="EN-US">java.sql.ResultSet</span><span style="font-family: 宋体;">对象，来每次一行地迭代遍历所有查询结果。执行</span><span lang="EN-US">SELECT</span><span style="font-family: 宋体;">查询时必须使用</span><span lang="EN-US">executeQuery</span><span style="font-family: 宋体;">方法。</span></p>
<p class="MsoNormal"><span lang="EN-US">ResultSet rs =
stat.executeQuery("SELECT * FROM Books")</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">每一个</span><span lang="EN-US">Connection</span><span style="font-family: 宋体;">对象都可以创建一个或一个以上的</span><span lang="EN-US">Statement</span><span style="font-family: 宋体;">对象，同一个</span><span lang="EN-US">Statement</span><span style="font-family: 宋体;">对象可以用于多个不相关的命令和查询。但是，一个</span><span lang="EN-US">Statement</span><span style="font-family: 宋体;">对象最多只能打开一个结果集。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">当使用完</span><span lang="EN-US">ResultSet</span><span style="font-family: 宋体;">、</span><span lang="EN-US">Statement</span><span style="font-family: 宋体;">、</span><span lang="EN-US">Connection</span><span style="font-family: 宋体;">对象时，应立即调用</span><span lang="EN-US">close()</span><span style="font-family: 宋体;">方法关闭连接对象。这些对象都使用了规模较大的数据结构，自行回收而不是等垃圾回收。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">4.5 </span><span style="font-family: 宋体;">执行查询操作</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">预备语句（</span><span lang="EN-US">Prepared Statement</span><span style="font-family: 宋体;">）</span><span lang="EN-US"> java.sql.PreparedStatement</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">返回一个含预编译语句的</span><span lang="EN-US">PreparedStatement</span><span style="font-family: 宋体;">对象，</span><span lang="EN-US">sql</span><span style="font-family: 宋体;">语句可以包含一个或多个</span><span lang="EN-US">?</span><span style="font-family: 宋体;">指明的占位符。</span></p>
<p class="MsoNormal"><span lang="EN-US">void setXxx(int n, Xxx x)</span></p>
<p class="MsoNormal"><span lang="EN-US">(Xxx is a type such as int, double, String,
Date, etc.) sets the value of the nth parameter to x.</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">参数：第一个参数指的是需要赋值的宿主变量的位置，第二个参数指的是赋予宿主变量的值</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">4.6 </span><span style="font-family: 宋体;">可滚动和可更新的结果集</span></p>
<p class="MsoNormal"><span lang="EN-US">PreparedStatement stat =
conn.preparedStatement(command,type,concurrency);</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">参数</span><span lang="EN-US">type</span><span style="font-family: 宋体;">的值：</span><span lang="EN-US">TYPE_FORWARD_ONLY(</span><span style="font-family: 宋体;">结果集不能滚动</span><span lang="EN-US">) TYPE_SCROLL_INSENSITIVE(</span><span style="font-family: 宋体;">结果集可以滚动，但对数据库变化不敏感</span><span lang="EN-US">)
TYPE_SCROLL_SENSITIVE(</span><span style="font-family: 宋体;">结果集可以滚动，且对数据库变化敏感</span><span lang="EN-US">)</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">参数</span><span lang="EN-US">concurrency</span><span style="font-family: 宋体;">的值：</span><span lang="EN-US">CONCUR_READ_ONLY(</span><span style="font-family: 宋体;">结果集不能用于更新数据库</span><span lang="EN-US">) CONCUR_UPDATABLE(</span><span style="font-family: 宋体;">结果集可以用于更新数据库</span><span lang="EN-US">)</span></p>
<p class="MsoNormal"><span lang="EN-US">4.7 </span><span style="font-family: 宋体;">元数据</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">在</span><span lang="EN-US">SQL</span><span style="font-family: 宋体;">中描述数据库或其组成部分的数据称为元数据。包括三个类别：关于数据库的元数据（</span><span lang="EN-US">java.sql.DatabaseMetaData</span><span style="font-family: 宋体;">）、</span> <span style="font-family: 宋体;">关于结果集的元数据（</span><span lang="EN-US">java.sql.ResultSetMetaData</span><span style="font-family: 宋体;">）、关于预备语句参数的元数据</span> <span style="font-family: 宋体;">（</span><span lang="EN-US">java.sql.ParameterMetaData</span><span style="font-family: 宋体;">）</span></p>
<p class="MsoNormal"><span lang="EN-US">4.8 </span><span style="font-family: 宋体;">行集</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">适用于无需始终保持与数据库连接的应用或者将结果集移动到复杂应用的其他层。</span><span lang="EN-US">javax.sql.RowSet</span></p>
<p class="MsoNormal"><span lang="EN-US">RowSet</span><span style="font-family: 宋体;">接口继承了</span><span lang="EN-US">resultset</span><span style="font-family: 宋体;">接口</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">一个被缓存的行集包含了一个结果集中所有的数据。</span><span lang="EN-US">javax.sql.CachedRowSet</span></p>
<p class="MsoNormal"><span lang="EN-US">CachedRowSet</span><span style="font-family: 宋体;">接口继承了</span><span lang="EN-US">resultset</span><span style="font-family: 宋体;">接口</span></p>
<p class="MsoNormal"><span lang="EN-US">4.9 </span><span style="font-family: 宋体;">事务</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">当所有语句都顺利执行之后，事务可以被提交，否则，如果其中某个语句遇到错误，那么事务将被回滚。默认情况下，数据库的连接处于自动提交模式。一旦提交成功就无法进行回滚操作。</span></p>
<p class="MsoNormal"><span lang="EN-US">//You turn off autocommit mode with the
command<a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name="ch04index321"></a><a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name="ch04index320"></a></span></p>
<p class="MsoNormal"><span lang="EN-US">conn.setAutoCommit(false);</span></p>
<p class="MsoNormal"><span lang="EN-US">//Now you create a statement object in the
normal way:</span></p>
<p class="MsoNormal"><span lang="EN-US">Statement stat = conn.createStatement();</span></p>
<p class="MsoNormal"><span lang="EN-US">Call executeUpdate any number of times:</span></p>
<p class="MsoNormal"><span lang="EN-US">stat.executeUpdate(command1);</span></p>
<p class="MsoNormal"><span lang="EN-US">stat.executeUpdate(command2);</span></p>
<p class="MsoNormal"><span lang="EN-US">stat.executeUpdate(command3);</span></p>
<p class="MsoNormal"><span lang="EN-US">. . .</span></p>
<p class="MsoNormal"><span lang="EN-US">//When all commands have been executed,
call the commit method:<a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name="ch04index322"></a></span></p>
<p class="MsoNormal"><span lang="EN-US">conn.commit();</span></p>
<p class="MsoNormal"><span lang="EN-US">//However, if an error occurred, call</span></p>
<p class="MsoNormal"><span lang="EN-US">conn.rollback();</span></p>
<p class="MsoNormal"><span lang="EN-US">//Then, all commands until the last commit
are automatically reversed. You typically issue a //rollback when your
transaction was interrupted by a SQLException.</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">使用保存点（</span><span lang="EN-US">save point</span><span style="font-family: 宋体;">）可以让事务只需回滚到保存点，而非事务的开始。</span><span lang="EN-US">java.sql.Savepoint</span></p>
<p class="MsoNormal"><span lang="EN-US">Statement stat = conn.createStatement(); //
start transaction; rollback() goes here</span></p>
<p class="MsoNormal"><span lang="EN-US">stat.executeUpdate(command1);</span></p>
<p class="MsoNormal"><span lang="EN-US">Savepoint svpt = conn.setSavepoint();<strong> // set savepoint; rollback(svpt) goes here</strong></span></p>
<p class="MsoNormal"><span lang="EN-US">stat.executeUpdate(command2);</span></p>
<p class="MsoNormal"><span lang="EN-US">if (. . .) conn.rollback(svpt); // undo
effect of command2</span></p>
<p class="MsoNormal"><span lang="EN-US">. . .</span></p>
<p class="MsoNormal"><span lang="EN-US">conn.commit();</span></p>
<p class="MsoNormal"><span lang="EN-US">//When you are done with a save point, you
should release it:</span></p>
<p class="MsoNormal"><span lang="EN-US">stat.releaseSavepoint(svpt);</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">批量更新</span></p>
<p class="MsoNormal"><span lang="EN-US">Statement stat = conn.createStatement();</span></p>
<p class="MsoNormal"><span lang="EN-US">//Now, instead of calling executeUpdate,
you call the addBatch method:</span></p>
<p class="MsoNormal"><span lang="EN-US">String command = "CREATE TABLE . .
."</span></p>
<p class="MsoNormal"><span lang="EN-US">stat.addBatch(command);</span></p>
<p class="MsoNormal"><span lang="EN-US">while (. . .)</span></p>
<p class="MsoNormal"><span lang="EN-US">{</span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;
</span>command = "INSERT INTO . . . VALUES (" + . . . +
")";</span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;
</span>stat.addBatch(command);</span></p>
<p class="MsoNormal"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span lang="EN-US">//Finally, you submit the entire batch:</span></p>
<p class="MsoNormal"><span lang="EN-US">int[] counts = stat.executeBatch();</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">4.10 </span><span style="font-family: 宋体;">高级连接管理</span></p>
<p class="MsoNormal"><span lang="EN-US">Java</span><span style="font-family: 宋体;">名字和目录接口（</span><span lang="EN-US">JNDI</span><span style="font-family: 宋体;">）定位数据源。</span><span lang="EN-US">javax.sql.DataSource</span><span style="font-family: 宋体;">接口</span></p>
<p class="MsoNormal"><span lang="EN-US">4.11 LDAP</span><span style="font-family: 宋体;">概述</span></p>
<p class="MsoNormal"><span lang="EN-US">LDAP</span><span style="font-family: 宋体;">（</span><span lang="EN-US">Lightweight
Directory Access Protocol,</span><span style="font-family: 宋体;">轻量级目录访问协议），通常主要应用于目录存储，且该目录包含了如用户名、密码和权限之类的数据。适用于应用数据遵从树状结构，且读操作多于写操作。</span></p>
<p class="MsoNormal"><span lang="EN-US">LDAP</span><span style="font-family: 宋体;">数据库将所有数据存储在一个树状结构中，树中的每一项包含：</span></p>
<p class="MsoNormal"><span lang="EN-US">1</span><span style="font-family: 宋体;">、</span><span lang="EN-US">0</span><span style="font-family: 宋体;">个或</span><span lang="EN-US">0</span><span style="font-family: 宋体;">个以上属性，每个属性都有一个</span><span lang="EN-US">ID</span><span style="font-family: 宋体;">和一个值。</span></p>
<p class="MsoNormal"><span lang="EN-US">2</span><span style="font-family: 宋体;">、一个或一个以上的对象类，一个对象类定义了该元素上的一组属性。</span></p>
<p class="MsoNormal"><span lang="EN-US">3</span><span style="font-family: 宋体;">、一个专有名称，专有名称是一组描述路径的属性序列，该路径将该条目与树的根连接在一起。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.blogjava.net/xujun7/aggbug/287045.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-07-16 23:11 <a href="http://www.blogjava.net/xujun7/archive/2009/07/16/287045.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core Java学习笔记 反射</title><link>http://www.blogjava.net/xujun7/archive/2009/07/16/286961.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Thu, 16 Jul 2009 04:25:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/07/16/286961.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/286961.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/07/16/286961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/286961.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/286961.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Normal07.8 磅02falsefalsefalseEN-USZH-CNX-NONE...&nbsp;&nbsp;<a href='http://www.blogjava.net/xujun7/archive/2009/07/16/286961.html'>阅读全文</a><img src ="http://www.blogjava.net/xujun7/aggbug/286961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-07-16 12:25 <a href="http://www.blogjava.net/xujun7/archive/2009/07/16/286961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core Java学习笔记 RMI</title><link>http://www.blogjava.net/xujun7/archive/2009/07/15/286920.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Wed, 15 Jul 2009 13:51:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/07/15/286920.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/286920.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/07/15/286920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/286920.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/286920.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso" /><!--[if !mso]>
<style>
v":* {behavior:url(#default#VML);}
o":* {behavior:url(#default#VML);}
w":* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><!--[if gte mso 9]><![endif]-->
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
Normal
0
false
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
</xml><![endif]--><!--[if gte mso 9]><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:""@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
pre
{
mso-style-link:"HTML 预设格式 Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:宋体;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:21.0pt;
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
span.HTMLChar
{mso-style-name:"HTML 预设格式 Char";
mso-style-link:"HTML 预设格式";
font-family:宋体;}
.MsoChpDefault
{
mso-bidi-font-family:"Times New Roman";}
/* Page Definitions */
@page
{}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{}
@list l0:level1
{
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l1
{}
@list l1:level1
{
margin-left:18.0pt;
text-indent:-18.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{
mso-style-parent:"";
font-size:10.5pt;
font-family:"Calibri","sans-serif";}
</style>
<![endif]-->
<p>CORBA<span style="font-family: 宋体;">与</span>SOAP<span style="font-family: 宋体;">都是完全独立于语言的。</span>CORBA<span style="font-family: 宋体;">的接口定于语言是</span>IDL<span style="font-family: 宋体;">，</span>SOAP<span style="font-family: 宋体;">是</span>WSDL<span style="font-family: 宋体;">。</span></p>
<p><span style="font-family: 宋体;">远程方法调用</span></p>
<p><span style="font-family: 宋体;"><img alt="" src="http://www.blogjava.net/images/blogjava_net/xujun7/parameter.jpg" width="716" height="525" /><br />
</span></p>
<p><span style="font-family: 宋体;">存根：</span></p>
<p style="margin-left: 18pt; text-indent: -18pt;"><span><span>1.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-family: 宋体;">被使用的远程对象的标识符；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt;"><span><span>2.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-family: 宋体;">被调用的方法的描述；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt;"><span><span>3.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-family: 宋体;">编组后的参数。</span></p>
<p><span style="font-family: 宋体;">服务端接受对象：</span></p>
<p style="margin-left: 18pt; text-indent: -18pt;"><span><span>1.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-family: 宋体;">反编组参数；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt;"><span><span>2.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-family: 宋体;">定位要调用的对象；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt;"><span><span>3.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-family: 宋体;">调用所需方法；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt;"><span><span>4.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-family: 宋体;">捕获返回值或该调用产生的异常，并对它编组；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt;"><span><span>5.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-family: 宋体;">将返回值编组，打包送给客户端存根。</span></p>
<p><span style="font-family: 宋体;">远程对象的所有接口都必须继承</span>Remote<span style="font-family: 宋体;">接口，</span>java.rmi.remote<span style="font-family: 宋体;">。接口中的所有方法也必须抛出</span>RemoteException<span style="font-family: 宋体;">异常。</span></p>
<p><span style="font-family: 宋体;">基本的</span>RMI<span style="font-family: 宋体;">类</span></p>
<p><span style="font-family: 宋体;"><img alt="" src="http://www.blogjava.net/images/blogjava_net/xujun7/RMIclass.jpg" width="441" height="527" /><br />
</span></p>
<p><span style="font-family: 宋体;">服务器类通常继承自</span>java.rmi.server.RemoteServer<span style="font-family: 宋体;">类。</span>RemoteServer<span style="font-family: 宋体;">是一个抽象类，仅仅定义了服务器对象与其远程存根之间通信的基本机制。</span>UnicastRemoteServer<span style="font-family: 宋体;">是一个实体类，继承自</span>RemoteServer<span style="font-family: 宋体;">。</span></p>
<p><span style="font-family: 宋体;">服务器程序使用自举注册服务来注册对象，然后客户端可以获取这些对象的存根。</span></p>
<p style="text-align: left;" align="left">// server</p>
<p style="text-align: left;" align="left">ProductImpl p1 = new ProductImpl("Blackwell Toaster");</p>
<p style="text-align: left;" align="left">Context namingContext = new InitialContext();//<span style="font-family: 宋体;">建立一个命名</span>context<span style="font-family: 宋体;">来访问</span>RMI<span style="font-family: 宋体;">注册表</span></p>
<p style="text-align: left;" align="left">namingContext.bind("rmi:toaster", p1);//<span style="font-family: 宋体;">将</span>rmi:toaster<span style="font-family: 宋体;">与</span>p1<span style="font-family: 宋体;">对象绑定。</span></p>
<p style="text-align: left;" align="left">// client</p>
<p style="text-align: left;" align="left">Product p = (Product) namingContext.lookup("rmi://yourserver.com/toaster");//<span style="font-family: 宋体;">返回</span>url<span style="font-family: 宋体;">对应的远程对象。</span></p>
<p><span style="font-family: 宋体;">默认情况下，服务器是</span>localhost<span style="font-family: 宋体;">，端口为</span>1099<span style="font-family: 宋体;">。</span></p>
<p><span style="font-family: 宋体;">可获得所有</span>URL<span style="font-family: 宋体;">中带有</span>rmi<span style="font-family: 宋体;">：的服务器对象的列表。</span></p>
<pre><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">NamingEnumeration&lt;NameClassPair&gt; e = namingContext.list("rmi:");<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/xujun7/RMI.jpg" width="754" height="568" /><br />
</span></pre>
<pre><span style="font-size: 10.5pt;">只要实现</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">Serializable</span><span style="font-size: 10.5pt;">接口的类都可以被复制。</span></pre>
<pre><span style="font-size: 10.5pt;">远程对象是作为存根通过网络传递的，而非远程对象是通过复制。</span></pre>
<pre>&nbsp;</pre>
<img src ="http://www.blogjava.net/xujun7/aggbug/286920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-07-15 21:51 <a href="http://www.blogjava.net/xujun7/archive/2009/07/15/286920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core Java学习笔记 XML</title><link>http://www.blogjava.net/xujun7/archive/2009/07/09/286073.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Thu, 09 Jul 2009 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/07/09/286073.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/286073.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/07/09/286073.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/286073.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/286073.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoNormal"><span lang="EN-US">DOM(Document Object Model)</span><span style="font-family: 宋体;">解析器读入的是一个完整的</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">文档，然后将其转化为一个树形结构。适合数据量不大的解析。</span></p>
<p class="MsoNormal"><span lang="EN-US">Document</span><span style="font-family: 宋体;">对象是</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">文档的树形结构在内存中的表现。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">要读入一个文档，首先要一个</span><span lang="EN-US">DocumentBuilder</span><span style="font-family: 宋体;">对象，你可以从</span><span lang="EN-US">DocumentBuilderFactory</span><span style="font-family: 宋体;">工厂中得到。</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">DocumentBuilderFactory factory =
DocumentBuilderFactory.<em>newInstance</em>();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">DocumentBuilder builder0020= factory.newDocumentBuilder();<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">File&nbsp;f = "xx.xml";<br />
Document doc = builder.parse(f);<br />
</span><span style="font-size: 10pt; font-family: 宋体; color: black;">或是用一个</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">url<br />
URL u = ......<br />
Document doc = builder.parse(u);<br />
</span><span style="font-size: 10pt; font-family: 宋体; color: black;">还可以是任意的输入流</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"><br />
InputStream in = .......<br />
Document doc = builder.parse(in);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">它有实现</span><span lang="EN-US">Node</span><span style="font-family: 宋体;">接口以及其它子接口的类对象构成。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">可以调用</span><span lang="EN-US">getDocumentElement</span><span style="font-family: 宋体;">方法来分析文档内容，它将返回跟元素</span><span lang="EN-US"><br />
Element root = doc.getDocumentElement();</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">String getTagName()</span><span style="font-family: 宋体;">返回元素的标签名。</span></p>
<p class="MsoNormal"><span lang="EN-US">NodeList getChildNodes()</span><span style="font-family: 宋体;">得到该元素的子元素，它将返回一个</span><span lang="EN-US">NodeList</span><span style="font-family: 宋体;">集合。</span></p>
<p class="MsoNormal"><span lang="EN-US">String getAttribute()</span><span style="font-family: 宋体;">返回属性值。</span></p>
<p class="MsoNormal"><span lang="EN-US">trim()</span><span style="font-family: 宋体;">把实际数据前后的空白字符删掉。</span></p>
<p class="MsoNormal"><span lang="EN-US">org.w3c.dom.Node</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">DTD</span><span style="font-family: 宋体;">和</span><span lang="EN-US">XML schema</span><span style="font-family: 宋体;">包含了用于解释文档是如何构成的规则。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">SAX</span><span style="font-family: 宋体;">解析器是在解析</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">输入的构件时就报告事件，但不会以任何方式存储文档，有事件处理器决定是否要建立数据结构，实际上，</span><span lang="EN-US">DOM</span><span style="font-family: 宋体;">解析器是在</span><span lang="EN-US">SAX</span><span style="font-family: 宋体;">解析器基础上建立起来的。</span></p>
<p class="MsoNormal"><span lang="EN-US">SAX</span><span style="font-family: 宋体;">解析时，需要一个处理器来解析，要实现</span><span lang="EN-US">ContentHandler
</span><span style="font-family: 宋体;">接口，他定义了很多回调方法。</span></p>
<p class="MsoNormal"><span lang="EN-US">startElement</span><span style="font-family: 宋体;">和</span><span lang="EN-US">endElement </span><span style="font-family: 宋体;">在每当遇到起始或结束时各调用一次。</span><span lang="EN-US"><br />
characters</span><span style="font-family: 宋体;">每当遇到字符时调用，</span><span lang="EN-US"><br />
startDocument</span><span style="font-family: 宋体;">和</span><span lang="EN-US">endDocument</span><span style="font-family: 宋体;">分别在文档开始和结束时各调用一次。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">SAXParserFactory saxfactory =
SAXParserFactory.<em>newInstance</em>();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">SAXParser parser = saxfactory.newSAXParser();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US">parser.parse(source, handler);</span><span lang="EN-US"> //source</span><span style="font-family: 宋体;">是要处理的文件，</span><span lang="EN-US">handler</span><span style="font-family: 宋体;">处理器的一个子类</span></p>
<p class="MsoNormal"><span lang="EN-US">defaultHandler</span><span style="font-family: 宋体;">实现了四个接口。</span></p>
<p class="MsoNormal"><span lang="EN-US">ContentHandler</span></p>
<p class="MsoNormal"><span lang="EN-US">DTDHandler</span></p>
<p class="MsoNormal"><span lang="EN-US">EntityResolver</span></p>
<p class="MsoNormal"><span lang="EN-US">ErrorHandler</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;" lang="EN-US">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;" lang="EN-US">class</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"> <span style="background: silver none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">DefaultHandler</span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: 21pt;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;" lang="EN-US">implements</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-US"> EntityResolver, DTDHandler,
ContentHandler, ErrorHandler<o:p></o:p></span></p>
<img src ="http://www.blogjava.net/xujun7/aggbug/286073.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-07-09 13:20 <a href="http://www.blogjava.net/xujun7/archive/2009/07/09/286073.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Core Java学习笔记 多线程</title><link>http://www.blogjava.net/xujun7/archive/2009/06/30/284818.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Tue, 30 Jun 2009 10:48:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/06/30/284818.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/284818.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/06/30/284818.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/284818.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/284818.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><![endif]-->
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
</xml><![endif]--><!--[if gte mso 9]><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:""@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
.MsoChpDefault
{
mso-bidi-font-family:"Times New Roman";}
/* Page Definitions */
@page
{}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{
mso-style-parent:"";
font-size:10.5pt;
font-family:"Calibri","sans-serif";}
</style>
<![endif]-->
<p><span style="font-family: 宋体;">事件处理</span></p>
<p><span style="font-family: 宋体;">将</span>ColorAction<span style="font-family: 宋体;">作为</span>ButtonPanel<span style="font-family: 宋体;">类的内部类，</span>ColorAction<span style="font-family: 宋体;">就自动拥有访问外部类的权限。</span></p>
<p><span style="font-family: 宋体;">将组件变成事件监听器，</span>panel<span style="font-family: 宋体;">本身作为事件监听器</span></p>
<p>Object source = event.getSource()<span style="font-family: 宋体;">返回发生事件的对象引用。</span></p>
<p>String command = event.getActionCommand()</p>
<p>getSystemLookAndFeelClassName()<span style="font-family: 宋体;">获取系统观感</span></p>
<p>UIManager.setLookAndFeel(String className)<span style="font-family: 宋体;">设置观感</span></p>
<p>Java<span style="font-family: 宋体;">中实现一个接口的任何类都必须实现其中的所有方法。</span></p>
<p>Public interface WindowsListener</p>
<p><span>Public class WindowsAdapter implements
WindowsListener</span></p>
<p><span style="font-family: 宋体;">匿名内部类</span></p>
<p>EventObject<span style="font-family: 宋体;">类有一个子类</span>AWTEvent<span style="font-family: 宋体;">，它是所有</span>AWT<span style="font-family: 宋体;">事件类的父类。</span>Swing<span style="font-family: 宋体;">组件将生成其他事件类型的事件对象；它们都直接扩展于</span>EventObject<span style="font-family: 宋体;">，而不是</span>AWTEvent<span style="font-family: 宋体;">。</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Java</span><span style="font-size: 10pt; font-family: 宋体; color: black;">使用一个线程在后台进行垃圾回收。</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Sleep()</span><span style="font-size: 10pt; font-family: 宋体; color: black;">是</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Thread</span><span style="font-size: 10pt; font-family: 宋体; color: black;">类的一个静态方法，暂停当前线程活动。会抛出</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">InterruptedException</span><span style="font-size: 10pt; font-family: 宋体; color: black;">异常。</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">实现</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Runnable</span><span style="font-size: 10pt; font-family: 宋体; color: black;">接口</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">public interface Runnable{</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; public
abstract void run();</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">}</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Thread t = new Thread(Runnable r);</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">当你用</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">new</span><span style="font-size: 10pt; font-family: 宋体; color: black;">操作符创建一个线程时。还没有调用</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">thread.start()</span><span style="font-size: 10pt; font-family: 宋体; color: black;">，处于新生状态。</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">t.start;</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">调用了</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">thread.start()</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法之后。线程就变成了</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Runnable</span><span style="font-size: 10pt; font-family: 宋体; color: black;">状态了。</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Thread</span><span style="font-size: 10pt; font-family: 宋体; color: black;">的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">start</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法会创建一个新的线程来执行</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">run</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法，启动这个线程，将引发调用</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">run()</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法。</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Thread(Runnable target)</span><span style="font-size: 10pt; font-family: 宋体; color: black;">构造一个新的线程来调用指定</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">target</span><span style="font-size: 10pt; font-family: 宋体; color: black;">的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">run()</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法。</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">当</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">interrupt</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法在一个线程上被调用时，该线程的中断状态将被置位。</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">调用静态的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Thread.currentThread</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法来取得当前的线程。然后调用它的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">isInterrupted</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法。</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">如果一个线程被阻塞了，就无法检查中断状态了。就会产生</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">InterruptedException</span><span style="font-size: 10pt; font-family: 宋体; color: black;">异常。例如</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">sleep</span><span style="font-size: 10pt; font-family: 宋体; color: black;">或者</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">wait</span><span style="font-size: 10pt; font-family: 宋体; color: black;">，这时候程序是在等待的，所以不可能去检查</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">currentThread().isInterrupted()</span><span style="font-size: 10pt; font-family: 宋体; color: black;">是否返回</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">true</span><span style="font-size: 10pt; font-family: 宋体; color: black;">。</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">当</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">sleep</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法抛出一个</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">InterruptedException</span><span style="font-size: 10pt; font-family: 宋体; color: black;">异常时，它同时也会清除中断状态。</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Thread</span><span style="font-size: 10pt; font-family: 宋体; color: black;">接口：</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><br />
void interrupt()<br />
</span><span style="font-size: 10pt; font-family: 宋体; color: black;">发送一个中断请求给一个线程。中断状态被设为</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">true</span><span style="font-size: 10pt; font-family: 宋体; color: black;">。如果正在被</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">sleep</span><span style="font-size: 10pt; font-family: 宋体; color: black;">调用阻塞，抛出一个</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">InterruptedException</span><span style="font-size: 10pt; font-family: 宋体; color: black;">。</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">static boolean interrupted()<br />
</span><span style="font-size: 10pt; font-family: 宋体; color: black;">检查当前线程是否已经被中断了。调用这个方法会把当前的现成中断状态设置成</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">false. currentThread</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">boolean interrupted()<br />
</span><span style="font-size: 10pt; font-family: 宋体; color: black;">检查一个线程是否已经被终止了。</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">static Thread currentThread()<br />
</span><span style="font-size: 10pt; font-family: 宋体; color: black;">返回当前线程的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Thread</span><span style="font-size: 10pt; font-family: 宋体; color: black;">对象。</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">线程组</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">ThreadGroup g = new ThreadGroup(String
groupName);</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Thread t = new Thread(g, threadName);</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">未捕获异常处理器</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">锁对象</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">同步</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">synchronized</span><span style="font-size: 10pt; font-family: 宋体; color: black;">关键字，</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">ReentrantLock</span><span style="font-size: 10pt; font-family: 宋体; color: black;">类</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Private Lock mylock = new ReentrantLock();</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Mylock.lock;</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Try{</span></p>
<p style="text-indent: 21pt;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">...</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">}finally{</span></p>
<p style="text-indent: 21pt;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Mylock.unlock;</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">}</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">条件对象</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Condition newCondition()</span><span style="font-size: 10pt; font-family: 宋体; color: black;">返回该锁相关的一个条件对象；</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">void await()</span><span style="font-size: 10pt; font-family: 宋体; color: black;">将该线程放到条件的等待集；直到条件被改变时，再次激活等待线程。</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">void signalAll()</span><span style="font-size: 10pt; font-family: 宋体; color: black;">解除该条件的等待集中所有线程的阻塞状态。</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Synchronized</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法，即线程必须先获得对象的锁，才能调用该方法。</span></p>
<p><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">final</span></strong><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">native</span></strong><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">void</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> notify();</span></p>
<p><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">final</span></strong><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">native</span></strong><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">void</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> notifyAll();</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: black;">解除在该对象上调用</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">wait</span><span style="font-size: 10pt; font-family: 宋体; color: black;">的线程的阻塞状态。</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">public final native void wait(long timeout)
throws InterruptedException;</span></p>
<span style="font-size: 10pt; font-family: 宋体; color: black;">导致线程进入等待状态直到被通知。只能在同步的方法中用。</span>
<img src ="http://www.blogjava.net/xujun7/aggbug/284818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-06-30 18:48 <a href="http://www.blogjava.net/xujun7/archive/2009/06/30/284818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java读取properties配置文件</title><link>http://www.blogjava.net/xujun7/archive/2009/06/17/282930.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Wed, 17 Jun 2009 14:38:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/06/17/282930.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/282930.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/06/17/282930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/282930.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/282930.html</trackback:ping><description><![CDATA[<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;sjtu.rfid;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.util.ResourceBundle;<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;ConfigBundle&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;ResourceBundle&nbsp;configBundle&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configBundle&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ResourceBundle.getBundle(</span><span style="color: #000000;">"</span><span style="color: #000000;">config</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;String&nbsp;getUsername()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;username&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;configBundle.getString(</span><span style="color: #000000;">"</span><span style="color: #000000;">username</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(Exception&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;username;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;String&nbsp;getPassword()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;password&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;configBundle.getString(</span><span style="color: #000000;">"</span><span style="color: #000000;">password</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(Exception&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;password;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main(String[]&nbsp;args){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(ConfigBundle.getUsername());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(ConfigBundle.getPassword());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<br />
将XML转为Properties处理<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">Properties&nbsp;prop&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Properties();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prop.loadFromXML(ClassLoader.getSystemResourceAsStream(CONFIG));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;url&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;prop.getProperty(URL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;user&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;prop.getProperty(USER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;password&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;prop.getProperty(PASSWORD);</span></div>
<br />
<img src ="http://www.blogjava.net/xujun7/aggbug/282930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-06-17 22:38 <a href="http://www.blogjava.net/xujun7/archive/2009/06/17/282930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dom4j解析XML</title><link>http://www.blogjava.net/xujun7/archive/2009/06/17/282920.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Wed, 17 Jun 2009 13:52:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/06/17/282920.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/282920.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/06/17/282920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/282920.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/282920.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;sjtu.rfid;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.File;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.Document;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.DocumentException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.Element;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.io.SAXReader;<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;ParserXML&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;Parser(File&nbsp;inputXml){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SAXReader&nbsp;saxReader&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SAXReader();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;document&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;saxReader.read(inputXml);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;root&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;document.getRootElement();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(root.element(</span><span style="color: #000000;">"</span><span style="color: #000000;">username</span><span style="color: #000000;">"</span><span style="color: #000000;">).getText());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(root.element(</span><span style="color: #000000;">"</span><span style="color: #000000;">password</span><span style="color: #000000;">"</span><span style="color: #000000;">).getText());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(DocumentException&nbsp;e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">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){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ParserXML&nbsp;parser&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ParserXML();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parser.Parser(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(</span><span style="color: #000000;">"</span><span style="color: #000000;">config.xml</span><span style="color: #000000;">"</span><span style="color: #000000;">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;sjtu.rfid;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.File;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.FileWriter;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.IOException;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.Document;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.DocumentHelper;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.Element;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.io.XMLWriter;<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;CreateXML&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;createXML(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;document&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DocumentHelper.createDocument();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;configElement&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;document.addElement(</span><span style="color: #000000;">"</span><span style="color: #000000;">config</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configElement.addComment(</span><span style="color: #000000;">"</span><span style="color: #000000;">This&nbsp;is&nbsp;my&nbsp;configueration.</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;usernameElement&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;configElement.addElement(</span><span style="color: #000000;">"</span><span style="color: #000000;">username</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element&nbsp;passwordElement&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;configElement.addElement(</span><span style="color: #000000;">"</span><span style="color: #000000;">password</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usernameElement.addAttribute(</span><span style="color: #000000;">"</span><span style="color: #000000;">id</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">97</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usernameElement.setText(</span><span style="color: #000000;">"</span><span style="color: #000000;">Eric</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passwordElement.setText(</span><span style="color: #000000;">"</span><span style="color: #000000;">1234</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLWriter&nbsp;output&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;XMLWriter(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileWriter(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">d:/config.xml</span><span style="color: #000000;">"</span><span style="color: #000000;">)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.write(document);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(IOException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(e.getMessage());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreateXML&nbsp;create&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;CreateXML();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create.createXML();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
</span></div>
<br />
Nested exception<br />
XML格式错误<br />
<br />
<img src ="http://www.blogjava.net/xujun7/aggbug/282920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-06-17 21:52 <a href="http://www.blogjava.net/xujun7/archive/2009/06/17/282920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Thinking in Java学习笔记(六)</title><link>http://www.blogjava.net/xujun7/archive/2009/06/12/281842.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Fri, 12 Jun 2009 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/06/12/281842.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/281842.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/06/12/281842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/281842.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/281842.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso" /><!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">对象的集合</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">数组</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">数组标识符其实只是一个引用，指向在堆（</span><span lang="EN-US">heap</span><span style="font-family: 宋体;">）中创建的一个真实对象，这个（数组）对象用以保存指向其他对象的引用。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">java.util. Arrays</span><span style="font-family: 宋体;">它有一套</span><span lang="EN-US"> static</span><span style="font-family: 宋体;">方法，提供操作数组的实用功能。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">要保存基本类型，则只能用数组。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">如果你复制对象数组，那么只是复制了引用——不会出现两份对象的拷贝。这被称作浅复制、浅拷贝（</span><span lang="EN-US">shallow copy</span><span style="font-family: 宋体;">）</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Collection:</span><span style="font-family: 宋体;">一组独立的元素，通常有某种规则应用于其上。</span><span lang="EN-US">List</span><span style="font-family: 宋体;">必须保持元素特定的顺序，而</span><span lang="EN-US"> Set</span><span style="font-family: 宋体;">不能有重复元素。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Map:</span><span style="font-family: 宋体;">一组成对的键值对（</span><span lang="EN-US">key-value</span><span style="font-family: 宋体;">）对象。</span><span lang="EN-US">Map</span><span style="font-family: 宋体;">可以返回所有键组成的</span><span lang="EN-US">Set</span><span style="font-family: 宋体;">，所有值组成的</span><span lang="EN-US"> Collection</span><span style="font-family: 宋体;">，或其键值对组成的</span><span lang="EN-US">Set</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Java</span><span style="font-family: 宋体;">的容器类有两种基本类型，区别在于容器中每个位置保存的元素个数。</span><span lang="EN-US">Collection</span><span style="font-family: 宋体;">每个位置只能保存一个元素。包括</span><span lang="EN-US">List</span><span style="font-family: 宋体;">，它以特定的顺序保存一组元素；</span><span lang="EN-US">Set</span><span style="font-family: 宋体;">，元素不能重复。</span><span lang="EN-US">ArrayList </span><span style="font-family: 宋体;">是一种</span><span lang="EN-US">List</span><span style="font-family: 宋体;">，而</span><span lang="EN-US">HashSet</span><span style="font-family: 宋体;">是一种</span><span lang="EN-US">Set</span><span style="font-family: 宋体;">。将元素添入任意</span><span lang="EN-US">Collection</span><span style="font-family: 宋体;">都可使用</span><span lang="EN-US"> add()</span><span style="font-family: 宋体;">方法。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Map</span><span style="font-family: 宋体;">保存的是键值对，（</span><span lang="EN-US">Map</span><span style="font-family: 宋体;">也被称作关联数组）使用方法</span><span lang="EN-US">put()</span><span style="font-family: 宋体;">为</span><span lang="EN-US">Map</span><span style="font-family: 宋体;">添加元素，它需要一个键与一个值作为参数。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Java</span><span style="font-family: 宋体;">容器的&#8220;缺点&#8221;，在将对象加入容器的时候就丢失了类型信息。容器只保存</span><span lang="EN-US">Object</span><span style="font-family: 宋体;">型的引用，这是所有类的基类，因此容器可以保存任何类型的对象。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">将</span><span lang="EN-US">ArrayList</span><span style="font-family: 宋体;">看作是&#8220;能够自动扩展的数组&#8221;。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">迭代器是一个对象，它的工作是遍历并选择序列中的对象。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">1. </span><span style="font-family: 宋体;">使用方法</span><span lang="EN-US">iterator()</span><span style="font-family: 宋体;">要求容器返回一个</span><span lang="EN-US">Iterator</span><span style="font-family: 宋体;">。第一次调用</span><span lang="EN-US">Iterator</span><span style="font-family: 宋体;">的</span><span lang="EN-US">next()</span><span style="font-family: 宋体;">方法时，它返回序列的第一个元素。</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">2. </span><span style="font-family: 宋体;">使用</span><span lang="EN-US">next()</span><span style="font-family: 宋体;">获得序列中的下一个元素。</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">3. </span><span style="font-family: 宋体;">使用</span><span lang="EN-US">hasNext()</span><span style="font-family: 宋体;">检查序列中是否还有元素。</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">4. </span><span style="font-family: 宋体;">使用</span><span lang="EN-US">remove()</span><span style="font-family: 宋体;">将上一次返回的元素从迭代器中移除。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="图片_x0020_2" o:spid="_x0000_i1026" type="#_x0000_t75" alt="container.jpg" style='width:415.5pt;height:401.25pt;visibility:visible;
mso-wrap-style:square'>
<v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.jpg" o:title="container" />
</v:shape><![endif]--><!--[if !vml]--><img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image002.jpg" alt="container.jpg" v:shapes="图片_x0020_2" width="554" height="535" /><!--[endif]--></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">点线方框表示接口，虚线方框表示抽象类，实线方框表示普通的（具体的）类。点线箭头代表特定的类实现一个接口（若是抽象类，则表示部分实现了接口）。实线箭头表示一个类可以生成箭头所指向类的对象。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">三种容器：</span><span lang="EN-US">Map</span><span style="font-family: 宋体;">，</span><span lang="EN-US">List</span><span style="font-family: 宋体;">和</span><span lang="EN-US">Set</span><span style="font-family: 宋体;">，它们各有两到三个实现版本。常用的容器用黑色粗线框表示。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">与持有对象有关的接口是</span><span lang="EN-US">Collection</span><span style="font-family: 宋体;">，</span><span lang="EN-US">List</span><span style="font-family: 宋体;">，</span><span lang="EN-US">Set</span><span style="font-family: 宋体;">和</span><span lang="EN-US">Map</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">接口的优美之处（或者说目的）在于，如果你决定改变当前的实现，只需要在创建的位置做些修改即可。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">List x = new LinkedList();</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">List x = new ArrayList();</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">典型情况是你会生成一个&#8220;具体类&#8221;的对象，然后将它向上转型为对应的接口，在代码中使用接口操作它。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><!--[if gte vml 1]><v:shape id="图片_x0020_3" o:spid="_x0000_i1025" type="#_x0000_t75" alt="container simple.jpg.jpg" style='width:415.5pt;height:246pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image003.jpg" o:title="container simple.jpg" />
</v:shape><![endif]--><!--[if !vml]--><img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image004.jpg" alt="container simple.jpg.jpg" v:shapes="图片_x0020_3" width="554" height="328" /><!--[endif]--></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Collection</span><span style="font-family: 宋体;">的功能方法：</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">可以通过</span><span lang="EN-US">Set</span><span style="font-family: 宋体;">或</span><span lang="EN-US">List</span><span style="font-family: 宋体;">执行的所有操作。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">两种</span><span lang="EN-US">List</span><span style="font-family: 宋体;">：一种是基本的</span><span lang="EN-US">ArrayList</span><span style="font-family: 宋体;">，允许对元素进行快速随机访问，但是向</span><span lang="EN-US"> List </span><span style="font-family: 宋体;">中间插入与移除元素的速度很慢。</span><span lang="EN-US">ListIterator</span><span style="font-family: 宋体;">只应该用来由后向前遍历</span><span lang="EN-US">ArrayList</span><span style="font-family: 宋体;">，而不是用来插入和移除元素，因为那比</span><span lang="EN-US">LinkedList</span><span style="font-family: 宋体;">开销要大很多；另一种是更强大的</span><span lang="EN-US">LinkedList</span><span style="font-family: 宋体;">，对顺序访问进行了优化，向</span><span lang="EN-US">List</span><span style="font-family: 宋体;">中间插入与删除的开销并不大，随机访问则相对较慢。</span><span lang="EN-US">LinkedList </span><span style="font-family: 宋体;">可以当作堆栈、队列和双向队列使用。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">次序是</span><span lang="EN-US">List</span><span style="font-family: 宋体;">最重要的特点；它保证维护元素特定的顺序。一个</span><span lang="EN-US">List</span><span style="font-family: 宋体;">可以生成</span><span lang="EN-US">ListIterator</span><span style="font-family: 宋体;">，使用它可以从两个方向遍历</span><span lang="EN-US">List</span><span style="font-family: 宋体;">，也可以从</span><span lang="EN-US">List</span><span style="font-family: 宋体;">中间插入和移除元素。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Set</span><span style="font-family: 宋体;">具有与</span><span lang="EN-US">Collection</span><span style="font-family: 宋体;">完全一样的接口，实际上</span><span lang="EN-US">Set</span><span style="font-family: 宋体;">就是</span><span lang="EN-US">Collection</span><span style="font-family: 宋体;">，只是行为不同。存入</span><span lang="EN-US">Set </span><span style="font-family: 宋体;">的每个元素都必须是唯一的，因为</span><span lang="EN-US">Set</span><span style="font-family: 宋体;">不保存重复元素。加入</span><span lang="EN-US">Set</span><span style="font-family: 宋体;">的元素必须定义</span><span lang="EN-US">equals()</span><span style="font-family: 宋体;">方法以确保对象的唯一性。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">HashSet</span><span style="font-family: 宋体;">为快速查找设计的</span><span lang="EN-US">Set</span><span style="font-family: 宋体;">。存入</span><span lang="EN-US">HashSet</span><span style="font-family: 宋体;">的对象必须定义</span><span lang="EN-US">hashCode()</span><span style="font-family: 宋体;">。</span></p>
<span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">Set</span><span style="font-size: 10.5pt; font-family: 宋体;">需要维护元素的存储顺序，这意味着你必须实现</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">Comparable</span><span style="font-size: 10.5pt; font-family: 宋体;">接口，并且定义</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">compareTo()</span><span style="font-size: 10.5pt; font-family: 宋体;">方法。</span>
<img src ="http://www.blogjava.net/xujun7/aggbug/281842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-06-12 14:57 <a href="http://www.blogjava.net/xujun7/archive/2009/06/12/281842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Thinking in Java学习笔记(五)</title><link>http://www.blogjava.net/xujun7/archive/2009/06/07/280458.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Sun, 07 Jun 2009 11:33:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/06/07/280458.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/280458.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/06/07/280458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/280458.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/280458.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">运行期类型识别（</span><span lang="EN-US">RTTI</span><span style="font-family: 宋体;">，</span><span lang="EN-US">run-time
type identification</span><span style="font-family: 宋体;">）：当你只有一个指向对象的基类的引用时，</span><span lang="EN-US">RTTI</span><span style="font-family: 宋体;">机制可以让你找出这个对象确切的类型。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">两种方式：一种是传统的</span><span lang="EN-US">
RTTI</span><span style="font-family: 宋体;">，它假定我们在编译期和运行期已经知道了所有的类型；另一种是反射机制（</span><span lang="EN-US">reflection</span><span style="font-family: 宋体;">），它允许我们在运行期获得类的信息。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">多态机制，</span><span lang="EN-US">Shape</span><span style="font-family: 宋体;">对象实际上执行什么样的代码，是由引用指向的具体对象是</span><span lang="EN-US">Circle,Square </span><span style="font-family: 宋体;">或者</span><span lang="EN-US">Triangle</span><span style="font-family: 宋体;">而决定的。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">类型信息在运行期的表示是由</span> <span style="font-family: 宋体;">&#8220;</span><span lang="EN-US">Class </span><span style="font-family: 宋体;">对象&#8221;的特殊对象完成的，它包含了与类有关的信息。</span><span lang="EN-US">Class </span><span style="font-family: 宋体;">对象正是被用来创建类的&#8220;常规&#8221;对象的。每个类都有一个</span><span lang="EN-US"> Class </span><span style="font-family: 宋体;">对象。编写并且编译了一个新类，就会产生一个</span><span lang="EN-US"> Class </span><span style="font-family: 宋体;">对象，保存在一个同名的</span><span lang="EN-US">.class </span><span style="font-family: 宋体;">文件中。想生成这个类的一个对象，运行这个程序的</span><span lang="EN-US"> Java </span><span style="font-family: 宋体;">虚拟机首先检查这个类的</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">对象是否已经加载。如果尚未加载，</span><span lang="EN-US">JVM </span><span style="font-family: 宋体;">就会根据类名查找</span><span lang="EN-US">.class </span><span style="font-family: 宋体;">文件，并将其载入。</span><span lang="EN-US">Java </span><span style="font-family: 宋体;">程序并不是一开始执行，就被完全加载的。一旦某个类的</span><span lang="EN-US"> Class </span><span style="font-family: 宋体;">对象被载入内存，它就被用来创建这个类的所有对象。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Class.forName("Gum");</span><span style="font-family: 宋体;">这是</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">类（所有</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">对象都属于这个类型）的一个</span><span lang="EN-US">static
</span><span style="font-family: 宋体;">成员。</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">对象就和其他对象一样，我们可以获取并操作它的引用（这也就是类加载器的工作）。</span><span lang="EN-US">forName()</span><span style="font-family: 宋体;">是取得</span><span lang="EN-US">Class </span><span style="font-family: 宋体;">对象的引用的一种方法。对</span><span lang="EN-US">forName()</span><span style="font-family: 宋体;">的调用是为了它产生的&#8220;副作用&#8221;：如果类</span><span lang="EN-US">Gum</span><span style="font-family: 宋体;">还没有被加载就加载它。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Gum.class; </span><span style="font-family: 宋体;">在编译期就会受到检查。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">TYPE</span><span style="font-family: 宋体;">域是一个引用，指向对应的基本数据类型的</span><span lang="EN-US"> Class </span><span style="font-family: 宋体;">对象。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">RTTI</span><span style="font-family: 宋体;">形式包括：</span>
</p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">1. </span><span style="font-family: 宋体;">经典的类型转换，由</span><span lang="EN-US">RTTI</span><span style="font-family: 宋体;">确保类型转换的正确性，如果你执行了一个错误的类型转换，就会抛出一个</span><span lang="EN-US">ClassCastException</span><span style="font-family: 宋体;">异常。</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">2. </span><span style="font-family: 宋体;">代表对象类型的</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">对象。通过查询</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">对象可以获取运行期所需的信息。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Java </span><span style="font-family: 宋体;">是通过</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">对象来实现</span><span lang="EN-US">RTTI</span><span style="font-family: 宋体;">机制的。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span lang="EN-US">Class.forName()</span></strong><strong><span style="font-family: 宋体;">方法，在获取</span><span lang="EN-US">Class</span></strong><strong><span style="font-family: 宋体;">的引用时，并不需要生成该</span><span lang="EN-US">Class</span></strong><strong><span style="font-family: 宋体;">类型的对象。仅仅是获取引用。</span></strong><span style="font-family: 宋体;">而如果你有了一个类型的对象，那么你可以通过调用</span><span lang="EN-US">getClass()</span><span style="font-family: 宋体;">来获取</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">的引用，这是根类</span><span lang="EN-US">Object</span><span style="font-family: 宋体;">提供的方法。它返回</span><span lang="EN-US">Class </span><span style="font-family: 宋体;">的引用，用来表示对象的实际类型。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Class.getInterfaces()</span><span style="font-family: 宋体;">方法返回</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">对象的数组，这些对象代表的是某个</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">对象所包含的接口。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">如果你有一个</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">对象，可以通过</span><span lang="EN-US">getSuperclass()</span><span style="font-family: 宋体;">获取它的直接基类，返回一个</span><span lang="EN-US">Class</span><span style="font-family: 宋体;">的引用，这意味着在运行期，你可以找到一个对象完整的类层次结构。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Class</span><span style="font-family: 宋体;">的</span><span lang="EN-US">newInstance()</span><span style="font-family: 宋体;">方法创建一个新的对象的方法。&#8220;尽管我不知道你的准确类型是什么，但还是请正确地创建你自己。&#8221;</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">反射（</span><span lang="EN-US">Reflection</span><span style="font-family: 宋体;">）运行期的类信息</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">在编译期，编译器必须知道你要通过</span><span lang="EN-US">RTTI </span><span style="font-family: 宋体;">来处理的所有类。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">java.lang.reflect</span><span style="font-family: 宋体;">包含了</span><span lang="EN-US">Field</span><span style="font-family: 宋体;">，</span><span lang="EN-US">Method</span><span style="font-family: 宋体;">以及</span><span lang="EN-US">Constructor</span><span style="font-family: 宋体;">类（每个类都实现了</span><span lang="EN-US"> Member </span><span style="font-family: 宋体;">接口）。这些类型的对象是由</span><span lang="EN-US">JVM</span><span style="font-family: 宋体;">在运行期创建的，用以表示未知类里对应的成员。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">匿名对象的类信息就能在运行期被完全确定下来，而在编译期不需要知道任何事情。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">通过反射与一个未知类型的对象打交道时，</span><span lang="EN-US">JVM</span><span style="font-family: 宋体;">只是简单地检查这个对象，看它属于哪个特定的类，在做其它事情之前，必须加载那个类的</span><span lang="EN-US"> Class </span><span style="font-family: 宋体;">对象。那个类的</span><span lang="EN-US">.class </span><span style="font-family: 宋体;">文件对于</span><span lang="EN-US">JVM </span><span style="font-family: 宋体;">来说必须是可获取的，要么在本地机器上，要么可以通过网络取得。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span lang="EN-US">RTTI</span></strong><strong><span style="font-family: 宋体;">和反射之间真正的区别只在于，对</span><span lang="EN-US"> RTTI </span></strong><strong><span style="font-family: 宋体;">来说，编译器在编译期打开和检查</span><span lang="EN-US">.class </span></strong><strong><span style="font-family: 宋体;">文件。而对于反射机制来说</span><span lang="EN-US">.class</span></strong><strong><span style="font-family: 宋体;">文件在编译期间是不可获取的，所以是在运行期打开和检查</span><span lang="EN-US">.class </span></strong><strong><span style="font-family: 宋体;">文件。</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span lang="EN-US"><o:p>&nbsp;</o:p></span></strong></p>
<span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">Class</span><span style="font-size: 10.5pt; font-family: 宋体;">的</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">getMethods()</span><span style="font-size: 10.5pt; font-family: 宋体;">和</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">getConstructors()</span><span style="font-size: 10.5pt; font-family: 宋体;">方法分别返回</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">Method </span><span style="font-size: 10.5pt; font-family: 宋体;">数组和</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">Constructor </span><span style="font-size: 10.5pt; font-family: 宋体;">数组。</span>
<img src ="http://www.blogjava.net/xujun7/aggbug/280458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-06-07 19:33 <a href="http://www.blogjava.net/xujun7/archive/2009/06/07/280458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Thinking in Java学习笔记(四)</title><link>http://www.blogjava.net/xujun7/archive/2009/06/07/280438.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Sun, 07 Jun 2009 08:06:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/06/07/280438.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/280438.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/06/07/280438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/280438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/280438.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:595.3pt 841.9pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
layout-grid:15.6pt;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">异常</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">异常能使错误处理代码变得更有条理，只需在一个地方处理错误。把&#8220;描述做什么事&#8221;的代码和&#8220;出了问题怎么办&#8221;的代码相分离。先在一个地方专注于正在解决的问题，然后在别的地方处理这些代码中可能发生的错误。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">异常情形，在当前环境下无法获得必要的信息来解决问题。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Java</span><span style="font-family: 宋体;">将使用</span><span lang="EN-US"> new</span><span style="font-family: 宋体;">在堆上创建异常对象。当前的执行路径被终止，并且从当前环境中弹出异常对象的引用。异常处理机制接管程序，异常处理程序继续执行程序。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">所有标准异常类都有两个构造器：一个是缺省构造器；另一个是接受字符串作为参数，用来把相关信息放入异常对象的构造器。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">创建一个代表错误信息的对象，并且将它从当前环境中&#8220;抛出&#8221;，这样就把错误信息传播到了&#8220;更大&#8221;的环境中，称为&#8220;抛出一个异常&#8221;。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">因为异常返回的&#8220;地点&#8221;与普通方法调用返回的&#8220;地点&#8221;完全不同。异常将在一个恰当的异常处理程序中得到解决。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">&#8220;终止模型&#8221;，一旦异常被抛出，程序无法返回到异常发生的地方继续执行。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">自定义异常</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">class SimpleException extends Exception {}</span><span style="font-family: 宋体;">，让编译器为你产生缺省构造器。对异常来说，最重要的部分就是类型的名称。</span><span lang="EN-US">System.err</span><span style="font-family: 宋体;">打印到控制台的标准错误流。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">异常说明使用了附加的关键字</span><span lang="EN-US">
throws</span><span style="font-family: 宋体;">，后面接一个所有潜在异常类型的列表，可以声明方法将抛出异常，实际上却不抛出。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">通过捕获异常类型的基类</span><span lang="EN-US">Exception</span><span style="font-family: 宋体;">，捕获所有类型的异常。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">String getMessage( ) </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">String getLocalizedMessage( ) </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">用来获取详细信息，或用本地语言表示的详细信息。</span> </p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">String toString( ) </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">返回对</span><span lang="EN-US"> Throwable</span><span style="font-family: 宋体;">的简单描述，要是有详细信息的话，也会把它包含在内。</span> </p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">void printStackTrace( )<span>&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">输出到标准输出流，打印</span><span lang="EN-US">Throwable</span><span style="font-family: 宋体;">和</span><span lang="EN-US">Throwable</span><span style="font-family: 宋体;">的调用栈轨迹。调用栈显示了&#8220;把你带到异常抛出地点&#8221;的方法调用序列。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">重新抛出异常</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">重抛异常会把异常抛给上一级环境中的异常处理程序。同一个</span><span lang="EN-US"> try </span><span style="font-family: 宋体;">块的后续</span><span lang="EN-US"> catch </span><span style="font-family: 宋体;">子句将被忽略。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Throwable</span><span style="font-family: 宋体;">类被用来表示任何可以作为异常被抛出的类。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Throwable</span><span style="font-family: 宋体;">对象可分为两类：</span><span lang="EN-US">Error</span><span style="font-family: 宋体;">编译期和系统错误；</span><span lang="EN-US">Exception </span><span style="font-family: 宋体;">是可以被抛出的基本类型。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">异常的基本的概念是用名称代表发生的问题，并且异常的名称应该可以望文生意。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">运行期异常</span><span lang="EN-US">RuntimeException</span><span style="font-family: 宋体;">，属于错误将被自动捕获。只能在代码中忽略</span><span lang="EN-US"> RuntimeException</span><span style="font-family: 宋体;">（及其子类）类型的异常，其它类型异常的处理都是由编译器强制实施的。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">异常被设计用来处理运行期错误，这些错误往往是由你的代码控制能力之外的因素导致的。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">finally</span><span style="font-family: 宋体;">当你要把除内存之外的资源恢复到它们的初始状态时，就要用到</span><span lang="EN-US"> finally</span><span style="font-family: 宋体;">子句。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">编译器会对异常说明做强制要求，但异常说明本身并不属于方法原型的一部分，方法原型是由方法的名字与参数的类型组成的。因此，你不能根据异常说明的不同来重载方法。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">一个出现在基类方法的异常说明中的异常，不一定会出现在派生类方法的异常说明里。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">并不要求抛出的异常同处理程序所声明的异常完全匹配。派生类的对象也可以匹配处理程序中声明的基类。，</span><span lang="EN-US">catch(Annoyance e)</span><span style="font-family: 宋体;">会捕获</span><span lang="EN-US"> Annoyance</span><span style="font-family: 宋体;">以及所有从它派生的异常。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">异常处理的一个重要目标就是把错误处理的代码同错误发生的地点相分离。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">异常使用指南：</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">1</span><span style="font-family: 宋体;">．</span>
<span style="font-family: 宋体;">在恰当的级别处理问题。（在你知道该如何处理的情况下才捕获异常）。</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">2</span><span style="font-family: 宋体;">．</span>
<span style="font-family: 宋体;">解决问题并且重新调用产生异常的方法。</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">3</span><span style="font-family: 宋体;">．</span>
<span style="font-family: 宋体;">进行少许修补，然后绕过异常发生的地方继续执行。</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">4</span><span style="font-family: 宋体;">．</span>
<span style="font-family: 宋体;">用别的数据进行计算，以代替方法返回的期望值。</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">5</span><span style="font-family: 宋体;">．</span>
<span style="font-family: 宋体;">把当前运行环境下能做的事情尽量作完，然后把相同的异常重抛（</span><span lang="EN-US">rethrow</span><span style="font-family: 宋体;">）到</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">更高层。</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">6</span><span style="font-family: 宋体;">．</span>
<span style="font-family: 宋体;">把当前运行环境下能做的事情尽量作完，然后把不同的异常抛</span><span lang="EN-US">(throw)</span><span style="font-family: 宋体;">到更高</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">层。</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">7</span><span style="font-family: 宋体;">．</span>
<span style="font-family: 宋体;">终止程序。</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">8</span><span style="font-family: 宋体;">．</span>
<span style="font-family: 宋体;">进行简化。（如果异常把问题搞得太复杂，那用起来会非常痛苦也很烦人。）</span><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">9</span><span style="font-family: 宋体;">．</span>
<span style="font-family: 宋体;">让类库和程序更安全。（这既是在为调试做短期投资，也是在为程序的健壮性做</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">长期投资。）</span></p>
<img src ="http://www.blogjava.net/xujun7/aggbug/280438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-06-07 16:06 <a href="http://www.blogjava.net/xujun7/archive/2009/06/07/280438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Thinking in Java学习笔记(二)</title><link>http://www.blogjava.net/xujun7/archive/2009/05/30/279058.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Sat, 30 May 2009 12:53:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/05/30/279058.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/279058.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/05/30/279058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/279058.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/279058.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso" /><!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p class="MsoNormal"><span lang="EN-US">1.</span><span style="font-family: 宋体;">寄存器</span><span lang="EN-US">(register).</span><span style="font-family: 宋体;">位于</span><span lang="EN-US">CPU</span><span style="font-family: 宋体;">中</span><span lang="EN-US">,</span><span style="font-family: 宋体;">所以它是存取速度最快的存储区</span><span lang="EN-US">.</span><span style="font-family: 宋体;">但是由于</span><span lang="EN-US">CPU</span><span style="font-family: 宋体;">中寄存器的数量是非常有限的</span><span lang="EN-US">,</span><span style="font-family: 宋体;">所以寄存器的使用是由</span><span lang="EN-US">CPU</span><span style="font-family: 宋体;">按需进行分配</span><span lang="EN-US">.</span><span style="font-family: 宋体;">编程的时候我们没有必要去对它进行直接控制</span><span lang="EN-US">.</span><span style="font-family: 宋体;">并且在程序中也没办法找到到底什么时候使用了寄存器的依据</span><span lang="EN-US">.<br />
2.</span><span style="font-family: 宋体;">栈</span><span lang="EN-US">(stack).</span><span style="font-family: 宋体;">它位于随机存取存储器</span><span lang="EN-US"><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="图片_x0020_1" o:spid="_x0000_i1026" type="#_x0000_t75" alt="http://www.zoomino.cn/static-ox/images/blank.gif" style='width:.75pt;
height:.75pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.gif" o:title="blank" />
</v:shape><![endif]--><!--[if !vml]--><img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image001.gif" alt="http://www.zoomino.cn/static-ox/images/blank.gif" v:shapes="图片_x0020_1" width="1" height="1" /><!--[endif]--></span><span lang="EN-US">(RAM)</span><span style="font-family: 宋体;">中</span><span lang="EN-US">,</span><span style="font-family: 宋体;">并通过由</span><span lang="EN-US">CPU</span><span style="font-family: 宋体;">直接支持的栈指针</span><span lang="EN-US">(stack pointer)</span><span style="font-family: 宋体;">来进行操作</span><span lang="EN-US">.</span><span style="font-family: 宋体;">栈指针通过向下移动来分配新的存储空间</span><span lang="EN-US">,</span><span style="font-family: 宋体;">并通过向上移动来释放存储空间</span><span lang="EN-US">.</span><span style="font-family: 宋体;">这是仅次于寄存器的另一种高速有效地分配存储空间的方式</span><span lang="EN-US">.</span><span style="font-family: 宋体;">在创建程序期间</span><span lang="EN-US">,Java</span><span style="font-family: 宋体;">编译器必须知道存储在栈上的所有数据的准确大小和它们的生命周期</span><span lang="EN-US">.</span><span style="font-family: 宋体;">这样它才能够产生代码来让栈指针上下地移动</span><span lang="EN-US">.</span><span style="font-family: 宋体;">但这种约束限制了代码的灵活性</span><span lang="EN-US">,</span><span style="font-family: 宋体;">所以当某些</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">存储区在栈上的时候</span><span lang="EN-US">——</span><span style="font-family: 宋体;">特别是</span><span lang="EN-US">,</span><span style="font-family: 宋体;">对象引用</span><span lang="EN-US"><!--[if gte vml 1]><v:shape id="图片_x0020_2" o:spid="_x0000_i1025" type="#_x0000_t75" alt="http://www.zoomino.cn/static-ox/images/blank.gif" style='width:.75pt;height:.75pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.gif" o:title="blank" />
</v:shape><![endif]--><!--[if !vml]--><img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image001.gif" alt="http://www.zoomino.cn/static-ox/images/blank.gif" v:shapes="图片_x0020_2" width="1" height="1" /><!--[endif]--></span><span lang="EN-US">(object reference)――</span><span style="font-family: 宋体;">而</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">对象本身并不被存储在栈上</span><span lang="EN-US">.</span></p>
<p class="MsoNormal"><span lang="EN-US">3.</span><span style="font-family: 宋体;">堆</span><span lang="EN-US">(heap).</span><span style="font-family: 宋体;">这是存储</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">所有对象的内存池</span><span lang="EN-US">(</span><span style="font-family: 宋体;">同样在</span><span lang="EN-US">RAM</span><span style="font-family: 宋体;">区域中</span><span lang="EN-US">).</span><span style="font-family: 宋体;">堆的优点是</span><span lang="EN-US">,</span><span style="font-family: 宋体;">它不像栈一样</span><span lang="EN-US">,</span><span style="font-family: 宋体;">编译器并不需要知道它应该从堆中分配多大的存储空间</span><span lang="EN-US">,</span><span style="font-family: 宋体;">或者存储空间应该在堆上存在多久</span><span lang="EN-US">.</span><span style="font-family: 宋体;">因此</span><span lang="EN-US">,</span><span style="font-family: 宋体;">在堆上分配多大的存储空间具有很大的灵活性</span><span lang="EN-US">.</span><span style="font-family: 宋体;">无论你何时需要创建对象</span><span lang="EN-US">,</span><span style="font-family: 宋体;">你只需要简单的在代码中使用关键字</span><span lang="EN-US"> new</span><span style="font-family: 宋体;">来创建它就行了</span><span lang="EN-US">.</span><span style="font-family: 宋体;">在这段代码被执行时候就在堆</span><span lang="EN-US">(heap)</span><span style="font-family: 宋体;">上面分配相应的存储空间</span><span lang="EN-US">.</span><span style="font-family: 宋体;">当然</span><span lang="EN-US">,</span><span style="font-family: 宋体;">为这样的灵活性也需要付出一定的代价</span><span lang="EN-US">:</span><span style="font-family: 宋体;">在堆上分配存储空间比在栈上分配存储空间要更加耗时</span><span lang="EN-US">(</span><span style="font-family: 宋体;">如果你能够在</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">中像在</span><span lang="EN-US">C++</span><span style="font-family: 宋体;">一样</span><span lang="EN-US">,</span><span style="font-family: 宋体;">在</span><span lang="EN-US">stack</span><span style="font-family: 宋体;">上创建对象的话</span><span lang="EN-US">).</span></p>
<p class="MsoNormal"><span lang="EN-US">4.</span><span style="font-family: 宋体;">静态存储区</span><span lang="EN-US">(static
storage).&#8221;</span><span style="font-family: 宋体;">静态</span><span lang="EN-US">(static)&#8221;</span><span style="font-family: 宋体;">在这里表示</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">在一个固定的位置</span><span lang="EN-US">&#8221;(</span><span style="font-family: 宋体;">尽管它同样在</span><span lang="EN-US">RAM</span><span style="font-family: 宋体;">中</span><span lang="EN-US">).</span><span style="font-family: 宋体;">静态存储区包括</span><span lang="EN-US">:</span><span style="font-family: 宋体;">对于程序的整个运行期间都有效的</span>
<span style="font-family: 宋体;">数据</span><span lang="EN-US">.</span><span style="font-family: 宋体;">你能够使用关键字</span><span lang="EN-US">static</span><span style="font-family: 宋体;">来指定特殊的对象为静态的</span><span lang="EN-US">.</span><span style="font-family: 宋体;">但是</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">对象自身却从来不放置在静态存储区中</span><span lang="EN-US">.</span></p>
<p class="MsoNormal"><span lang="EN-US">5.</span><span style="font-family: 宋体;">常量存储区</span><span lang="EN-US">(constant
storage).</span><span style="font-family: 宋体;">常量通常被直接放置在程序代码当中</span><span lang="EN-US">.</span><span style="font-family: 宋体;">这是安全的。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">基本类型存放在堆栈中，每种基本类型所占存储空间的大小都是确定的。基本类型具有包装器类，可以在堆中创建一个非基本对象，用来表示对应的基本类型。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">基本成员默认值</span><span lang="EN-US"><br />
</span><span style="font-family: 宋体;">若类的某个成员是基本数据类型，即使没有进行初始化，</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">也会确保它获得一个默认值。如下表所示：</span><span lang="EN-US"><br />
</span><span style="font-family: 宋体;">基本类型</span><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体;">默认值</span><span lang="EN-US"><br />
boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
false<br />
char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&#8216;\u0000&#8217; (null)<br />
byte&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(byte)0<br />
short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(short)0<br />
int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0<br />
long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0L<br />
float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0.0f<br />
double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0.0d</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">然而上述确保初始化的方法并不适用于</span><span lang="EN-US">&#8220;</span><span style="font-family: 宋体;">局部</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">变量（即并非是某个类的属性）。因此，如果在某个方法中有这样定义：</span><span lang="EN-US"><br />
int x;<br />
</span><span style="font-family: 宋体;">那么变量</span><span lang="EN-US">x</span><span style="font-family: 宋体;">得到的可能是任意值，而不会被自动初始化为零。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Static</span><span style="font-family: 宋体;">的数据和方法不会与包含它的类的任何对象实例关联在一起。非</span><span lang="EN-US">static</span><span style="font-family: 宋体;">数据和方法必须知道它们一起运作的特定对象。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">通常一个普通类不允许声明为静态的，只有一个内部类才可以。这时这个声明为静态的内部类可以直接作为一个普通类来使用，而不需实例一个外部类。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Java</span><span style="font-family: 宋体;">中，类构造器由编译器调用，无返回值。如果没有写构造器，编译器会自动创建一个构造器，如果写了构造器，编译器就不会自动创建缺省构造器。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">this</span><span style="font-family: 宋体;">编译器把所操作对象的引用作为第一个参数传递给成员函数。在方法内部获得当前对象的引用。</span><span lang="EN-US">this</span><span style="font-family: 宋体;">关键字只能在方法内部使用，表示对调用方法的那个对象的引用。</span></p>
<p class="MsoNormal"><span lang="EN-US">static</span><span style="font-family: 宋体;">方法就是没有</span><span lang="EN-US">this</span><span style="font-family: 宋体;">的方法。在</span><span lang="EN-US">static</span><span style="font-family: 宋体;">方法内部不能调用非静态方法，反过来却可以。</span></p>
<p class="MsoNormal"><span lang="EN-US">&#8220;this</span><span style="font-family: 宋体;">通常指代当前对象，</span><span lang="EN-US">super</span><span style="font-family: 宋体;">通常指代父类</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">。当你想要引用当前对象的某种东西，比如当前对象的某个方法，或当前对象的某个成员，你便可以利用</span><span lang="EN-US">this </span><span style="font-family: 宋体;">来实现这个目的，当然，</span><span lang="EN-US">this</span><span style="font-family: 宋体;">的另一个用途是调用当前对象的另一个构造函数。如果你想引用父类的某种东西，则</span><span lang="EN-US">super</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">最普遍的情况就是，在你的方法中的某个形参名与当前对象的某个成员有相同的名字，这时为了不至于混淆，你便需要明确使用</span><span lang="EN-US">this</span><span style="font-family: 宋体;">关键字来指明你要使用某个成员，使用方法是</span><span lang="EN-US">&#8220;this.</span><span style="font-family: 宋体;">成员名</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">，而不带</span><span lang="EN-US">this</span><span style="font-family: 宋体;">的那个便是形参。另外，还可以用</span><span lang="EN-US">&#8220;this.</span><span style="font-family: 宋体;">方法名</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">来引用当前对象的某个方法，但这时</span><span lang="EN-US">this</span><span style="font-family: 宋体;">就不是必须的了，你可以直接用方法名来访问那个方法，编译器会知道你要调用的是那一个。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">在构造函数中，</span><span lang="EN-US">this</span><span style="font-family: 宋体;">和</span><span lang="EN-US">super</span><span style="font-family: 宋体;">不再是像以前那样用</span><span lang="EN-US">&#8220;.&#8221;</span><span style="font-family: 宋体;">连接一个方法或成员，而是直接在其后跟上适当的参数，因此它的意义也就有了变化。在构造器中，</span><span lang="EN-US">this</span><span style="font-family: 宋体;">只能调用一个构造器，且必须将构造器调用置于最起始处。</span><span lang="EN-US">super</span><span style="font-family: 宋体;">后加参数的是用来调用父类中具有相同形式的构造函数。</span><span lang="EN-US">this</span><span style="font-family: 宋体;">后加参数则调用的是当前具有相同参数的构造函数。</span></p>
<p class="MsoNormal"><span lang="EN-US">final</span><span style="font-family: 宋体;">成员：当你在类中定义变量时，在其前面加上</span><span lang="EN-US">final</span><span style="font-family: 宋体;">关键字，那便是说，这个变量一旦被初始化便不可改变，这里不可改变的意思对基本类型来说是其值不可变，而对</span>
<span style="font-family: 宋体;">于对象变量来说其引用不可再变。其初始化可以在两个地方，一是其定义处，也就是说在</span><span lang="EN-US">final</span><span style="font-family: 宋体;">变量定义时直接给其赋值，二是在构造函数中。这两个地方只能</span>
<span style="font-family: 宋体;">选其一，要么在定义时给值，要么在构造函数中给值，不能同时既在定义时给了值，又在构造函数中给另外的值。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">如果不加访问权限，则默认为包访问权限，即包内的类对其有访问权限。</span></p>
<p class="MsoNormal"><strong><span lang="EN-US">protected</span></strong><span style="font-family: 宋体;">：继承访问权限。基类通过</span><span lang="EN-US">protected</span><span style="font-family: 宋体;">把访问权限赋予派生类而不是所有类，</span><span lang="EN-US"><br />
</span><span style="font-family: 宋体;">另外，</span><span lang="EN-US">protected</span><span style="font-family: 宋体;">也提供包访问权限，也就是说，相同包内的其他类可以访问</span><span lang="EN-US">protected</span><span style="font-family: 宋体;">元素。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">对于类访问权限来说，</span><span lang="EN-US"><br />
</span><span style="font-family: 宋体;">仅有两个选择：包访问权限或</span><span lang="EN-US">public</span><span style="font-family: 宋体;">。</span><span lang="EN-US"><br />
</span><span style="font-family: 宋体;">类既不可以是</span><span lang="EN-US">private</span><span style="font-family: 宋体;">的，也不可以是</span><span lang="EN-US">protected</span><span style="font-family: 宋体;">的，但内部类是个特例，一个内部类可以是</span><span lang="EN-US">private</span><span style="font-family: 宋体;">或</span><span lang="EN-US">protected</span><span style="font-family: 宋体;">的。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<span style="font-size: 10.5pt; font-family: 宋体;">每个</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">.java</span><span style="font-size: 10.5pt; font-family: 宋体;">文件只能有一个</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">public</span><span style="font-size: 10.5pt; font-family: 宋体;">类。这么做的意思是，每个编译单元只能有一个公开的接口，而这个接口就由其</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">public</span><span style="font-size: 10.5pt; font-family: 宋体;">类来表示。你可以根据需要，往这个文件里面添加任意多个提供辅助功能的</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">package</span><span style="font-size: 10.5pt; font-family: 宋体;">权限的类。但是如果这个编译单元里面有两个或两个以上</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">public</span><span style="font-size: 10.5pt; font-family: 宋体;">类的话，编译器就会报错。</span>
<img src ="http://www.blogjava.net/xujun7/aggbug/279058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-05-30 20:53 <a href="http://www.blogjava.net/xujun7/archive/2009/05/30/279058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Thinking in Java学习笔记(三)</title><link>http://www.blogjava.net/xujun7/archive/2009/05/30/279057.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Sat, 30 May 2009 12:50:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/05/30/279057.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/279057.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/05/30/279057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/279057.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/279057.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" />
<link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef/>
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267">
<w:LsdException locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal" />
<w:LsdException locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 2" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 3" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 4" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 5" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 6" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 7" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 8" />
<w:LsdException locked="false" priority="9" qformat="true" name="heading 9" />
<w:LsdException locked="false" priority="39" name="toc 1" />
<w:LsdException locked="false" priority="39" name="toc 2" />
<w:LsdException locked="false" priority="39" name="toc 3" />
<w:LsdException locked="false" priority="39" name="toc 4" />
<w:LsdException locked="false" priority="39" name="toc 5" />
<w:LsdException locked="false" priority="39" name="toc 6" />
<w:LsdException locked="false" priority="39" name="toc 7" />
<w:LsdException locked="false" priority="39" name="toc 8" />
<w:LsdException locked="false" priority="39" name="toc 9" />
<w:LsdException locked="false" priority="35" qformat="true" name="caption" />
<w:LsdException locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title" />
<w:LsdException locked="false" priority="1" name="Default Paragraph Font" />
<w:LsdException locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle" />
<w:LsdException locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong" />
<w:LsdException locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis" />
<w:LsdException locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid" />
<w:LsdException locked="false" unhidewhenused="false" name="Placeholder Text" />
<w:LsdException locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1" />
<w:LsdException locked="false" unhidewhenused="false" name="Revision" />
<w:LsdException locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph" />
<w:LsdException locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote" />
<w:LsdException locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5" />
<w:LsdException locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6" />
<w:LsdException locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6" />
<w:LsdException locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6" />
<w:LsdException locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6" />
<w:LsdException locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6" />
<w:LsdException locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6" />
<w:LsdException locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6" />
<w:LsdException locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6" />
<w:LsdException locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6" />
<w:LsdException locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6" />
<w:LsdException locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6" />
<w:LsdException locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6" />
<w:LsdException locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6" />
<w:LsdException locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6" />
<w:LsdException locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis" />
<w:LsdException locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis" />
<w:LsdException locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference" />
<w:LsdException locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference" />
<w:LsdException locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title" />
<w:LsdException locked="false" priority="37" name="Bibliography" />
<w:LsdException locked="false" priority="39" qformat="true" name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]--><style>
<!-- /* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:宋体;
mso-bidi-font-family:宋体;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:21.0pt;
mso-char-indent-count:2.0;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:595.3pt 841.9pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
layout-grid:15.6pt;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:130906400;
mso-list-type:hybrid;
mso-list-template-ids:857491832 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:21.0pt;
text-indent:-21.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<p><span style="font-size: 10.5pt;">名称屏蔽：如果</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">java</span><span style="font-size: 10.5pt;">的基类拥有某个已被多次重载的方法名称，那么在导出类中重新定义该方法名称并不会屏蔽其在基类中的任何版本（这一点于</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">C++</span><span style="font-size: 10.5pt;">不同）。因此，无论是在该层或者它的基类中对方法进行定义，重载机制都可以正常工作。这句话的意思是指：如果基类有方法</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US"> void method</span><span style="font-size: 10.5pt;">（）</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US"> String method</span><span style="font-size: 10.5pt;">（</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">int i</span><span style="font-size: 10.5pt;">），那么在导出类中定义</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US"> int method</span><span style="font-size: 10.5pt;">（</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US">char a</span><span style="font-size: 10.5pt;">）</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;"> </span><span style="font-size: 10.5pt;">并不会吧基类的方法给屏蔽，基类的重载方法是可以用的。导出类同样可以重载。</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">类的复用有两种方法：组合（</span><span lang="EN-US">composition</span><span style="font-family: 宋体;">）和继承</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">组合技术通常用于想在新类中使用现有类的功能而非它的接口这种情形，一般在新类中嵌入一个现有类的</span><span lang="EN-US">private</span><span style="font-family: 宋体;">对象。但有时，允许类的用户访问新类中的组合部分是极具意义的。如果成员对象自身都隐藏了具体实现，那么将它声明为</span><span lang="EN-US">public</span><span style="font-family: 宋体;">也是安全的。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">组合一般是将现有类型作为新类型底层实现的一部分来加以复用，而继承复用的是接口，由于导出类具有基类的接口，所以它可以向上转型至基类。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">向上转型</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">新类是现有类的一种类型。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">向上转型中子类将能看到父类被覆盖字段</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">在子类继承父类之后，如果子类与父类有同名的字段和方法，那么子类中的子段会代替或隐藏父类的子段，说明子类字段覆盖了超类字段，但可以通过</span><span lang="EN-US">super</span><span style="font-family: 宋体;">关</span>
<span style="font-family: 宋体;">键字去访问超类字段。但是，在我们将子类对象向超类转型的时候就会发生这个奇怪的现象，子类对象居然可以看到父类曾经被覆盖掉的字段！</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">一定要注意：当把子类转换成超类时，子类可以见到或访问被隐藏的同名变量。</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">允许名字重复的原因是，允许将来把新的字段加到超类中，而不影响已经使用了该名字的现有子类，子类将会继续使用自己的字段副本。除非让子类以超类对象的形式出现，方法可以覆盖，但是字段不能被覆盖。注意：最好不要隐藏超类中的字段名。</span><span lang="EN-US"><br />
</span><span style="font-family: 宋体;">所以我们在进行向上转型的时候一定要注意：不要访问子类中那些</span><span lang="EN-US">&#8220;</span><span style="font-family: 宋体;">覆盖</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">掉父类的字段（它并没有真正覆盖掉，在向上转型的时候就可以访问的到），要么将子类字段改名（在你知道父类代码的情况下），要么通过方法来访问字类字段（方法即使同名也肯定能覆盖掉）。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">在向上转型的过程中，类接口中唯一可能发生的事情是丢失方法，而不是获取它们。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">是否需要从新类向基类进行向上转型，如果必须向上转型，则继承是必要的。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">final</span><span style="font-family: 宋体;">数据</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">1. </span><span style="font-family: 宋体;">它可以是一个永不改变的</span><span lang="EN-US">&#8220;</span><span style="font-family: 宋体;">编译期常量（</span><span lang="EN-US">compile-time constant</span><span style="font-family: 宋体;">）</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">2. </span><span style="font-family: 宋体;">它可以是一个在运行期被初始化的值，而你不希望它被改变。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">在编译期常量的情况下，编译器可以将该常量值带入任何可能用到它的计算式中。就是说，可以在编译期执行计算式，减轻了一些运行期的负担。这类常量必须是基本类型。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">一个既是</span><span lang="EN-US">static</span><span style="font-family: 宋体;">又是</span><span lang="EN-US">final</span><span style="font-family: 宋体;">的域只占有一份不能改变的存储空间。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">对于原始类型，</span><span lang="EN-US">final</span><span style="font-family: 宋体;">使数值恒定不变，而用于对象引用，</span><span lang="EN-US">final</span><span style="font-family: 宋体;">使引用恒定不变。一旦引用被初始化指向一个对象，就无法对它进行改变以指向另一个对象。然而，对象其自身却是可以被修改的，</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">并未提供使任何对象恒定不变的途径。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Java</span><span style="font-family: 宋体;">允许生成空白</span><span lang="EN-US">final</span><span style="font-family: 宋体;">（</span><span lang="EN-US">Blank final</span><span style="font-family: 宋体;">），所谓空白</span><span lang="EN-US">final</span><span style="font-family: 宋体;">是指被声明为</span><span lang="EN-US">final</span><span style="font-family: 宋体;">但又未给定初值的数据成员。无论什么情况，编译器都确保空白</span><span lang="EN-US"> final</span><span style="font-family: 宋体;">在使用前必须被初始化。但是，空白</span><span lang="EN-US">final</span><span style="font-family: 宋体;">在关键字</span><span lang="EN-US">final</span><span style="font-family: 宋体;">的使用上提供了更大的灵活性，为此，一个类中的</span><span lang="EN-US">final</span><span style="font-family: 宋体;">数据成员就可以实现依对象而有所不同，却又保持其恒定不变的特性。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">Java</span><span style="font-family: 宋体;">允许你以在参数列表中以声明的方式将参数指明为</span><span lang="EN-US">final</span><span style="font-family: 宋体;">。这意味着你无法在方法中更改参数引用所指向的对象。你可以读参数，却无法修改参数。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">使用</span><span lang="EN-US">final</span><span style="font-family: 宋体;">方法的原因有两个。第一个原因是把方法锁定，以预防任何继承类修改它的意义。这是出于设计的考虑：你想要确保在继承中方法行为保持不变，并且不会被重载。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">使用</span><span lang="EN-US">final</span><span style="font-family: 宋体;">方法的第二个原因是效率。如果你将一个方法指明为</span><span lang="EN-US">final</span><span style="font-family: 宋体;">，就是同意编译器将针对该方法的所有调用都转为内嵌（</span><span lang="EN-US">inline</span><span style="font-family: 宋体;">）调用。</span><span lang="EN-US">C++</span><span style="font-family: 宋体;">中的内联函数，空间换时间</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">类中所有的</span><span lang="EN-US">private</span><span style="font-family: 宋体;">方法都被隐含是</span><span lang="EN-US">final</span><span style="font-family: 宋体;">的。由于你无法取用</span><span lang="EN-US">private</span><span style="font-family: 宋体;">方法，所以你也无法重载之。如果你试图重载一个</span><span lang="EN-US">private</span><span style="font-family: 宋体;">方法（隐含是</span><span lang="EN-US">final</span><span style="font-family: 宋体;">的），看起来是奏效的，而且编译器也不会给出错误信息。覆盖只有在某方法是基类的接口的一部分时才会出现。如果某方法是</span><span lang="EN-US">private</span><span style="font-family: 宋体;">，它就不是基类的接口的一部分。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">当你将某个类的整体定义为</span><span lang="EN-US">final</span><span style="font-family: 宋体;">时（通过将关键字</span><span lang="EN-US">final</span><span style="font-family: 宋体;">置于它的定义之前），你就声明了你不打算继承该类，而且也不允许别人这样做。</span><span lang="EN-US">Final</span><span style="font-family: 宋体;">类禁止继承，所以</span><span lang="EN-US">final</span><span style="font-family: 宋体;">类中所有的方法都隐式指定为</span><span lang="EN-US">final</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">每个类的编译代码都存在于它自己的独立的文件中。该文件只在需要使用程序代码时才会被加载。一般来说，你可以说：</span><span lang="EN-US">&#8220;</span><span style="font-family: 宋体;">类的代码在初次使用时才加载。</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">这通常是指知道类的第一个对象被构建时才发生加载，但是当访问</span><span lang="EN-US">static</span><span style="font-family: 宋体;">数据成员或是</span><span lang="EN-US">static</span><span style="font-family: 宋体;">方法时，也会发生加载。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">初次使用之处也是静态初始化（</span><span lang="EN-US">static</span><span style="font-family: 宋体;">初始化）发生之处。所有的</span><span lang="EN-US">static</span><span style="font-family: 宋体;">对象和</span><span lang="EN-US">static</span><span style="font-family: 宋体;">代码段都会在加载时依程序中的顺序（即，你定义类时的书写顺序）依次初始化。当然，</span><span lang="EN-US">static</span><span style="font-family: 宋体;">只会被初始化一次。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">用</span><span lang="EN-US">final</span><span style="font-family: 宋体;">修饰的成员变量表示常量，值一旦给定就无法改变！</span><span lang="EN-US"> <br />
final</span><span style="font-family: 宋体;">修饰的变量有三种：静态变量、实例变量和局部变量，分别表示三种类型的常量。</span><span lang="EN-US"> <br />
</span><span style="font-family: 宋体;">从下面的例子中可以看出，一旦给</span><span lang="EN-US">final</span><span style="font-family: 宋体;">变量初值后，值就不能再改变了。</span><span lang="EN-US"> <br />
</span><span style="font-family: 宋体;">另外，</span><span lang="EN-US">final</span><span style="font-family: 宋体;">变量定义的时候，可以先声明，而不给初值，这中变量也称为</span><span lang="EN-US">final</span><span style="font-family: 宋体;">空白，无论什么情况，编译器都确保空白</span><span lang="EN-US">final</span><span style="font-family: 宋体;">在使用之前必须被初</span>
<span style="font-family: 宋体;">始化。但是，</span><span lang="EN-US">final</span><span style="font-family: 宋体;">空白在</span><span lang="EN-US">final</span><span style="font-family: 宋体;">关键字</span><span lang="EN-US">final</span><span style="font-family: 宋体;">的使用上提供了更大的灵活性，为此，一个类中的</span><span lang="EN-US">final<nobr id="key4" style="border-bottom: 1px dotted rgb(102, 0, 255); background-color: transparent; color: rgb(102, 0, 255); text-decoration: underline;" onclick="return kwC();" target="_blank" oncontextmenu="return false;" onmouseover="kwE(event,5, this);" onmouseout="kwL(event, this);" onmousemove="kwM(5);"></nobr></span><span style="font-family: 宋体;">数据成员就可以实现依对象而有所不同，却有保持其恒定不变的特征。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">多态通过分离</span><span lang="EN-US">&#8220;</span><span style="font-family: 宋体;">做什么</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">和</span><span lang="EN-US">&#8220;</span><span style="font-family: 宋体;">怎么做</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">，从另一个角度将接口和实现分离开来。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><strong><span style="color: black;" lang="EN-US">&#8220;</span></strong><strong><span style="font-family: 宋体; color: black;">封装</span><span style="color: black;" lang="EN-US">&#8221;</span></strong><strong><span style="font-family: 宋体; color: black;">通过合并特征和行为来创建新的数据类型。</span><span style="color: black;" lang="EN-US">&#8220;</span></strong><strong><span style="font-family: 宋体; color: black;">实现隐藏</span><span style="color: black;" lang="EN-US">&#8221;</span></strong><strong><span style="font-family: 宋体; color: black;">则通过将细节</span><span style="color: black;" lang="EN-US">&#8220;</span></strong><strong><span style="font-family: 宋体; color: black;">私有化</span><span style="color: black;" lang="EN-US">&#8221;</span></strong><strong><span style="font-family: 宋体; color: black;">把接口和实现分离开来。多态的作用则是消除类型之间的耦合关系。</span><span style="color: black;" lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">多态方法调用允许一种类型表现出与其他相识类型之间的区别，只要他们都是从同以基类导出而来的。这种区别是根据方法行为的不同而表现出来的，虽然这些方法都可以通过同一个基类来调用。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">向上转型可能会缩小接口，但不会比基类接口更窄。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">前期绑定：若在程序执行前进行绑定（如果有的话，由编译器和链接程序实现）后期绑定：在运行时根据对象的类型进行绑定。也称动态绑定或运行时绑定</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">c</span><span style="font-family: 宋体;">语言都是前期绑定，</span><span lang="EN-US">java</span><span style="font-family: 宋体;">除了</span><span lang="EN-US">static</span><span style="font-family: 宋体;">方法和</span><span lang="EN-US">final</span><span style="font-family: 宋体;">方法外，其他所有的方法都是后期绑定</span><span lang="EN-US">,final</span><span style="font-family: 宋体;">可以有效地</span><span lang="EN-US">"</span><span style="font-family: 宋体;">关闭</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">动态绑定。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">基类为自它那里继承而来的所有导出类建立一个公用接口，导出类通过覆盖这些定义，来为每种特殊类型提供单独的行为。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">从通用的基类继承出的新的数据类型，从而新添一些新的功能，而那些操纵基类的接口的方法不需要任何改动就可以运用于新类。这正是</span><span lang="EN-US">&#8220;</span><span style="font-family: 宋体;">可扩展性</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">的程序的一般特征。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">多态，将改变的事物与未变的事务分离开来。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">只有非</span><span lang="EN-US">private</span><span style="font-family: 宋体;">方法才可以被覆盖；但是还需要密切注意覆盖</span><span lang="EN-US">private</span><span style="font-family: 宋体;">方法的现象，这时编译器不会报错，但是也不会按照我们所期望的来指向。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">如果一个类包含一个或多个抽象方法该类必须被限定为抽象的。也可以创建一个没有任何抽象方法的抽象类，仅是为了组织产生这个类的任何对象。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">如果想从一个抽象类继承，并想创建该新类的对象，那么就必须为基类中的所有的抽象方法提供方法定义。如果不这样做，那么导出类便也是抽象类，且编译器将强制我们用</span><span lang="EN-US">abstract</span><span style="font-family: 宋体;">关键字来限定这个类。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">对象调用构造器的顺序：</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">1.</span><span style="font-family: 宋体;">调用基类构造器。这个步骤会不断地反复递归下去，首先是构造这种层次结构的根，后是下一层导出类，等到那个，知道最低层的导出类。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">2.</span><span style="font-family: 宋体;">按声明顺序调用成员的初始化方法</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US">3.</span><span style="font-family: 宋体;">调用导出类构造器的主体</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">清理的时候应该首先对其导出类进行清理，然后才是基类。这是因为导出类的清理可能会调用基类中的某些方法，所以需要使基类中的构件仍起作用而不应该过早地销毁它们。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">初始化实际的过程是：</span></p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-align: left; text-indent: -21pt;" align="left"><!--[if !supportLists]--><span lang="EN-US"><span>1.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><!--[endif]--><span style="font-family: 宋体;">在其他任何事物发生之前，将分配给对象的存储空间初始化成二进制的零</span></p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-align: left; text-indent: -21pt;" align="left"><!--[if !supportLists]--><span lang="EN-US"><span>2.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><!--[endif]--><span style="font-family: 宋体;">按前面所述调用基类构造器</span></p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-align: left; text-indent: -21pt;" align="left"><!--[if !supportLists]--><span lang="EN-US"><span>3.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><!--[endif]--><span style="font-family: 宋体;">按声明的顺序调用成员的差距是花方法</span></p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-align: left; text-indent: -21pt;" align="left"><!--[if !supportLists]--><span lang="EN-US"><span>4.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><!--[endif]--><span style="font-family: 宋体;">调用导出类的构造器主体</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">这样做有一个优点，那就是所有东西都至少初始化成零（或者某些特殊数据类型中与</span><span lang="EN-US">:</span><span style="font-family: 宋体;">零等价的值），而不是仅仅留作垃圾。其中包含通过</span><span lang="EN-US">&#8220;</span><span style="font-family: 宋体;">组合</span><span lang="EN-US">&#8221;</span><span style="font-family: 宋体;">而嵌入一个类内</span>
<span style="font-family: 宋体;">部的对象引用，其值是</span><span lang="EN-US">null</span><span style="font-family: 宋体;">。所以如果忘记为该引用进行初始化，就会在运行时出现异常。查看输出结果时，会发现其他所有的东西的值，都是会是零，这通常也</span>
<span style="font-family: 宋体;">正是方法问题的证据。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">编写构造器时有一条准则：用尽可能简单的方法使对象进入正常状态；如果可以的，避免调用其他的方法。在构造器内唯一能够安全调用的方法是基类中的</span><span lang="EN-US">final</span><span style="font-family: 宋体;">方法（也适合于</span><span lang="EN-US">private</span><span style="font-family: 宋体;">）。这些方法不能被覆盖。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">导出类中接口的扩展部分不能被基类访问，因此，向上转型，不能调用新方法。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">向上转型会丢失具体类型信息，但向上转型是安全的。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: 宋体;">在</span><span lang="EN-US">java</span><span style="font-family: 宋体;">中，所有的类型转换都会得到检查。所以即使我们知识进行一次普通的加括号形式的类型转型，在进入运行期仍会对其检查，以便保证它的确是我们希望的那种类型。否则，会返回一个</span><span lang="EN-US">ClassCastException</span><span style="font-family: 宋体;">异常。运行时类型识别</span><span lang="EN-US">RTTI</span><span style="font-family: 宋体;">。</span></p>
<img src ="http://www.blogjava.net/xujun7/aggbug/279057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-05-30 20:50 <a href="http://www.blogjava.net/xujun7/archive/2009/05/30/279057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Thinking in Java学习笔记(一)</title><link>http://www.blogjava.net/xujun7/archive/2009/05/21/273636.html</link><dc:creator>eric_xu</dc:creator><author>eric_xu</author><pubDate>Thu, 21 May 2009 12:59:00 GMT</pubDate><guid>http://www.blogjava.net/xujun7/archive/2009/05/21/273636.html</guid><wfw:comment>http://www.blogjava.net/xujun7/comments/273636.html</wfw:comment><comments>http://www.blogjava.net/xujun7/archive/2009/05/21/273636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xujun7/comments/commentRss/273636.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xujun7/services/trackbacks/273636.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Normal07.8 磅02falsefalsefalseEN-USZH-CNX-NONE...&nbsp;&nbsp;<a href='http://www.blogjava.net/xujun7/archive/2009/05/21/273636.html'>阅读全文</a><img src ="http://www.blogjava.net/xujun7/aggbug/273636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xujun7/" target="_blank">eric_xu</a> 2009-05-21 20:59 <a href="http://www.blogjava.net/xujun7/archive/2009/05/21/273636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>