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取值是传值调用
求解答!!!
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());
}
}