站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题传递引用的经典

传递引用的经典

摘要: 传递引用的经典

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="180" height="86" align="center" valign="top"> </td> <td width="504" valign="top">

下列程序在1处是否会有异常,如果没有,输出是什么?是否会运行到2处,如果会,输出是什么?为什么会有这样的结果?

  import java.util.ArrayList;
   import java.util.List;
  
   public class TestClass {


   public static void main(String args[]) {
     List list = new ArrayList();
     test2(list);
     System.out.println(list.size()); // 1处
     test3(list);
     System.out.println(list.size()); // 2处
   }
  
   public static void test2(List list) {
     list = null;
   }
  
   public static void test3(List list) {
      list.add(“aaaa“);
   }
   }

plumeChen:

不会出错的。结果是0,1。

因为test2(list)传得是list的引用,我理解成指针置的副本,list=null;只是把那个传入的值设置为null,不改变原来list的指针和内容。test3(list)传入的一样,但是执行了list.add()由于传入指针值的副本也指向原来的那个list的地址,所以原来的那个list的内容就改变了,size变成了1了。

 
</td> </tr> </table> </td> </tr> <tr>


↑返回目录
前一篇: 正则表达式
后一篇: composite模式写的二叉树的例子