遇到个这样的错误
byte[] bKey=new byte[1];
ArrayList byteList=new ArrayList();
for(int i=0;i<10;i++){
MessagePacket packet=new MessagePacket();
packet.setKey(bKey);
byteList.add(packet);
}
for(int j=0;j<byteList.size();j++){
System.out.println(((MessagePacket)byteList.get(i)).getKey()[0])
}
由上代码输出会发现对象MessagePacket里的属性key都变成了9,因为只在循环外创建了一个新的对象bKey,而把他的引用给了10个MessagePacket对象,只要此值一变,10个对象里的属性跟着全变。。。导致错误,所以应该把
byte[] bKey=new byte[1];
放到循环里,这样就创建了10个对象并且将其引用给了bKey再由他分发到MessagePacket里,这样每个MessagePacket下的key都是不同的对象(即不同的内存空间,否则其实是同一个东西。。。),就像烂大街的String的引用,虽然简单,但还是犯错。。。。搞了一下午。。。
分享到:
相关推荐
ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,...
- **复用对象**:当对象不再使用时,应考虑将其重用于后续操作,而不是创建新的对象。 - **利用静态字段**:如果一个对象的值在整个程序运行期间都不会改变,可以考虑将其作为静态字段存储,以减少对象的创建次数。 ...
在浏览《Thingking in Java》(第一版)时,你是不是觉得好象这还是一本 Java 基础语言书籍?但又不纯粹是,因为这本书的作 者将面向对象的思想巧妙的融合在 Java 的具体技术上,潜移默化的让你感觉到了一种新的语言...
45.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,...
- 数据源可以是ArrayList(图片路径)、ArrayList(图片对象)或者使用ContentProvider返回的URI列表。 8. **性能优化** - 使用ViewHolder设计模式提高滚动流畅性,减少findViewById()的调用次数。 - 缩放图片大小以...
描述中提到的“考试时有20道左右的题目跟里面的一模一样”,这表明这些题库对于熟悉考试格式、题型和常见问题类型是很有价值的。然而,值得注意的是,Oracle公司不断更新其考试内容,以防止考生仅仅依赖特定的题库...
1. 创建数据源:这可以是一个ArrayList,里面包含你需要展示的数据对象。每个对象可以根据需求包含多个键值对,例如图片URL和对应的文字描述。 2. 创建数据映射:定义一个二维数组,用于描述数据源中的每个键值对...
- 数据源可以是数组、ArrayList或者其他集合类,包含要显示的对象。 - 将数据源传递给Adapter,例如`adapter = new CustomAdapter(context, R.layout.list_item, dataList);` 4. **设置ListView**: - 在主布局...
但如果是在内存中处理小型数据集,以上两种方法都是可行的选择。此外,还可以考虑使用Java 8的Stream API来简化代码并提高效率,或者使用专门的搜索库,如Apache Lucene,来实现更复杂的模糊查询需求。
5. **关闭资源**:最后,确保所有打开的资源(如`Connection`、`Statement`和`ResultSet`)都被正确关闭,以避免内存泄漏等问题。 #### 二、使用ibatis组件实现数据库操作 ibatis(现称为MyBatis)是一个优秀的...
180多页面试题,前前后后不间断的更新了两年,准备换工作时,总是拿来看看,有比较好的面试题,也不间断的更新,面试题目录如下: 【基础】面向对象的特征有哪些方面 13 抽象 13 继承 13 封装 13 多态性 13 【基础】...
查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...
HybridApp 一种可以下载的Native App,其用户界面的全部或者部分元素在嵌入式浏览器组件(WebView之类的)里面运行 优雅降级 一开始就构建站点的完整功能,然后针对浏览器测试和修复。认为应该针对那些最高级、最...
Java的特点包括跨平台性、自动内存管理(垃圾回收)以及丰富的类库,这些都使得Java在处理算法问题时显得尤为适合。 1. **基础语法与数据结构** - Java的基础语法包括变量、常量、控制流(if、switch、for、while...
Java是一种面向对象的编程语言,在Java中,对于方法的参数传递有两种方式:按值传递和按引用传递。这两种方式都有其特点和应用场景,本文将对这两种方式进行详细的介绍和分析。 一、按值传递 按值传递是指在方法...
在Android应用开发中,使用DOM(文档对象模型)解析XML格式的数据是一种常见的数据处理方式,但它的效率在处理大数据量时并不高,因此在数据量大时并不推荐使用。本文将详细介绍如何在Android应用中使用DOM方式解析...