java ArrayList列表取值有关问题

本文探讨了Java ArrayList中元素修改的问题,通过实例代码展示如何正确地修改ArrayList中对象的属性,并解释了对象引用和内存地址的关系。文章还提供了代码示例供读者参考,帮助解决在实际开发中可能遇到的相似问题。
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。
				

详细请点击:http://www.verydemo.com/demo_c89_i87936.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值