首页 > 代码库 > 类赋值问题
类赋值问题
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的类型必须是一致的才行啊!
类赋值问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。