码迷,mamicode.com
首页 > 其他好文 > 详细

类赋值问题

时间:2016-09-23 20:02:13      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:

 

package 类赋值问题;

import java.util.Arrays;

public class ST {
    private byte[] szMsgCode = new byte[4]; 
    private byte[] sBitMap = new byte[3]; 

    public byte[] getSzMsgCode() {
        return szMsgCode;
    }

    public void setSzMsgCode(byte[] szMsgCode) {
        this.szMsgCode = szMsgCode;
    }

    public byte[] getsBitMap() {
        return sBitMap;
    }

    public void setsBitMap(byte[] sBitMap) {
        this.sBitMap = sBitMap;
    }

    @Override
    public String toString() {
        return "ST [szMsgCode=" + Arrays.toString(szMsgCode) + ", sBitMap="
                + Arrays.toString(sBitMap) + "]";
    }

}
package 类赋值问题;

public class Test {
    public static void main(String[] args) {
        ST st = new ST();
        byte[] SDATA = { 1 };
        SDATA[0] = 3;
        st.setSzMsgCode(SDATA);
        System.out.println(st.getSzMsgCode()[0]);
        SDATA[0] = 2;
        st.setsBitMap(SDATA);
        System.out.println(st.toString());
    }

}
3
ST [szMsgCode=[2], sBitMap=[2]]

也就是说类的成员变量byte[]引用到了外界的byte[],所以内容都相同改变。

 

当用一个数组名直接给另一个数组赋值时,是相当于赋了一个引用,此时,这两个变量是指向同一个对象,也就是说指向同一块内存空间,当你修改其中一个变量的值时,其他那个变量的值也随着改变了。

int [] a=new int[10];
int [] b=a;
for(int i=0;i<10;i++){
b[i]=i;
}

此时a和b指向同一个内存空间,所以当打印a,b数组时,他们的结果应该是一样的,尽管没有对a数组进行初始化。当然,数组a和数组b的类型必须是一致的才行啊!

类赋值问题

标签:

原文地址:http://www.cnblogs.com/H-BolinBlog/p/5901117.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!