
记录一些开发过程中遇到的问题和解决思路
方法传值
Java 方法中实参传递方式是 值传递:
- 如果参数是基本类型和字符串,传递的就是基本类型的字面量值的拷贝,会创建副本。
- 如果参数是引用类型(JavaBean、数组),传递的就是实参所引用的对象在堆中地址值的拷贝,同样也会创建副本
//测试代码
//分别选取JavaBean、JSONObject、int、Integer测试
public class test {
public void init() {
DataUnit dataUnit = new DataUnit();
dataUnit.setValue("aaa");
JSONObject obj = new JSONObject();
obj.put("aa", "bb");
int a = 1;
int[] b = {1, 2};
String s = "init";
System.out.println("DataUnit type before:" + dataUnit.getValue());
System.out.println("JSONObject type before:" + obj.getString("aa"));
System.out.println("int type before:" + a);
System.out.println("数组 before:" + b[1]);
System.out.println("String type before:" + s);
changeData(dataUnit, obj, a, b,s);
System.out.println("dataUnit value after:" + dataUnit.getValue());
System.out.println("obj after:" + obj.getString("aa"));
System.out.println("a after:" + a);
System.out.println("数组 type after:" + b[1]);
System.out.println("String type after:" + s);
}
public void changeData(DataUnit dataUnit, JSONObject object, int i, int[] j, String s) {
dataUnit.setValue("bbb");
object.put("aa", "cc");
i = 2;
j[1] = 3333;
s = "update";
}
public static void main(String[] args) {
new test().init();
}
}
2019年12月2日大约 4 分钟