首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java ArrayList列表取值有关问题

2012-03-16 
java ArrayList列表取值问题ArrayListStudent listnew ArrayListStudent()Student snew Student()

java ArrayList列表取值问题
ArrayList<Student> list=new ArrayList<Student>();
Student s=new Student();
s.setName("xiaoming");
s.setAge(20);
list.add(s);
s=list.get(0);
s.setAge(10);
System.out.println("改变后的年龄值为:"list.get(0).getAge());
预期结果:改变后的年龄值为:10
但是运行结果显示是:改变后的年龄值为:20

前后s对象引用的都是同一块内存,为什么对象中的值没有被修改,难道ArrayList取值是传值调用
求解答!!!

[解决办法]
应该是可以改变的,是不是你的代码写的有问题:
是我写的测试代码,可以参考运行下。

Java code
package test;import java.util.ArrayList;public class Test {    /**     * @param args     */    public static void main(String[] args) {        ArrayList<Student> list=new ArrayList<Student>();        Student s=new Student();        s.setName("xiaoming");        s.setAge(20);        list.add(s);        s=list.get(0);        s.setAge(10);        System.out.println("改变后的年龄值为:"+list.get(0).getAge());    }}class Student{        public Student(){            }            /**     * @return the name     */    public String getName() {        return name;    }    /**     * @param name the name to set     */    public void setName(String name) {        this.name = name;    }    /**     * @return the age     */    public int getAge() {        return age;    }    /**     * @param age the age to set     */    public void setAge(int age) {        this.age = age;    }    private int age;    private String name;}
[解决办法]
代码如下
Java code
import java.util.ArrayList;import java.util.List;import obj.Student;public class TestInteger {    public static void main(String[] args) {        List<Student> list = new ArrayList<Student>();        Student stu = new Student();        stu.setName("Tom");        stu.setAge(20);                list.add(stu);                stu = list.get(0);        stu.setAge(10);        System.out.println(stu.getAge());        System.out.println(list.get(0).getAge());    }}
[解决办法]
同一楼
[解决办法]
应该没问题,楼主检查一下代码:)
[解决办法]
我测试也是值被改变了。 10。

热点排行