黑马程序员技术交流社区

标题: vector 集合问题 [打印本页]

作者: 微微微笑    时间: 2014-8-3 21:54
标题: vector 集合问题
import java.util.Vector;


public class test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        test();

    }
    public static void test(){
        String name[]={"Li","ndk"};
        int age[]={1,2};
        Vector<Object> v=new Vector<Object>();
        Person p=new Person();
        for(int i=0;i<2;i++){
            //Person p=new Person();       *******************
            p.setName(name[i]);
            p.setAge(age[i]);
            v.add(p);
        }
        for(int i=0;i<v.size();i++){
            System.out.println(v.get(i));
        }
        
    }

}
class Person{
    private String name="";
    private int age=0;
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        this.age=age;
    }
}
上程序中,当把   Person p=new Person();   放在for循环外,则打印出的会被最后一个地址值覆盖,放在里面就正常,查了一下说是作用域太大,不过没看懂,有没有懂的仔细解释一下?


作者: liqi    时间: 2014-8-3 22:10
放在外面,只实例化了一个对象,放在里面,每次for循环实例化一个对象,在你的例子里实例化了两个人。
即放在外面时,只有一个人,你在操作名字,年龄,只有一个人,你能给这个人两个名字,两个年龄?
作者: 微微微笑    时间: 2014-8-3 22:20
liqi 发表于 2014-8-3 22:10
放在外面,只实例化了一个对象,放在里面,每次for循环实例化一个对象,在你的例子里实例化了两个人。
即放 ...

懂了,谢了:handshake
作者: liqi    时间: 2014-8-3 22:54
微微微笑 发表于 2014-8-3 22:20
懂了,谢了

不客气。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2