锁定老帖子 主题:一个馒头引发的血案
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间: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是对象数组吗?有人知道其来源吗? |
|
返回顶楼 | |
发表时间:2008-11-27
传入方法的参数都是拷贝,你的拷贝初始化了,你自己没有初始化,所以抛出异常
|
|
返回顶楼 | |
发表时间: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中要记住永远是值传递。 |
|
返回顶楼 | |
发表时间: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不久而且还没毕业,刚转过来就在做页面,这些基础打得不好,希望那位大侠说明一下,哈哈 |
|
返回顶楼 | |
发表时间: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是对象数组吗?有人知道其来源吗? 这就好像我给你一个篮子,说去给我摘点苹果来, 于是你去了,到了苹果树下,你自己可能看我的篮子太小,自己又编了个篮子,装满苹果,可是回来的时候,你的篮子不能用阿,我给你的可是小的篮子,于是你只好把空的篮子拿回来了。 |
|
返回顶楼 | |
发表时间: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的数组可以直接打印出来 |
|
返回顶楼 | |
发表时间:2008-11-27
抛出异常的爱 写道 zhangsheng79 写道 应该不会抛出异常,这个涉及实例创建和参数引用的问题,一般初学者不明白也很正常,不明白为什么这么多人都劝lz改行,你们真的明白?
......程序员这个职业吃不饱,穿不暧,现在还大大的找不到工作. 如果不爱好编程 不能主动的找到问题答案 干点什么不好 还是趁还没进入门坎之前放弃吧 少损失些青春...... PS:劝你也不要跳入火坑了 说得有理 |
|
返回顶楼 | |
发表时间:2008-11-27
为什么会抛出异常??????根本不会抛出异常,直接打出null………………
|
|
返回顶楼 | |
发表时间:2008-11-27
jieyuan_cg 写道 为什么会抛出异常??????根本不会抛出异常,直接打出null………………
FC10? |
|
返回顶楼 | |
发表时间:2008-11-27
zalpirin 写道 jieyuan_cg 写道 为什么会抛出异常??????根本不会抛出异常,直接打出null………………
FC10? 不是,FC9,呵呵……装了VirtualBox,虚拟了XP,然后用无缝模式!!! 主要还是为了用公司的RTX。用wine实在折腾不起了,就直接改用VB了。 |
|
返回顶楼 | |