arraylist可以说是java编程过程中经常会使用到的一个容器,可是其中存放的究竟是对象的引用还是对象本身呢??为了弄清楚这个问题,我写了以下这个小程序
import java.util.ArrayList; public class fsd { public static void main(String args[]) { a A=new a(); ArrayList<a> b=new ArrayList<a>(); A.setA(0); A.setB(1); b.add(A); A.setA(3); A.setB(4); System.out.println(b.get(0)); } } class a{ int a,b; public int getA() { return a; } public void setA(int a) { this.a = a; } public int getB() { return b; } public void setB(int b) { this.b = b; } @Override public String toString() { // TODO Auto-generated method stub return "a "+a+" b "+b; } }
输出的结果不是"a 0 b 1"而是"a 3 b 4",这样问题就很明显了,arraylist中存入的是对象的引用而不是对象本身