类赋值问题

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的类型必须是一致的才行啊!

时间: 2024-10-26 17:53:14

类赋值问题的相关文章

iOS开发&gt;学无止境 - 遍历Model类的属性并完善使用Runtime给Model类赋值

在前几天的一篇博客<iOS开发之使用Runtime给Model类赋值>中介绍了如何使用运行时在实体类的基类中添加给实体类的属性赋值的方法,这个方法的前提是字典的Key必须和实体类的Property Name相同,然后通过运行时来生成和执行Setter方法给Model类的属性赋值. 通 过Runtime来给Model类属性赋值的好处是多多的,它便于代码的后期维护,并且提高了开发效率.当你拿到解析后的字典时你不用一个一个的通过 key去把字典的值赋值给相应的Model类的属性,本篇博客中会给出如何

iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值

http://www.cocoachina.com/ios/20150807/12877.html 在上篇博客<iOS开发之使用Runtime给Model类赋值>中介绍了如何使用运行时在实体类的基类中添加给实体类的属性赋值的方法,这个方法的前提是字典的Key必须和实体类的Property Name相同,然后通过运行时来生成和执行Setter方法给Model类的属性赋值. 通过Runtime来给Model类属性赋值的好处是多多的,它便于代码的后期维护,并且提高了开发效率.当你拿到解析后的字典时你

iOS开发之使用Runtime给Model类赋值

本篇博客算是给网络缓存打个基础吧,本篇博客先给出简单也是最容易使用的把字典转成实体类的方法,然后在给出如何使用Runtime来给Model实体类赋值.本篇博客会介绍一部分,主要是字典的key与Model的属性名相同时,使用Runtime来进行赋值,下篇博客会给出字典key的值和Model的名字不同时的解决方案,并给出使用Runtime打印实体类属性值的方式. 当然你可以使用KVC的setValuesForKeysWithDictionary:方法,下面的方法也是一种解决方案.如果使用setVal

c++,派生类对象可以对基类赋值,基类对派生类不可以赋值

#include <iostream> using namespace std; class DemoA { public: int m_a; void show(); DemoA(int val); }; DemoA::DemoA(int val) { m_a = val ; } void DemoA::show() { cout<<"ashow: DemoA.m_a="<<this->m_a<<endl; } //-------

[转]C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值

本文来自:http://www.cnblogs.com/mrchenzh/archive/2010/05/31/1747937.html /***************************************** * 说明:利用反射将数据库查询的内容自动绑定 *       到实体类 * * 时间:1:49 2009-9-19 * * 程序员:王文壮 * ***************************************/ /****************数据库脚本***

【Java】类赋值的使用方式

Regioninfo regioninfo=new Regioninfo(); regioninfo.setDistance(0); regioninfo.setInside(1); regioninfo.setShopid(2428069); regioninfo.setType(5); regioninfo.setRecalltype(0); regioninfo.setShopname("泼水广场"); Regioninfo regioninfo2=regioninfo; reg

.net给类赋值的两种方式

//第一种 List<FlightRefit> ls = new List<BPMSwebService.FlightRefit>(); ls.Add(new FlightRefit() { Id = 1,Agent="李四" }); ls.Add(new FlightRefit() { Id = 2 }); //第二种 FlightRefit[] fr = new FlightRefit[]{ new FlightRefit{Id=3,Agent="

.NET通过字典给类赋值

1 /// <summary> 2 /// 3 /// </summary> 4 /// <typeparam name="T"></typeparam> 5 /// <param name="origin">源数据</param> 6 /// <param name="target">对象数据</param> 7 /// <param name

Android利用反射机制为实体类属性赋值

在做android项目时,有时会遇到从网络上获取json类型数据,赋值给实体类,实体类属性少可以一个一个的赋值,如果实体类有很多属性,赋值可能就要耗很长的功夫了,幸好Java给我们提供了反射机制.下面是在我在android中如何利用java反射机制给实体类赋值. 在Android中利用反射机制为实体类属性赋值,首先需要导入一下两个包 import java.lang.reflect.Field; import java.lang.reflect.Method; 给实体类赋值首先需要一个实体类,这