范例一
class Demo{ public int temp = 30; } public class T { public static void main(String[] args) { // TODO Auto-generated method stub Demo d1 = new Demo(); d1.temp = 50; System.out.println("fun()方法调用之前:"+d1.temp); fun(d1); System.out.println("fun()方法调用之后:"+d1.temp); } public static void fun(Demo d2){ d2.temp = 1000; } }
内存分析:
范例二
public class T { public static void main(String[] args) { // TODO Auto-generated method stub String str1 = "hello"; System.out.println("fun()方法调用之前:"+str1); fun(str1); System.out.println("fun()方法调用之前:"+str1); } public static void fun(String s2){ s2 = "MLDN"; } }
内存分析
范例三
class Demo{ String temp = "hello"; } public class T { public static void main(String[] args) { // TODO Auto-generated method stub Demo d1 = new Demo(); d1.temp = "world"; System.out.println("fun()方法调用之前:"+d1.temp); fun(d1); System.out.println("fun()方法调用之后:"+d1.temp); } public static void fun(Demo d2){ d2.temp = "MLDN"; } }
内存分析
本程序与范例一的流程完全是一样的,范例二是特殊的,因为String是一个特殊的类,其内容不可改变。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/14332.html