首页 > 代码库 > 类赋值问题

类赋值问题

 

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 = http://www.mamicode.com/{ 1 };        SDATA[0] = 3;        st.setSzMsgCode(SDATA);        System.out.println(st.getSzMsgCode()[0]);        SDATA[0] = 2;        st.setsBitMap(SDATA);        System.out.println(st.toString());    }}
3ST [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的类型必须是一致的才行啊!

类赋值问题