看到标题也许感觉有点绕?先看看下面的问题!最近在做Android项目的时候,对一个集合对象的数据的分析怎么都不对,最后终于发现了问题,来记录一下,其实超级基础的东西,╮(╯▽╰)╭
private static ArrayList<Node> mDatas = null;
    /**
     * @param args
     */
    public static void main(String[] args) {
        ArrayList<Node> a = new ArrayList<Node>();
        Node na = new Node();
        na.setData(10);
        na.setIndex(0);
        Node nb = new Node();
        nb.setData(11);
        nb.setIndex(1);
        a.add(na);
        a.add(nb);
        R(a);// 调用,想一下结果?
        R(a);// 再次调用,想想结果?
    }
    private static void R(ArrayList<Node> a) {
        setData(a);
        System.out.println("a的数据长度:" + a.size());
    }
    private static void setData(ArrayList<Node> array) {
        if (mDatas != null) {
            mDatas.clear();
            mDatas = null;
        }
        mDatas = array;
        System.out.println("mData的数据长度:" + mDatas.size());
    }结果是: 
mData的数据长度:2 
a的数据长度:2 
mData的数据长度:0 
a的数据长度:0
你对了么?
也许对了,那接下来你就不用看了?也许没对接下来继续看代码: 
先声明一个类:
public class Node {
    private int data;
    private int index;
    public int getData() {
        return data;
    }
    public void setData(int data) {
        this.data = data;
    }
    public int getIndex() {
        return index;
    }
    public void setIndex(int index) {
        this.index = index;
    }
}
接下来,看主要代码:
public static void main(String[] args) {
        // TODO Auto-generated method stub
        /**
         * 集合
         */
        ArrayList<Integer> a=new ArrayList<Integer>();
        Integer i1=1;
        Integer i2=2;
        a.add(i1);
        a.add(i2);
        ArrayList<Integer> b=a;
        ArrayList<Integer> c=b;
        c.clear();
        System.out.println("集合的长度:"+a.size());
        /**
         * 数组
         */
        int[] in=new int[10];
        in[0]=1;
        in[1]=2;
        int[] ou=in;
        ou[0]=0;
        System.out.println("数组in的第一个元素:"+in[0]);
        System.out.println("数组in第二个元素"+in[1]);
        /**
         * 自定义对象
         */
        Node na=new Node();
        na.setData(1);
        na.setIndex(0);
        Node ba=na;
        ba.setData(2);
        System.out.println("na的data等于:"+na.getData());
    }其实上面的代码很简单,就是全部先声明一个对象,然后再声明一个该对象类型的变量,再让其他的变量获得该对象的引用。例如:b=a,c=b,如果有java基础应该知道,b或者c获得的是a这个引用对象的地址,操作b或者c就是直接操作该对象。因此结果: 
集合的长度:0 
数组in的第一个元素:0 
数组in第二个元素2 
na的data等于:2
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/u011625768/article/details/46895005