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 取值是传值调用
求解答!!!
------解决方案--------------------------------------------------------
应该是可以改变的,是不是你的代码写的有 问题:
是我写的测试代码,可以参考运行下。
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。