以前在书上看到过,java的基础数据类型的传值是值传递,而非基础类型的传值为引用传值(传的是放数据的对象的地址)。对java的传值方式没有很深刻的理解。通过这次犯的错误,使我对java的传值方式理解了一点。
我是想把一条一条的记录通过jo放入到jsonArr中。
错误代码:
JSONObject jo = new JSONObject();
for (i = 1; i < bbsTagOptionList.size()+1; i++) {
BbsSubject bs = (BbsSubject) bbsTagOptionList.get(i-1);
Long bbsSubjectId = bs.getId();
String name = bs.getName();
jo.put("bbsSubjectId", bbsSubjectId);
jo.put("name", name);
jsonArr.put(i, jo);
}
打印输出后,jsonArr中所有的数据都跟最后一条数据一样(jsonArr[0]==jsonArr[1]==jsonArr[2]),很不明白。
只好求助师姐,师姐很快发现了问题的所在。jsonArr.put(i,jo);只是把jo的地址传进了jsonArr中。而我写的错误代码中只声明了一个JsonArray对象,当然jsonArr中的放的都是同一个地址,当然每条值根据地址找到的都是最后一次放入jo中的值。
正确代码:
for (i = 1; i < bbsTagOptionList.size()+1; i++) {
BbsSubject bs = (BbsSubject) bbsTagOptionList.get(i-1);
Long bbsSubjectId = bs.getId();
String name = bs.getName();
JsonObject jo=new JsonObject();
jo.put("bbsSubjectId", bbsSubjectId);
jo.put("name", name);
jsonArr.put(i, jo);
}
分享到:
相关推荐
【标题】:“Android-Servlet-MySQL(json)登录传值”技术详解 在移动应用开发中,尤其是Android平台,用户登录功能是不可或缺的一部分。本技术专题将深入探讨如何在Android客户端通过Servlet与远程MySQL数据库交互...
### 解决Java enctype "multipart/form-data" 文件上传传值问题 在Java Web开发中,处理文件上传是一项常见的任务。特别是当涉及到使用`multipart/form-data`作为表单的编码类型时,这种需求更为突出。本文将深入...
通过这个简单的Java Web学习demo,开发者可以了解Servlet和JSP协同工作的方式,以及如何在它们之间传递数据。这有助于理解Web应用的基础架构,并为进一步深入学习和开发复杂的Java Web应用打下坚实基础。
"lotus domnio java代理传值"这个主题主要涉及如何在Java代码中创建和使用代理,并在代理之间传递参数。 首先,让我们了解一下Lotus Domino Java代理的基本概念。在Lotus Domino Designer中,Java代理是用Java语言...
### Java传值中的乱码问题及最简易的解决方法 在Java Web开发中,经常会遇到一个令人头疼的问题:客户端向服务器传递数据时出现乱码。这种情况不仅会影响用户体验,还可能导致程序逻辑错误。本文将深入探讨Java传值...
Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE程序 界面传值问题Java SE...
在Java编程语言中,"传值与传值后的改变"是一个关键的概念,涉及到函数调用时参数的传递方式。在Java中,有两种基本的数据类型:原始类型(如int, double, char等)和引用类型(如类实例、数组)。它们在函数调用时...
- Java端可以使用JSON库(如Jackson或Gson)将Java对象转换为JSON字符串,然后通过上述方式传递给JavaScript。 - JavaScript可以使用JSON.parse()解析接收到的JSON字符串,将其转换回JavaScript对象。 4. **Web...
layui-soul-table 后台java版 当前soul-table版本 v1.0, layui版本:v2.5.4 mybatis版: master分支 mybatis-plus版: mybatis-plus分支 hibernate版: hibernate分支 所有筛选demo: 仅后台java版demo: 当然你也可以...
在Java Web开发中,页面传值是不可或缺的一部分,主要用于用户在网页上填写信息后提交到服务器进行处理。本文将详细讲解如何在Java中通过表单(Form)进行页面传值的简单操作。 首先,我们需要了解HTML中的表单元素...
根据标题和描述,我们将深入探讨Java中传值与引用的区别,以及它们在实际编程中的应用。 首先,Java是一种“总是按值传递”的语言。这意味着无论是基本类型还是引用类型,当作为参数传递时,都会有一个副本被创建并...
### Java及C++中传值传递、引用传递和指针方式的理解 在程序设计语言中,函数调用时参数的传递方式对理解程序的行为至关重要。本文将深入探讨Java与C++这两种广泛使用的编程语言中参数传递的方式,包括值传递、引用...
### JAVA中传值与引用问题详解 #### 一、引言 在计算机编程领域,特别是对于面向对象语言如Java而言,“传值”与“传引用”的概念是理解数据传递机制的关键所在。Java作为一种广泛使用的高级编程语言,在设计之初就...
### Java是传值还是传址引用 #### 一、简单类型是按值传递的 Java在处理简单数据类型(如int、boolean等)时采用的是按值传递的方式。这意味着当你将一个简单类型的值作为参数传递给一个方法时,实际上传递的是这...
JAVA传值与传引用[整理].pdf
本文将深入探讨Android Intent的多种传值方式。 1. **基本类型传值** - 使用`putExtra()`方法:Intent提供了`putExtra(String name, boolean value)`、`putExtra(String name, char value)`等方法,可以用来传递...
4. Interface回调:这是一种更规范的通信方式,定义一个接口,Fragment实现这个接口,然后在Activity中调用Fragment暴露的接口方法,以此来传递数据。这种方式适用于Activity向Fragment传递数据,或者需要在Fragment...
3. **发送命令**:Asterisk-java提供了`ManagerAction`类,你可以通过继承它来定义自己的命令,或者使用内置的命令,如`OriginateAction`用于发起新的通话,`HangupAction`用于挂断通话。通过`ManagerConnection`的`...
### Struts2 传值方式详解 在Struts2框架中,实现前后台的数据传递是构建Web应用的基础之一。本文将详细介绍三种常见的Struts2数据传递方式:通过默认的Action属性传递、使用Value Object(VO)传递以及利用...
```java public class MainActivity extends Activity { private TextView textView; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate...