朋友们帮忙看看这个为解决的问题(JAVA)。多谢。

sunjianxi 2006-03-09 10:56:30
下列程序在1处是否会有异常,如果没有,输出是什么?是否会运行到2处,如果会,输出是什么?为什么会有这样的结果?
public class TestClass {
public void test1() {
List list = new ArrayList();
test2(list);
System.out.println(list.size()); // 1处
test3(list);
System.out.println(list.size()); // 2处
}

public void test2(List list) {
list = null;
}

public void test3(List list) {
list.add(“aaaa”);
}
}
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vincent__Kevin 2006-03-11
  • 打赏
  • 举报
回复
没有异常,在一处输出0,二处输出1
至于为什么输出0,楼上有位朋友已说了,
我就不再多说了。
至于输出1吗!我简单的说一下。
因为list.add("aaaa")所返回的是true,因此不管你给什么参数都输出1。
aywrenyue 2006-03-10
  • 打赏
  • 举报
回复
只看到了逻辑代码,没有注意细节,哈哈,没有实例化!
public class TestClass {
public void test1() {
List list = new ArrayList();
test2(list);
System.out.println(list.size()); // 1处
test3(list);
System.out.println(list.size()); // 2处
}

public void test2(List list) {
list = null;
}

public void test3(List list) {
list.add(“aaaa”);
}
public static void main(String s[])
{
TestClass tc = new TestClass();
tc.test1();
}
}
zengxftm 2006-03-10
  • 打赏
  • 举报
回复
呵呵。。。。。。。。。。
这个类写了放那儿没初始化,没输出的啦!
zhao_417 2006-03-10
  • 打赏
  • 举报
回复
我晕
怎么会有输出啊
这个类没有被实例化,方法没有被调用
怎么会有输出呢??
zorro09 2006-03-09
  • 打赏
  • 举报
回复
list是易变对象。楼上解释得很清楚,偶就不讲了:(
dogod 2006-03-09
  • 打赏
  • 举报
回复
不会有异常,
1处:
list.size()为0,
他显示的是最初初始化的List list = new ArrayList();
test2(list)传过去的只是一个reference的拷贝.其中的list=null;只是给这个拷贝设成了空值;操作的是reference本身,而不是对象;
2处:
为1,传过去的reference拷贝,指向test1中生成的对象,list.add() 改变了对象内容;

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧