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取值是传值调用
求解答!!!
------解决方案--------------------------------------------------------
应该是可以改变的,是不是你的代码写的有问题:
是我写的测试代码,可以参考运行下。
详细请点击:http://www.verydemo.com/demo_c89_i87936.html
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
相关文章推荐
- java中ArrayList深拷贝有关问题
- java中ArrayList深拷贝有关问题
- 有关 Java ArrayList 面试中比较具有迷惑性的问题
- java ArrayList的取值问题
- java 中列表元素删除,如ArrayList
- 有关JAVA Generic的一个问题
- Struts2与下拉列表绑定的取值问题
- 有关java中的Date,String,Timestamp之间的转化问题
- 使用Java中的ArrayList给所存对象排序问题
- 有关java中的Date,String,Timestamp之间的转化问题
- java中数组列表ArrayList的使用
- 有关JDK版本自动升级、java环境变量的问题
- Java有关内存问题
- 老紫竹JAVA提高教程(7)-认识List列表之ArrayList
- 有关java通过反射机制调用类中自有方法的问题
- 有关Java中两个整数的交换问题
- 请教:有关DataGrid的表格中的取值问题
- 有关java中resultSet的问题
- jsp下拉列表取值问题
- 有关java定时发送邮件遇到的一些问题