A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 老衲玩IT 中级黑马   /  2013-8-22 23:16  /  989 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.test.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
class SerializableBean implements Serializable{
    private static final long serialVersionUID = 1L;
    private String test;


    public String getTest() {
            return test;
    }

    public void setTest(String test) {
            this.test = test;
    }

}

public class BeanMain {
private static void changeString() {
         List<String> l = new ArrayList<String>();
         String a = "SS";
         l.add(a);
         System.out.println(l.get(0));

         a = "zzz";

         System.out.println(l.get(0));
}
private static void changeObject() {
         List<SerializableBean> l = new ArrayList<SerializableBean>();
         SerializableBean e = new SerializableBean();
         e.setTest("SS");
         l.add(e);
         System.out.println(l.get(0).getTest());

         e.setTest("zzz");
         System.out.println(l.get(0).getTest());
}
         public static void main(String[] args) {
         changeString();
         changeObject();
}

}
输出结果:
SS
zzz
SS
SS

由输出结果可见,changeString两个结果一样,changObject达到了想要的效果。changeString:原因是动态数组引用a="ss"是指向"ss"的内存地址,a="zzz"时,a指向"zzz"的地址,而动态数组却还指向"ss"的地址。changeObject方法中动太数组 l 一直是指向 e的地址,所以e中的成员变量值改变时,l 中的元素的成员变量也改变(是相同的对象)。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

1 个回复

倒序浏览
纠正一下:
changeObject()输出:
SS
zzz
changeString()输出:
SS
SS
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马