您的位置:首页 > 编程语言 > Java开发

java ArrayList列表取值有关问题

2014-05-22 12:35 357 查看
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取值是传值调用

求解答!!!

------解决方案--------------------------------------------------------

应该是可以改变的,是不是你的代码写的有问题

是我写的测试代码,可以参考运行下。
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;
}

------解决方案--------------------------------------------------------
代码如下
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。

详细请点击:http://www.verydemo.com/demo_c89_i87936.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: