先通過5個案例打印:
<code>class ss{ public ss(){ //案例一 JSONObject j=new JSONObject(); j.put("s",1); f1(j); System.out.println(j); //案例二 ArrayList<integer> a=new ArrayList<>(); a.add(0,1); f2(a); System.out.println(a); //案例三 struct s=new struct(); s.a=1; f3(s); System.out.println(s.a); //案例四 Integer ss=1; f4(ss); System.out.println(ss); //案例五 String str="qwrqwre"; f5(str); System.out.println(str); } public void f4(Integer a){ a=Integer.valueOf(343); } public void f1(JSONObject j){ j.put("s",2); } public void f2(ArrayList a){ a.add(0,3); } public void f3(struct s){ s.a=33; } public void f5(String s){ s="改變"; }}/<integer>/<code>
分別輸出如下:
<code>{"s":2}/<code>
<code>[3, 1]/<code>
<code>33/<code>
<code>1/<code>
<code>qwrqwre/<code>
總結:
Java中,想class,array,hashMap,json在方法參數傳遞時,是按照變量指針傳遞,無論是方法內外對其值改變了,最終都會改變對象的屬性,但是Integer,Long,String這些卻不會。
閱讀更多 壞桃子 的文章