借鉴文章:
https://blog.csdn.net/Start1234567/article/details/109373902
public static void main(String[] args) {
/*基本数据类型,包装类和String类型的形参是值传递,
值传递不会影响原对象的值;
其他类型是引用传递
* 引用传递在不改变对象的情况下(即new一个对象),更改对象属性会对原对象造成影响*/
int a=0;
test(a);
System.out.println("原对象int:"+a);
System.out.println("--------------------");
Integer i=null;
test(i);
System.out.println("原对象Integer:"+i);
System.out.println("--------------------");
String str=null;
test(str);
System.out.println("原对象String:"+str);
System.out.println("--------------------");
String[] s = new String[2];
test(s);
for (String s1 : s) {
System.out.println("原对象数组:"+s1);
}
System.out.println("--------------------");
JSONObject jsonObject = new JSONObject();
test(jsonObject);
System.out.println("原对象JSONObject:"+jsonObject);
}
public static void test(int i){
i=2;
System.out.println("int类型更改后:"+i);
}
public static void test(Integer i){
i=3;
System.out.println("Integer类型更改后:"+i);
}
public static void test(String s){
s ="test";
System.out.println("String类型更改后:"+s);
}
public static void test(JSONObject e){
//没有改变原对象的
e.put("test",11);
System.out.println("JSONObject类型更改后:"+e);
}
public static void test(String[] s){
//重新生成了一个对象,原对象不受影响
s=new String[3];
s[0]="111";
for (String s1 : s) {
System.out.println("数组类型更改后:"+s1);
}
}
运行结果:
int类型更改后:2
原对象int:0
--------------------
Integer类型更改后:3
原对象Integer:null
--------------------
String类型更改后:test
原对象String:null
--------------------
数组类型更改后:111
数组类型更改后:null
数组类型更改后:null
原对象数组:null
原对象数组:null
--------------------
JSONObject类型更改后:{"test":11}
原对象JSONObject:{"test":11}