论坛首页 招聘求职论坛

一个馒头引发的血案

浏览 16800 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2008-11-27  
我把题目改问,修改一下,代码如下:
public class Test
{
    public static void main(String[] args)
    {
        List a = new ArrayList();
        B b = new B();
        b.mm(a);

        System.out.println(a);
    }
}



public class B
{
    public void mm(List a)
    {
       a = new ArrayList();
       a.add("mm");
    }
}


为什么打印出来是 : []

而把B类改成

public class B
{
    public void mm(List a)
    {
       a.add("mm");
    }
}

则打印出  [mm]
以前没发现,很好奇[]是怎么来的,是因为ArrayList是对象数组吗?有人知道其来源吗?
0 请登录后投票
   发表时间:2008-11-27  
传入方法的参数都是拷贝,你的拷贝初始化了,你自己没有初始化,所以抛出异常
0 请登录后投票
   发表时间:2008-11-27  
cxhgoo 写道
我把题目改问,修改一下,代码如下:
public class Test
{
    public static void main(String[] args)
    {
        List a = new ArrayList();
        B b = new B();
        b.mm(a);

        System.out.println(a);
    }
}



public class B
{
    public void mm(List a)
    {
       a = new ArrayList();
       a.add("mm");
    }
}


为什么打印出来是 : []

而把B类改成

public class B
{
    public void mm(List a)
    {
       a.add("mm");
    }
}

则打印出  [mm]
以前没发现,很好奇[]是怎么来的,是因为ArrayList是对象数组吗?有人知道其来源吗?




就是这样的 和那个null是一个道理,你改了引用的地址,在java中要记住永远是值传递。
0 请登录后投票
   发表时间:2008-11-27  
刚刚测试了一下数组
package JavaTest;

public class Test
{
    public static void main(String[] args)
    {
        String []kk = {"dfkdsja","kdfjd","dkdjd"};
        for (int j= 0; j < kk.length; j++)
        {
            System.out.println(kk[j]);
        }
        System.out.println(kk);
    }
}

既然打印出来:
       dfkdsja
       kdfjd
       dkdjd
       [Ljava.lang.String;@de6ced
       成功生成(总时间:0 秒)
很奇怪: System.out.println(kk);既然是打印出: [Ljava.lang.String;@de6ced
我是刚学Java不久而且还没毕业,刚转过来就在做页面,这些基础打得不好,希望那位大侠说明一下,哈哈

0 请登录后投票
   发表时间:2008-11-27  
cxhgoo 写道
我把题目改问,修改一下,代码如下:
public class Test
{
    public static void main(String[] args)
    {
        List a = new ArrayList();
        B b = new B();
        b.mm(a);

        System.out.println(a);
    }
}



public class B
{
    public void mm(List a)
    {
       a = new ArrayList();
       a.add("mm");
    }
}


为什么打印出来是 : []

而把B类改成

public class B
{
    public void mm(List a)
    {
       a.add("mm");
    }
}

则打印出  [mm]
以前没发现,很好奇[]是怎么来的,是因为ArrayList是对象数组吗?有人知道其来源吗?



这就好像我给你一个篮子,说去给我摘点苹果来,
于是你去了,到了苹果树下,你自己可能看我的篮子太小,自己又编了个篮子,装满苹果,可是回来的时候,你的篮子不能用阿,我给你的可是小的篮子,于是你只好把空的篮子拿回来了。
0 请登录后投票
   发表时间:2008-11-27  
cxhgoo 写道
刚刚测试了一下数组
package JavaTest;

public class Test
{
    public static void main(String[] args)
    {
        String []kk = {"dfkdsja","kdfjd","dkdjd"};
        for (int j= 0; j < kk.length; j++)
        {
            System.out.println(kk[j]);
        }
        System.out.println(kk);
    }
}

既然打印出来:
       dfkdsja
       kdfjd
       dkdjd
       [Ljava.lang.String;@de6ced
       成功生成(总时间:0 秒)
很奇怪: System.out.println(kk);既然是打印出: [Ljava.lang.String;@de6ced
我是刚学Java不久而且还没毕业,刚转过来就在做页面,这些基础打得不好,希望那位大侠说明一下,哈哈


System.out.println(kk);既然是打印出: [Ljava.lang.String;@de6ced 这个是这个数组的hash吧。
你可以学javascript,js的数组可以直接打印出来
0 请登录后投票
   发表时间:2008-11-27  
抛出异常的爱 写道
zhangsheng79 写道
应该不会抛出异常,这个涉及实例创建和参数引用的问题,一般初学者不明白也很正常,不明白为什么这么多人都劝lz改行,你们真的明白?

......程序员这个职业吃不饱,穿不暧,现在还大大的找不到工作.
如果不爱好编程
不能主动的找到问题答案
干点什么不好
还是趁还没进入门坎之前放弃吧
少损失些青春......

PS:劝你也不要跳入火坑了


说得有理
0 请登录后投票
   发表时间:2008-11-27  
为什么会抛出异常??????根本不会抛出异常,直接打出null………………
0 请登录后投票
   发表时间:2008-11-27  
jieyuan_cg 写道
为什么会抛出异常??????根本不会抛出异常,直接打出null………………


FC10?
0 请登录后投票
   发表时间:2008-11-27  
zalpirin 写道
jieyuan_cg 写道
为什么会抛出异常??????根本不会抛出异常,直接打出null………………


FC10?

不是,FC9,呵呵……装了VirtualBox,虚拟了XP,然后用无缝模式!!!
主要还是为了用公司的RTX。用wine实在折腾不起了,就直接改用VB了。
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics