<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
 <channel>
  <title>JAVA Study Group</title>
  <link>http://javastudying.blogbus.com</link>
  <description><![CDATA[]]></description>
  <generator> by blogbus.com </generator>
  <lastBuildDate>Thu, 15 Mar 2007 13:05:32 +0800</lastBuildDate>
  <image>
									<url>http://www.blogbus.com/profile/6/6/6/1227666/avatar_1227666_96.jpg</url>
									<title>JAVA Study Group</title>
									<link>http://javastudying.blogbus.com</link>
								</image>  <item>
   <title>新手入门：写Java程序的三十个基本规则</title>
   <description><![CDATA[(1) 类名首字母应该大写。字段、方法以及对象（句柄）的首字母应小写。对于所有标识符，其中包含的所有单词都应紧靠在一起，而且大写中间单词的首字母。例如： <br /><br />ThisIsAClassName <br /><br />thisIsMethodOrFieldName <br /><br /><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://javastudying.blogbus.com/logs/5181924.html">使用JMenu组件</a> 2007-04-26</div><div><a href="http://javastudying.blogbus.com/logs/5093178.html">J2EE项目异常处理</a> 2007-04-20</div><div><a href="http://javastudying.blogbus.com/logs/4955524.html">JAVA中参数传递问题的总结</a> 2007-04-05</div><div><a href="http://javastudying.blogbus.com/logs/4939738.html">关于JAVA中的日期类</a> 2007-04-02</div><div><a href="http://javastudying.blogbus.com/logs/4894931.html">Java 中静态变量与实例变量的区别</a> 2007-04-01</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fjavastudying.blogbus.com%2Flogs%2F7650674.html&title=%E6%96%B0%E6%89%8B%E5%85%A5%E9%97%A8%EF%BC%9A%E5%86%99Java%E7%A8%8B%E5%BA%8F%E7%9A%84%E4%B8%89%E5%8D%81%E4%B8%AA%E5%9F%BA%E6%9C%AC%E8%A7%84%E5%88%99">Del.icio.us</a></span></div>]]></description>
   <link>http://javastudying.blogbus.com/logs/7650674.html</link>
   <author>纯。</author>
   <pubDate>Mon, 13 Aug 2007 11:46:46 +0800</pubDate>
  </item>
  <item>
   <title>迷你计算器啊</title>
   <description><![CDATA[import java.awt.*;<br />import java.awt.event.*;<br />import javax.swing.*;<br /><br />public class calculator extends JFrame {<br /><br />private Container container;<br />private GridBagLayout layout;<br />private GridBagConstraints constraints;<br />private JTextField displayField;<br />private String lastCommand;<br />private double result;<br />private boolean start;<br /><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://javastudying.blogbus.com/logs/5071381.html">java 中异常处理原则</a> 2007-04-18</div><div><a href="http://javastudying.blogbus.com/logs/5029522.html">java中接口和抽象的区别</a> 2007-04-13</div><div><a href="http://javastudying.blogbus.com/logs/4995306.html">编程练习：求100以内的素数</a> 2007-04-09</div><div><a href="http://javastudying.blogbus.com/logs/4952017.html">上课要点总结</a> 2007-04-03</div><div><a href="http://javastudying.blogbus.com/logs/4939738.html">关于JAVA中的日期类</a> 2007-04-02</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fjavastudying.blogbus.com%2Flogs%2F5488236.html&title=%E8%BF%B7%E4%BD%A0%E8%AE%A1%E7%AE%97%E5%99%A8%E5%95%8A">Del.icio.us</a></span></div>]]></description>
   <link>http://javastudying.blogbus.com/logs/5488236.html</link>
   <author>纯。</author>
   <pubDate>Wed, 23 May 2007 20:16:36 +0800</pubDate>
  </item>
  <item>
   <title>使用JMenu组件</title>
   <description><![CDATA[<p><span style="font-size: 9pt; color: black"></span></p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://javastudying.blogbus.com/logs/7650674.html">新手入门：写Java程序的三十个基本规则</a> 2007-08-13</div><div><a href="http://javastudying.blogbus.com/logs/5093178.html">J2EE项目异常处理</a> 2007-04-20</div><div><a href="http://javastudying.blogbus.com/logs/4955524.html">JAVA中参数传递问题的总结</a> 2007-04-05</div><div><a href="http://javastudying.blogbus.com/logs/4939738.html">关于JAVA中的日期类</a> 2007-04-02</div><div><a href="http://javastudying.blogbus.com/logs/4894931.html">Java 中静态变量与实例变量的区别</a> 2007-04-01</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fjavastudying.blogbus.com%2Flogs%2F5181924.html&title=%E4%BD%BF%E7%94%A8JMenu%E7%BB%84%E4%BB%B6">Del.icio.us</a></span></div>]]></description>
   <link>http://javastudying.blogbus.com/logs/5181924.html</link>
   <author>redfish666</author>
   <pubDate>Thu, 26 Apr 2007 19:12:20 +0800</pubDate>
  </item>
  <item>
   <title>J2EE项目异常处理</title>
   <description><![CDATA[J2EE项目异常处理<br /><br />袁光东<br /><br />为什么要在J2EE项目中谈异常处理呢？可能许多java初学者都想说：&ldquo;异常处理不就是try&hellip;.catch&hellip;finally吗？这谁都会啊！&rdquo;。笔者在初学java时也是这样认为的。如何在一个多层的j2ee项目中定义相应的异常类？在项目中的每一层如何进行异常处理？异常何时被抛出？异常何时被记录？异常该怎么记录？何时需要把che...<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://javastudying.blogbus.com/logs/7650674.html">新手入门：写Java程序的三十个基本规则</a> 2007-08-13</div><div><a href="http://javastudying.blogbus.com/logs/5181924.html">使用JMenu组件</a> 2007-04-26</div><div><a href="http://javastudying.blogbus.com/logs/4955524.html">JAVA中参数传递问题的总结</a> 2007-04-05</div><div><a href="http://javastudying.blogbus.com/logs/4939738.html">关于JAVA中的日期类</a> 2007-04-02</div><div><a href="http://javastudying.blogbus.com/logs/4894931.html">Java 中静态变量与实例变量的区别</a> 2007-04-01</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fjavastudying.blogbus.com%2Flogs%2F5093178.html&title=J2EE%E9%A1%B9%E7%9B%AE%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86">Del.icio.us</a></span></div>]]></description>
   <link>http://javastudying.blogbus.com/logs/5093178.html</link>
   <author>redfish666</author>
   <pubDate>Fri, 20 Apr 2007 15:33:14 +0800</pubDate>
  </item>
  <item>
   <title>java 中异常处理原则</title>
   <description><![CDATA[<p><font face="'宋体', sans-serif" size="2">&nbsp;java 中异常处理原则</font></p><p><font face="'宋体', sans-serif" size="2">1.避免使用检查的异常（Checked Exception），要使用 RuntimeException。</font></p><p><font face="'宋体', sans-serif" size="2">2.转化异常时仅增加信息。<br />&nbsp; try{<br />&nbsp;&nbsp; ...<br />&nbsp; }<br />&nbsp; catch(Exception ex){<br />&nbsp;&nbsp;&nbsp; throw new RuntimeException(message, ex);<br />&nbsp; }<br />3.不要隐藏异常。<br />&nbsp; catch(Exception ex){ // 错误代码<br />&nbsp;&nbsp;&nbsp; throw new RuntimeException(message, ex);<br />&nbsp; }<br />4.使用 finally 块释放资源。</font></p><p><font face="'宋体', sans-serif" size="2">5.异常处理方式中，业务逻辑应放到 try 中。<br />&nbsp; 异常处理仅用来处理错误。<br />6.调用者可以使用返回的异常描述信息，也可以根据类型判断异常类别。<br />&nbsp;<br />7.异常影响性能<br />&nbsp; 抛出异常需要的性能消耗，是返回一个结果值得 10-100,000 倍；<br />&nbsp; 不要在循环体内用异常处理结构；应该在外层、较低频率使用异常处理。<br />&nbsp;<br /></font></p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://javastudying.blogbus.com/logs/5005895.html">java中如何用接口实现多继承和多态</a> 2007-04-10</div><div><a href="http://javastudying.blogbus.com/logs/4978637.html">[转帖]java异常处理学习笔记</a> 2007-04-08</div><div><a href="http://javastudying.blogbus.com/logs/4894931.html">Java 中静态变量与实例变量的区别</a> 2007-04-01</div><div><a href="http://javastudying.blogbus.com/logs/4892107.html">总结关键字this与super用法</a> 2007-03-29</div><div><a href="http://javastudying.blogbus.com/logs/4879466.html">修饰符介绍</a> 2007-03-28</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fjavastudying.blogbus.com%2Flogs%2F5071381.html&title=java+%E4%B8%AD%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86%E5%8E%9F%E5%88%99">Del.icio.us</a></span></div>]]></description>
   <link>http://javastudying.blogbus.com/logs/5071381.html</link>
   <author>shenhong</author>
   <pubDate>Wed, 18 Apr 2007 11:36:28 +0800</pubDate>
  </item>
  <item>
   <title>java中接口和抽象的区别</title>
   <description><![CDATA[<p><font face="'宋体', sans-serif" size="2">&nbsp;&nbsp;&nbsp; 抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸，猪用肺呼吸。&nbsp;</font></p><p><font face="'宋体', sans-serif" size="2">&nbsp;&nbsp;&nbsp; 动物类要有呼吸方法。怎么呼吸就是子类的事了。&nbsp;</font></p><p><font face="'宋体', sans-serif" size="2">&nbsp;&nbsp;&nbsp;&nbsp;现在有很多讨论和建议提倡用interface代替abstract类，两者从理论上可以做一般性的混用，但是在实际应用中，他们还是有一定区别的。抽象类一般作为公共的父类为子类的扩展提供基础，这里的扩展包括了属性上和行为上的。而接口一般来说不考虑属性，只考虑方法，使得子类可以自由的填补或者扩展接口所定义的方法，就像JAVA王子所说的事件中的适配器就是一个很好的应用。 </font></p><p><font face="'宋体', sans-serif" size="2">&nbsp;&nbsp;&nbsp; 用一个简单的例子，比如说一个教师，我们把它作为一个抽象类，有自己的属性，比如说年龄，教育程度，教师编号等等，而教师也是分很多种类的，我们就可以继承教师类而扩展特有的种类属性，而普遍属性已经直接继承了下来。&nbsp;</font></p><p><font face="'宋体', sans-serif" size="2">&nbsp;&nbsp;&nbsp; 而接口呢，还是拿教师做例子，教师的行为很多，除了和普通人相同的以外，还有职业相关的行为，比如改考卷，讲课等等，我们把这些行为定义成无body的方法，作为一个集合，它是一个interface。而教师张三李四的各自行为特点又有不同，那么他们就可以扩展自己的行为body。从这点意义上来说， interface偏重于行为。&nbsp;</font></p><p><font face="'宋体', sans-serif" size="2">&nbsp;&nbsp;&nbsp; 总之，在许多情况下，接口确实可以代替抽象类，如果你不需要刻意表达属性上的继承的话。</font></p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://javastudying.blogbus.com/logs/5071381.html">java 中异常处理原则</a> 2007-04-18</div><div><a href="http://javastudying.blogbus.com/logs/4978637.html">[转帖]java异常处理学习笔记</a> 2007-04-08</div><div><a href="http://javastudying.blogbus.com/logs/4952017.html">上课要点总结</a> 2007-04-03</div><div><a href="http://javastudying.blogbus.com/logs/4879466.html">修饰符介绍</a> 2007-03-28</div><div><a href="http://javastudying.blogbus.com/logs/4871844.html">java与c++的几个小区别</a> 2007-03-27</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fjavastudying.blogbus.com%2Flogs%2F5029522.html&title=java%E4%B8%AD%E6%8E%A5%E5%8F%A3%E5%92%8C%E6%8A%BD%E8%B1%A1%E7%9A%84%E5%8C%BA%E5%88%AB">Del.icio.us</a></span></div>]]></description>
   <link>http://javastudying.blogbus.com/logs/5029522.html</link>
   <author>redfish666</author>
   <pubDate>Fri, 13 Apr 2007 22:42:30 +0800</pubDate>
  </item>
  <item>
   <title>java中如何用接口实现多继承和多态</title>
   <description><![CDATA[刚刚学习了接口与多态,若想巩固所学的知识,下面通俗易懂的介绍应该会让你受益匪浅哦!仔细看看吧!<br /><br />JAVA中如何用接口实现多继承和多态 <br /><br />1.JAVA里没有多继承，一个类之能有一个父类。而继承的表现就是多态。一个父类可以有多个子类，而在子类里可以重写父类的方法（例如方法print()），这样每个子类里重写的代码不一样，自然表现形式就不一样。这样用父类的变量去引用不同的子类，在调用这个相同的方法print()的时候得到的结果和表现形式就不一样了，这就是多态，相同的消息（也...<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://javastudying.blogbus.com/logs/5029522.html">java中接口和抽象的区别</a> 2007-04-13</div><div><a href="http://javastudying.blogbus.com/logs/4952017.html">上课要点总结</a> 2007-04-03</div><div><a href="http://javastudying.blogbus.com/logs/4901007.html">从实验课上的经历看Java</a> 2007-03-30</div><div><a href="http://javastudying.blogbus.com/logs/4892107.html">总结关键字this与super用法</a> 2007-03-29</div><div><a href="http://javastudying.blogbus.com/logs/4871844.html">java与c++的几个小区别</a> 2007-03-27</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fjavastudying.blogbus.com%2Flogs%2F5005895.html&title=java%E4%B8%AD%E5%A6%82%E4%BD%95%E7%94%A8%E6%8E%A5%E5%8F%A3%E5%AE%9E%E7%8E%B0%E5%A4%9A%E7%BB%A7%E6%89%BF%E5%92%8C%E5%A4%9A%E6%80%81">Del.icio.us</a></span></div>]]></description>
   <link>http://javastudying.blogbus.com/logs/5005895.html</link>
   <author>shenhong</author>
   <pubDate>Tue, 10 Apr 2007 21:38:53 +0800</pubDate>
  </item>
  <item>
   <title>编程练习：求100以内的素数</title>
   <description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;今天有同学问了我一道编程题，课本第三章的习题三，求出100以内的素数，并将这些数在屏幕上5个一行地显示出来。一道比较经典的题目，就随手写了段代码让大家砸下砖头。组员们可以优化下算法呀</p><p><font color="#003366">public class Prime<br />{<br />&nbsp;&nbsp;&nbsp; public static void main(string args[])<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; int n=0;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; int i,j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;boolean flag;<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;for(i=2;i&lt;100;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;flag=true;<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;for(j=2;j&lt;=i/2;j++)<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; if(i%j==0)<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;&nbsp;&nbsp; &nbsp;&nbsp; flag=false;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;if(flag)<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;System.out.print(i+&quot; &quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;n++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(n%5==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</font></p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://javastudying.blogbus.com/logs/5488236.html">迷你计算器啊</a> 2007-05-23</div><div><a href="http://javastudying.blogbus.com/logs/5005895.html">java中如何用接口实现多继承和多态</a> 2007-04-10</div><div><a href="http://javastudying.blogbus.com/logs/4939738.html">关于JAVA中的日期类</a> 2007-04-02</div><div><a href="http://javastudying.blogbus.com/logs/4894931.html">Java 中静态变量与实例变量的区别</a> 2007-04-01</div><div><a href="http://javastudying.blogbus.com/logs/4858022.html">与Java的全新接触</a> 2007-03-25</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fjavastudying.blogbus.com%2Flogs%2F4995306.html&title=%E7%BC%96%E7%A8%8B%E7%BB%83%E4%B9%A0%EF%BC%9A%E6%B1%82100%E4%BB%A5%E5%86%85%E7%9A%84%E7%B4%A0%E6%95%B0">Del.icio.us</a></span></div>]]></description>
   <link>http://javastudying.blogbus.com/logs/4995306.html</link>
   <author>纯。</author>
   <pubDate>Mon, 09 Apr 2007 22:16:14 +0800</pubDate>
  </item>
  <item>
   <title>[转帖]java异常处理学习笔记</title>
   <description><![CDATA[<p>如果你对异常已经很了解，就不用看了。这是写给初学者看的。</p><p><strong>基础知识：</strong>在程序运行时，常常会出现一些非正常的现象，这种情况称为<strong>运行错误</strong>。根据其性质可以分为错误和异常。</p><p><strong>错误：</strong>常见的有程序进入死循环，内存泄漏等。这种情况，程序运行时本身无法解决，只能通过其他方法干预。对应的类为Error类。</p><p><strong>异常：</strong>常见的有除数为0，数组越界等。这种情况，不向错误那样，程序运行时本身可以解决，由异常代码调整程序运行方向，使程序仍可继续运行直至正常结束。对应的类为Exception类。</p><p><strong>抛出异常：</strong>当程序发生异常时，产生一个异常事件，生成一个异常对象，并把它提交给运行系统，再由运行系统寻找相应的代码来处理异常，这个过程称为抛出异常。</p><p><strong>捕获异常：</strong>异常抛出后，运行时系统从生成对象的代码开始，沿方法的调用栈逐层回溯查找，直到找到包含相应处理的方法，并把异常对象交给该方法为止，这个过程称为捕获异常。</p><strong>五大模板：</strong> <p>使用try&mdash;catch&mdash;finally语句捕获和处理异常。</p><p>&nbsp;</p><p align="center"><img src="file:///C:/Documents%20and%20Settings/Administrator/My%20Documents/My%20Pictures/7.JPG" border="0" alt="" width="28" height="30" align="baseline" /></p><p align="center">图一 五大模板</p><p>对模板的一点解释：</p><p>1. try语句&nbsp;当某段代码在运行时可能产生异常的话，应该把这段代码放到try语句中去。但不要把所有的语句放到try语句中，因为粒度太大。</p><p>2. catch语句&nbsp;其中的参数类似于方法的声明，包含一个异常类型和一个异常对象。异常类型必须是Throwable类的子类，当然也可以是自己自定义的异常类。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>A.&nbsp;一个try语句下面可以有多个catch语句，分别处理不同的异常。但排列顺序必须是从特殊到一般，最后一个一般都是&nbsp; Exception类（模板四）。</p><p>B.&nbsp;也可以用一个catch语句处理多个异常类型，这时它的异常类型参数应该是这些异常类型的超类（模板三）。</p><p>C.&nbsp;java运行时系统从上到下分别对每个catch语句处理的异常类型进行检测，直到找到与类型匹配的catch语句为止。&nbsp;&nbsp;匹配是指catch所处理的异常类型与所生成的异常类型完全一致或是它的超类。 </p><p>D. 如果程序所产生的异常和所有的catch处理的异常都不匹配，则这个异常将由java虚拟机捕获并处理，此时与不使用异常处理是一样的。</p><p>3.&nbsp;finally语句&nbsp;在try所限定的代码中，当抛出一个异常时，其后的代码不会被执行。通过finally语句可以指定一块代码。无论try所指定的程序块中抛出或不抛出异常，也无论catch语句的异常类型是否与所抛出的异常的类型一致，finally所指定的代码都要被执行，它提供了统一的出口。该语句也是可以省略的（模板二）。</p><p>4.&nbsp;异常语句嵌套&nbsp; 当在处理异常时很有可能再次抛出异常，这种现象是非常常见的。常见形式为模板五。</p><strong>常见的异常类</strong> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大家也许在编程的过程中，会意识到这里出错，但不知道会抛出什么异常，也是一件头疼的事，现将这部分总结如下：</p><p>算术异常类：ArithmeticExecption</p><p>空指针异常类：NullPointerException</p><p>类型强制转换异常：ClassCastException</p><p>数组负下标异常：NegativeArrayException</p><p>数组下标越界异常：ArrayIndexOutOfBoundsException</p><p>违背安全原则异常：SecturityException</p><p>文件已结束异常：EOFException</p><p>文件未找到异常：FileNotFoundException</p><p>字符串转换为数字异常：NumberFormatException</p><p>操作数据库异常：SQLException</p><p>输入输出异常：IOException</p><p>方法未找到异常：NoSuchMethodException</p><p>这是最常见的一些异常，大家可以在日后的使用中总结，但最详细的恐怕还是JDK的文档了。还是看JDK的文档吧：）；&nbsp;&nbsp;</p><p><strong>Exception</strong><strong>异常类的方法</strong> </p><p>Public class Exception extends Throwable</p><p>构造方法：public Exception()</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public Exception(String s)</p><p>实例方法：public String getMessage()</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void printStackTrace()</p><strong>throw与throws的区别与联系 </strong><p>区别一：</p><p>throw是语句抛出一个异常；throws是方法抛出一个异常；</p><p>throw语法：throw &lt;异常对象&gt; </p><p>在方法声明中，添加throws子句表示该方法将抛出异常。</p><p>throws语法：&lt;修饰符&gt;]&lt;返回值类型&gt;&lt;方法名&gt;（[&lt;参数列表&gt;][throws&lt;异常类&gt;]</p><p>其中：异常类可以声明多个，用逗号分割。</p><p>区别二：throws可以单独使用，但throw不能；</p><p>区别三：throw要么和try-catch-finally语句配套使用，要么与throws配套使用。但throws可以单独使用，然后再由处理异常的方法捕获。</p><strong>自定义异常类</strong> <p>跟声明一个类一样，但必须是继承于Exception类。可以用throw和throws抛出这个自定义的类。</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://javastudying.blogbus.com/logs/5093178.html">J2EE项目异常处理</a> 2007-04-20</div><div><a href="http://javastudying.blogbus.com/logs/5071381.html">java 中异常处理原则</a> 2007-04-18</div><div><a href="http://javastudying.blogbus.com/logs/5029522.html">java中接口和抽象的区别</a> 2007-04-13</div><div><a href="http://javastudying.blogbus.com/logs/5005895.html">java中如何用接口实现多继承和多态</a> 2007-04-10</div><div><a href="http://javastudying.blogbus.com/logs/4901007.html">从实验课上的经历看Java</a> 2007-03-30</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fjavastudying.blogbus.com%2Flogs%2F4978637.html&title=%5B%E8%BD%AC%E5%B8%96%5Djava%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0">Del.icio.us</a></span></div>]]></description>
   <link>http://javastudying.blogbus.com/logs/4978637.html</link>
   <author>狐狸露尾巴</author>
   <pubDate>Sun, 08 Apr 2007 11:18:55 +0800</pubDate>
  </item>
  <item>
   <title>JAVA中参数传递问题的总结</title>
   <description><![CDATA[<p><span style="font-size: 10pt; color: olive; font-family: 宋体">关于</span><span style="font-size: 10pt; color: olive; font-family: Verdana">JAVA</span><span style="font-size: 10pt; color: olive; font-family: 宋体">中参数传递问题有两种，一种是按值传递（如果是基本类型），另一种是按引用传递（如果是對象）。</span><span style="font-size: 10pt; font-family: Verdana">&nbsp;<span>&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; font-family: 宋体">首先以两个例子开始：</span></p><p><span style="font-size: 10pt; font-family: Verdana">1</span><span style="font-size: 10pt; font-family: 宋体">）</span><span style="font-size: 10pt; font-family: Verdana"><br />public class Test2 { </span><span style="font-size: 10pt; font-family: Verdana">&nbsp;public static void main (String [] args)&nbsp; { <br />&nbsp;StringBuffer a = new StringBuffer (&quot;A&quot;); <br />&nbsp;StringBuffer b = new StringBuffer (&quot;B&quot;); <br />&nbsp;operate (a,b); <br />&nbsp;System.out.println(a+&quot;,&quot;+b); <br />&nbsp;}</span><span style="font-size: 10pt; font-family: Verdana">static void operate(StringBuffer x, StringBuffer y){ <br />&nbsp;&nbsp;&nbsp;&nbsp; x.append(y); <br />&nbsp;&nbsp;&nbsp;&nbsp; y = x; <br />&nbsp;&nbsp; }<br />}<br /></span><span style="font-size: 10pt; color: olive; font-family: 宋体">输出：</span><span style="font-size: 10pt; color: olive; font-family: Verdana">AB,B</span></p><p><span style="font-size: 10pt; font-family: Verdana">2</span><span style="font-size: 10pt; font-family: 宋体">）</span><span style="font-size: 10pt; font-family: Verdana"><br />public class Test2 { </span><span style="font-size: 10pt; font-family: Verdana">&nbsp;public static void add3 (Integer i){ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int val=i.intValue();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; val += 3; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i = new Integer (val); <br />&nbsp; } </span><span style="font-size: 10pt; font-family: Verdana">&nbsp;public static void main (String args [ ] )&nbsp; { <br />&nbsp;Integer&nbsp; i = new Integer (0); <br />&nbsp; add3 (i); <br />&nbsp; System.out.println (i.intValue ( )); <br />&nbsp;} <br />} <br /></span><span style="font-size: 10pt; color: olive; font-family: 宋体">输出：</span><span style="font-size: 10pt; color: olive; font-family: Verdana">0</span></p><p><span style="font-size: 10pt; color: olive; font-family: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10pt; font-family: 宋体">首先我们应该明白</span><span style="font-size: 10pt; font-family: Verdana">JAVA</span><span style="font-size: 10pt; font-family: 宋体">中的参数传递全是以值传递的。是基本类型，就拷贝一个基本类型传进方法；是引用，就拷贝一个引用变量传进去方法，理解了这两点就能理解方法操作对象的相关问题了。最好能画出引用指向对象的图出来，就能完全理解了。</span><span style="font-size: 10pt; font-family: Verdana"><br /><span>&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; font-family: 宋体">第</span><span style="font-size: 10pt; font-family: Verdana">1</span><span style="font-size: 10pt; font-family: 宋体">题，调用</span><span style="font-size: 10pt; font-family: Verdana">operate</span><span style="font-size: 10pt; font-family: 宋体">方法时，传入了两个引用</span><span style="font-size: 10pt; font-family: Verdana">a,b</span><span style="font-size: 10pt; font-family: 宋体">的拷贝</span><span style="font-size: 10pt; font-family: Verdana">x,y</span><span style="font-size: 10pt; font-family: 宋体">，这两个</span><span style="font-size: 10pt; font-family: Verdana">x,y</span><span style="font-size: 10pt; font-family: 宋体">都指向原</span><span style="font-size: 10pt; font-family: Verdana">a,b</span><span style="font-size: 10pt; font-family: 宋体">引用所指向的对象。</span><span style="font-size: 10pt; font-family: Verdana">x.append(y)</span><span style="font-size: 10pt; font-family: 宋体">对它指向的对象</span><span style="font-size: 10pt; font-family: Verdana">(</span><span style="font-size: 10pt; font-family: 宋体">即</span><span style="font-size: 10pt; font-family: Verdana">a</span><span style="font-size: 10pt; font-family: 宋体">指向的对象</span><span style="font-size: 10pt; font-family: Verdana">)</span><span style="font-size: 10pt; font-family: 宋体">进行了操作。而</span><span style="font-size: 10pt; font-family: Verdana">x=y</span><span style="font-size: 10pt; font-family: 宋体">，只是两个拷贝变量在赋值，并没有影响到原</span><span style="font-size: 10pt; font-family: Verdana">b</span><span style="font-size: 10pt; font-family: 宋体">所指向的对象。所以</span><span style="font-size: 10pt; font-family: Verdana">b</span><span style="font-size: 10pt; font-family: 宋体">所指向的对象仍然为</span><span style="font-size: 10pt; font-family: Verdana">B</span><span style="font-size: 10pt; font-family: 宋体">。</span><span style="font-size: 10pt; font-family: Verdana"><br /></span><span style="font-size: 10pt; font-family: 宋体">第</span><span style="font-size: 10pt; font-family: Verdana">2</span><span style="font-size: 10pt; font-family: 宋体">题，</span><span style="font-size: 10pt; font-family: Verdana">i=new Integer(val)</span><span style="font-size: 10pt; font-family: 宋体">只是一个引用的拷贝指向了另外一个对象，而原来的</span><span style="font-size: 10pt; font-family: Verdana">i</span><span style="font-size: 10pt; font-family: 宋体">仍然是指向对象</span><span style="font-size: 10pt; font-family: Verdana">new Integer(0)</span><span style="font-size: 10pt; font-family: 宋体">的。</span><span style="font-size: 10pt; font-family: Verdana"><br /></span><span style="font-size: 10pt; font-family: 宋体">把握住了</span><span style="font-size: 10pt; font-family: Verdana">JAVA</span><span style="font-size: 10pt; font-family: 宋体">都是传值并且传的都是拷贝的话，类似的题大家都能迎刃而解了。</span><span style="font-size: 10pt; color: olive; font-family: Verdana">Java</span><span style="font-size: 10pt; color: olive; font-family: 宋体">中的参数传递只有一种方式</span><span style="font-size: 10pt; color: olive; font-family: Verdana">: by value. </span><span style="font-size: 10pt; color: olive; font-family: 宋体">理论说教太麻烦了，直接看些例子吧</span><span style="font-size: 10pt; color: olive; font-family: Verdana">:<br /></span><span style="font-size: 10pt; font-family: Verdana">1). </span><span style="font-size: 10pt; font-family: 宋体">基本类型</span><span style="font-size: 10pt; font-family: Verdana"><br />&nbsp;&nbsp;&nbsp; public class A{<br />&nbsp;&nbsp; public static void main(String[] args){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x = 1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(x);&nbsp;&nbsp;&nbsp; //1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test(x);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(x);&nbsp;&nbsp;&nbsp; //</span><span style="font-size: 10pt; font-family: 宋体">还是</span><span style="font-size: 10pt; font-family: Verdana">1</span><span style="font-size: 10pt; font-family: 宋体">＝＝</span><span style="font-size: 10pt; font-family: Verdana">&gt;By value<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; static void test(int a){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = 2;<br />&nbsp;&nbsp; }<br />}</span></p><p><span style="font-size: 10pt; font-family: Verdana">2). </span><span style="font-size: 10pt; font-family: 宋体">引用类型</span><span style="font-size: 10pt; font-family: Verdana"><br />&nbsp;&nbsp;&nbsp; public class B{<br />&nbsp;&nbsp; public static void main(String[] args){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer x = new Integer(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(x);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test(x);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(x);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; static void test(Integer a){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = new Integer(2);<br />&nbsp;&nbsp; }<br />}</span><span style="font-size: 10pt; font-family: Verdana">&nbsp;&nbsp;<span>&nbsp;&nbsp;</span></span></p><p><span style="font-size: 10pt; font-family: Verdana"><span>&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; font-family: 宋体">理解这里的关键是区分对象和引用。</span><span style="font-size: 10pt; font-family: Verdana"> </span><span style="font-size: 10pt; font-family: 宋体">这里声明的</span><span style="font-size: 10pt; font-family: Verdana">x</span><span style="font-size: 10pt; font-family: 宋体">是一个引用，而不是一个对象（只是</span><span style="font-size: 10pt; font-family: Verdana">Java</span><span style="font-size: 10pt; font-family: 宋体">把它设计为看上去好像是对象一样）。这个引用它指向了一个对象，这个对象就是后面用</span><span style="font-size: 10pt; font-family: Verdana">new</span><span style="font-size: 10pt; font-family: 宋体">关键字生成的对象。因此，可以说</span><span style="font-size: 10pt; font-family: Verdana">x</span><span style="font-size: 10pt; font-family: 宋体">指向了一个</span><span style="font-size: 10pt; font-family: Verdana">Integer</span><span style="font-size: 10pt; font-family: 宋体">对象。</span></p><p><span style="font-size: 10pt; font-family: Verdana">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: 宋体">在调用</span><span style="font-size: 10pt; font-family: Verdana">test</span><span style="font-size: 10pt; font-family: 宋体">方法的时候，程序将</span><span style="font-size: 10pt; font-family: Verdana">x</span><span style="font-size: 10pt; font-family: 宋体">作为参数传递给</span><span style="font-size: 10pt; font-family: Verdana">test</span><span style="font-size: 10pt; font-family: 宋体">方法了。这里仍然是值传递，在</span><span style="font-size: 10pt; font-family: Verdana">test</span><span style="font-size: 10pt; font-family: 宋体">调用过程中，会产生一份新的引用</span><span style="font-size: 10pt; font-family: Verdana">(</span><span style="font-size: 10pt; font-family: 宋体">不妨叫做</span><span style="font-size: 10pt; font-family: Verdana">y)</span><span style="font-size: 10pt; font-family: 宋体">。此时，</span><span style="font-size: 10pt; font-family: Verdana">x</span><span style="font-size: 10pt; font-family: 宋体">和</span><span style="font-size: 10pt; font-family: Verdana">y</span><span style="font-size: 10pt; font-family: 宋体">指向了同一个对象。</span></p><p><span style="font-size: 10pt; font-family: Verdana">&nbsp;&nbsp;&nbsp; x</span><span style="font-size: 10pt; font-family: 宋体">和</span><span style="font-size: 10pt; font-family: Verdana">y</span><span style="font-size: 10pt; font-family: 宋体">指向的是同一个对象，</span><span style="font-size: 10pt; font-family: Verdana"> </span><span style="font-size: 10pt; font-family: 宋体">由于</span><span style="font-size: 10pt; font-family: Verdana">Java</span><span style="font-size: 10pt; font-family: 宋体">的设计，我们可以通过操作引用来达到操作对象的目的。因此，如果我们此时使用</span><span style="font-size: 10pt; font-family: Verdana">y</span><span style="font-size: 10pt; font-family: 宋体">来修改对象的属性</span><span style="font-size: 10pt; font-family: Verdana"> (</span><span style="font-size: 10pt; font-family: 宋体">例如，</span><span style="font-size: 10pt; font-family: Verdana">y.someField++); </span><span style="font-size: 10pt; font-family: 宋体">你可以看到</span><span style="font-size: 10pt; font-family: Verdana">x</span><span style="font-size: 10pt; font-family: 宋体">指向的对象同时也被修改到了。</span></p><p><span style="font-size: 10pt; font-family: Verdana">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: 宋体">另一方面，如果我们让</span><span style="font-size: 10pt; font-family: Verdana">y</span><span style="font-size: 10pt; font-family: 宋体">指向另外一个对象，</span><span style="font-size: 10pt; font-family: Verdana"> y=new Integer(2); </span><span style="font-size: 10pt; font-family: 宋体">此时</span><span style="font-size: 10pt; font-family: Verdana">x</span><span style="font-size: 10pt; font-family: 宋体">和</span><span style="font-size: 10pt; font-family: Verdana">y</span><span style="font-size: 10pt; font-family: 宋体">就指向了不同的</span><span style="font-size: 10pt; font-family: Verdana"><br /></span><span style="font-size: 10pt; font-family: 宋体">对象。</span><span style="font-size: 10pt; font-family: Verdana">y</span><span style="font-size: 10pt; font-family: 宋体">修改了它指向的对象的属性，很显然不会影响到</span><span style="font-size: 10pt; font-family: Verdana">x</span><span style="font-size: 10pt; font-family: 宋体">指向的对象。</span><span style="font-size: 10pt; font-family: 宋体">有人说了数组。数组也是一个引用类型，它的参数传递方式按照引用类型的参数传递一样可以解释得通：</span></p><p><span style="font-size: 10pt; font-family: Verdana">import java.util.Arrays;</span><span style="font-size: 10pt; font-family: Verdana">public class A{<br />&nbsp;&nbsp; public static void main(String[] args){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int[] aa = {3, 2, 1};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Arrays.toString(aa));&nbsp; //[3, 2, 1]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test(aa);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Arrays.toString(aa));&nbsp; //[3, 2, 1]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test2(aa);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Arrays.toString(aa));&nbsp; //[4, 2, 1]<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; static void test(int[] a){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = new int[]{1, 2, 3};&nbsp;&nbsp; //</span><span style="font-size: 10pt; font-family: 宋体">指向了新对象</span><span style="font-size: 10pt; font-family: Verdana"><br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; static void test2(int[] a){<br />&nbsp;&nbsp;&nbsp;&nbsp; if(a != null &amp;&amp; a.length &gt; 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[0]++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-size: 10pt; font-family: 宋体">修改原来的那个对象</span><span style="font-size: 10pt; font-family: Verdana"><br />&nbsp;&nbsp; }<br />}</span></p><p><span style="font-size: 10pt; font-family: 宋体">对象是传引用，简单类型是传值，不要被网上的一些概念所迷惑！！！你可以自己做个试验。</span><span style="font-size: 10pt; font-family: Verdana"><br /></span><span style="font-size: 10pt; font-family: 宋体">至于</span><span style="font-size: 10pt; font-family: Verdana">String</span><span style="font-size: 10pt; font-family: 宋体">等类型传的还是引用。如果你用</span><span style="font-size: 10pt; font-family: Verdana">concat</span><span style="font-size: 10pt; font-family: 宋体">方法，</span><span style="font-size: 10pt; font-family: Verdana">String</span><span style="font-size: 10pt; font-family: 宋体">对象的原值就会被改变。</span><span style="font-size: 10pt; font-family: Verdana"><br /></span><span style="font-size: 10pt; font-family: 宋体">但你如果按如下方法：</span></p><p><span style="font-size: 10pt; font-family: Verdana">public class Test {<br />&nbsp;&nbsp;&nbsp; public static void test(String str) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = &quot;World&quot;;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String string = &quot;Hello&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test(string);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(string);<br />&nbsp;&nbsp;&nbsp; }<br />}</span><span style="font-size: 10pt; font-family: 宋体">　　</span></p><p><span style="font-size: 10pt; font-family: 宋体"><span style="color: olive">运行结果：</span></span><span style="font-size: 10pt; color: olive; font-family: Verdana">Hello</span></p><p><span style="font-size: 10pt; font-family: 宋体">这里</span><span style="font-size: 10pt; font-family: Verdana">str = &quot;World&quot; </span><span style="font-size: 10pt; font-family: 宋体">就等同于</span><span style="font-size: 10pt; font-family: Verdana"> String str</span><span style="font-size: 10pt; font-family: 宋体">＝</span><span style="font-size: 10pt; font-family: Verdana">new String(&quot;World&quot;)</span><span style="font-size: 10pt; font-family: 宋体">。所以结果没有改变！！！</span><span style="font-size: 10pt; font-family: Verdana">&nbsp;</span></p><p><span style="font-size: 10pt; color: olive; font-family: 宋体">下列程序在</span><span style="font-size: 10pt; color: olive; font-family: Verdana">1</span><span style="font-size: 10pt; color: olive; font-family: 宋体">处是否会有异常，如果没有，输出是什么？是否会运行到</span><span style="font-size: 10pt; color: olive; font-family: Verdana">2</span><span style="font-size: 10pt; color: olive; font-family: 宋体">处，如果会，输出是什么？为什么会有这样的结果？</span><span style="font-size: 10pt; color: olive; font-family: Verdana"> </span><span style="font-size: 10pt; font-family: 宋体">　　</span></p><p><span style="font-size: 10pt; font-family: Verdana">import java.util.arraylist;<br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> import java.util.list;<br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> <br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> public class testclass {</span><span style="font-size: 10pt; font-family: Verdana"><br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> public static void main(string args[]) {<br /></span><span style="font-size: 10pt; font-family: 宋体">　　　　</span><span style="font-size: 10pt; font-family: Verdana"> list list = new arraylist();<br /></span><span style="font-size: 10pt; font-family: 宋体">　　　　</span><span style="font-size: 10pt; font-family: Verdana"> test2(list);<br /></span><span style="font-size: 10pt; font-family: 宋体">　　　　</span><span style="font-size: 10pt; font-family: Verdana"> system.out.println(list.size()); // 1</span><span style="font-size: 10pt; font-family: 宋体">处</span><span style="font-size: 10pt; font-family: Verdana"><br /></span><span style="font-size: 10pt; font-family: 宋体">　　　　</span><span style="font-size: 10pt; font-family: Verdana"> <span>test3(list);<br /></span></span><span style="font-size: 10pt; font-family: 宋体">　　　　</span><span style="font-size: 10pt; font-family: Verdana"> system.out.println(list.size()); // 2</span><span style="font-size: 10pt; font-family: 宋体">处</span><span style="font-size: 10pt; font-family: Verdana"><br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> }<br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> <br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> public static void test2(list list) {<br /></span><span style="font-size: 10pt; font-family: 宋体">　　　　</span><span style="font-size: 10pt; font-family: Verdana"> list = null;<br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> }<br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> <br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> public static void test3(list list) {<br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> </span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> list.add(&ldquo;aaaa&ldquo;);<br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> }<br /></span><span style="font-size: 10pt; font-family: 宋体">　　</span><span style="font-size: 10pt; font-family: Verdana"> }</span><span style="font-size: 10pt; font-family: Verdana">plumechen:</span></p><p><span style="font-size: 10pt; font-family: 宋体">不会出错的。结果是</span><span style="font-size: 10pt; font-family: Verdana">0</span><span style="font-size: 10pt; font-family: 宋体">，</span><span style="font-size: 10pt; font-family: Verdana">1</span><span style="font-size: 10pt; font-family: 宋体">。</span> </p><p style="margin: 0cm 0cm 0pt; text-indent: 20pt" class="MsoNormal"><span style="font-size: 10pt; font-family: 宋体">因为</span><span style="font-size: 10pt; font-family: Verdana">test2(list)</span><span style="font-size: 10pt; font-family: 宋体">传得是</span><span style="font-size: 10pt; font-family: Verdana">list</span><span style="font-size: 10pt; font-family: 宋体">的引用，我理解成指针置的副本，</span><span style="font-size: 10pt; font-family: Verdana">list=null</span><span style="font-size: 10pt; font-family: 宋体">；只是把那个传入的值设置为</span><span style="font-size: 10pt; font-family: Verdana">null</span><span style="font-size: 10pt; font-family: 宋体">，不改变原来</span><span style="font-size: 10pt; font-family: Verdana">list</span><span style="font-size: 10pt; font-family: 宋体">的指针和内容。</span><span style="font-size: 10pt; font-family: Verdana">test3(list)</span><span style="font-size: 10pt; font-family: 宋体">传入的一样，但是执行了</span><span style="font-size: 10pt; font-family: Verdana">list.add()</span><span style="font-size: 10pt; font-family: 宋体">由于传入指针值的副本也指向原来的那个</span><span style="font-size: 10pt; font-family: Verdana">list</span><span style="font-size: 10pt; font-family: 宋体">的地址，所以原来的那个</span><span style="font-size: 10pt; font-family: Verdana">list</span><span style="font-size: 10pt; font-family: 宋体">的内容就改变了，</span><span style="font-size: 10pt; font-family: Verdana"> <span>size</span></span><span style="font-size: 10pt; font-family: 宋体">变成了</span><span style="font-size: 10pt; font-family: Verdana">1</span><span style="font-size: 10pt; font-family: 宋体">了。</span></p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://javastudying.blogbus.com/logs/7650674.html">新手入门：写Java程序的三十个基本规则</a> 2007-08-13</div><div><a href="http://javastudying.blogbus.com/logs/5181924.html">使用JMenu组件</a> 2007-04-26</div><div><a href="http://javastudying.blogbus.com/logs/5093178.html">J2EE项目异常处理</a> 2007-04-20</div><div><a href="http://javastudying.blogbus.com/logs/4939738.html">关于JAVA中的日期类</a> 2007-04-02</div><div><a href="http://javastudying.blogbus.com/logs/4894931.html">Java 中静态变量与实例变量的区别</a> 2007-04-01</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fjavastudying.blogbus.com%2Flogs%2F4955524.html&title=JAVA%E4%B8%AD%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E9%97%AE%E9%A2%98%E7%9A%84%E6%80%BB%E7%BB%93">Del.icio.us</a></span></div>]]></description>
   <link>http://javastudying.blogbus.com/logs/4955524.html</link>
   <author>redfish666</author>
   <pubDate>Thu, 05 Apr 2007 22:40:31 +0800</pubDate>
  </item>
 </channel>
</rss>
