java map 引用传递参数_java中的值传递和引用传递

public class Test3 {

public static void change(int a){

a=50;

}

public static void main(String[] args) {

int a=10;

System.out.println(a);

change(a);

System.out.println(a);

}

}

输出的 是10,10。main方法中将a传递给change方法,change方法中会对传递过来的参数进行copy,所以change中的a是实参复制出来的一个变量。change中的a的改变与实参无关。

public class Test3 {

public static void change(int []a){

a[0]=50;

}

public static void main(String[] args) {

int []a={10,20};

System.out.println(a[0]);

change(a);

System.out.println(a[0]);

}

}

输出结果为10   50。实际传递的是引用的地址值。形参获取到实参所指向的地址的指针。改变形参的值相当于改变实参指向地址的值,所以实参指向的值会改变。

class Emp {

public int age;

}

public class Test {

public static void change(Emp emp)

{

emp.age = 50;

emp = new Emp();//再创建一个对象

emp.age=100;

}

public static void main(String[] args) {

Emp emp = new Emp();

emp.age = 100;

System.out.println(emp.age);

change(emp);

System.out.println(emp.age);

System.out.println(emp.age);

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

输出为:100  50  50.

首先,方法中改变了对象的值,所以age为50,然后创建了一个新的对象,新的对象的指针放在了emp里。这时的emp和传递过来的emp所指向的地址不同了。最后设置age为100,是对新建的Emp对象的设置。也就是说,后来新建的emp相当于change方法中的私有变量,作用域只在change方法里。而传递过来的emp的指针是不会改变的。所以打印的emp是实参指向的空间。

好的,关于JAVA调用接口传递参数和接收JSON数据,可以通过以下步骤来实现: 1.导入相关的依赖包,例如Apache HttpClient、FastJSON等。 2.构造请求参数并转换为JSON格式。可以使用FastJSON将Java对象转换为JSON字符串。 3.创建HttpClient对象,并设置请求方法、请求头、请求体等参数。请求方法为POST,请求头需要设置Content-Type为application/json。 4.执行请求并获取响应。可以使用HttpClient执行请求,并获取响应。响应包含了接口返回的JSON数据。 5.解析JSON数据并处理结果。可以使用FastJSON将JSON字符串转换为Java对象,然后根据接口返回的数据进行相应的处理。 以下是示例代码: ```java import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache.http.HttpEntity; import org.apache.http.HttpHeaders; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class InterfaceTest { public static void main(String[] args) throws IOException { // 构造请求参数 Map<String, Object> params = new HashMap<String, Object>(); params.put("username", "test"); params.put("password", "123456"); String jsonStr = JSON.toJSONString(params); // 创建HttpClient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("http://localhost:8080/api/login"); // 设置请求头 httpPost.setHeader(HttpHeaders.CONTENT_TYPE, "application/json"); // 设置请求体 StringEntity stringEntity = new StringEntity(jsonStr, "UTF-8"); httpPost.setEntity(stringEntity); // 执行请求并获取响应 CloseableHttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); String responseStr = EntityUtils.toString(httpEntity, "UTF-8"); // 解析JSON数据并处理结果 JSONObject jsonObject = JSON.parseObject(responseStr); int code = jsonObject.getIntValue("code"); String message = jsonObject.getString("message"); if (code == 0) { // 登录成功 String token = jsonObject.getString("token"); System.out.println("登录成功,Token为:" + token); } else { // 登录失败 System.out.println("登录失败,原因:" + message); } // 关闭HttpClient和响应流 httpResponse.close(); httpClient.close(); } } ``` 注意:以上代码仅供参考,具体实现需要根据接口的具体要求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值