一个JAVA小问题,高手讲解一下(蛮有意思)

zdblzwj 2008-06-05 05:16:37

package com.mbsmc.commons;

import java.util.*;

import com.mbsmc.model.TERM;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TERM stu = new TERM();//这是一个对象
List list = new ArrayList();
stu.setCOUNTY_NAME("cq");
list.add(0,stu);
stu.setCOUNTY_NAME("sc");
list.add(1,stu);
for(int i = 0 ;i<list.size();i++){
TERM aa = (TERM)list.get(i);
System.out.println("CITY:"+ aa.getCOUNTY_NAME());

}


}

}


输出:
CITY:sc
CITY:sc

package com.mbsmc.commons;

import java.util.*;

import com.mbsmc.model.TERM;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TERM stu = new TERM();//这是一个对象
List list = new ArrayList();
stu.setCOUNTY_NAME("cq");
list.add(0,stu);
stu = new TERM();
stu.setCOUNTY_NAME("sc");
list.add(1,stu);
for(int i = 0 ;i<list.size();i++){
TERM aa = (TERM)list.get(i);
System.out.println("CITY:"+ aa.getCOUNTY_NAME());

}


}

}


输出:
CITY:cq
CITY:sc


今天遇到这样一个问题,不知很明白JAVA是怎么运行的..高手讲解下
...全文
205 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cannoesword 2008-06-10
  • 打赏
  • 举报
回复
顶一下,楼上的已经说的很清楚了
zdblzwj 2008-06-10
  • 打赏
  • 举报
回复
我只有把这个理解成一个规则了..多谢各位解答!
Javahaoshuang3394 2008-06-06
  • 打赏
  • 举报
回复
感觉上面没有人说清楚这个问题:stu这个对象只有一个啊!
qusic 2008-06-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 craky 的回复:]
第一个程序片段中,TERM 只new了一个对象,重新setCOUNTY_NAME之后原来的也变了

第二个程序片段中,TERM new了两个对象
[/Quote]
正解,简单明了。
xuelangchina 2008-06-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 craky 的回复:]
第一个程序片段中,TERM 只new了一个对象,重新setCOUNTY_NAME之后原来的也变了

第二个程序片段中,TERM new了两个对象
[/Quote]

同意!!
youzy 2008-06-05
  • 打赏
  • 举报
回复
进来了,帮顶
ChDw 2008-06-05
  • 打赏
  • 举报
回复
stu.setCOUNTY_NAME("cq");
list.add(0,stu);
stu.setCOUNTY_NAME("sc");
list.add(1,stu);

这样使得List的两个记录实际上是指向同一个对象,所以stu.setCOUNTY_NAME("sc");会影响这两个对象


list.add(0,stu);
stu = new TERM();
stu.setCOUNTY_NAME("sc");
list.add(1,stu);
这样在List里面的两个记录,实际上分别指向两个对象了,它们之间互不影响的
he6266 2008-06-05
  • 打赏
  • 举报
回复
因为list.add(1,stu);方法保存到List里的是对象的引用。第一段代码的list里保存了两个引用,两个引用指向同一个对象,所以输出的都是sc。
第二段代码在list存放第一个对象后执行这句stu = new TERM();这样stu指向一个新的实例。改变stu不会影响list里存放的第一个实例。所以输出的是cq和sc
littleprobe 2008-06-05
  • 打赏
  • 举报
回复
前一个是同一个对象重复赋值,先的一个值被替换为新值,over
craky 2008-06-05
  • 打赏
  • 举报
回复
第一个程序片段中,TERM 只new了一个对象,重新setCOUNTY_NAME之后原来的也变了

第二个程序片段中,TERM new了两个对象
jingulang 2008-06-05
  • 打赏
  • 举报
回复
你那个包 没见过
不懂
帮顶

62,634

社区成员

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

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