当前位置: 代码迷 >> J2SE >> java ArrayList列表取值有关问题
  详细解决方案

java ArrayList列表取值有关问题

热度:130   发布时间:2016-04-24 01:44:47.0
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。
  相关解决方案