关于java的
那一段代码是演示代码,没有什么意思,次要是演示变量的感化域的问题
bar办法中生成f变量,那是部分的,它的感化域只在bar办法中,生命周期是整个bar办法的运行时间,也就是说:在bar运行时,在整个bar办法中能够时用f变量,除此之外不克不及利用
doStuff办法有一个g参数,也是部分的,它的生命周期和f一样,也是doStuff函数中
但是因为java中对类实例的传递都是引用体例,因而:在进进 doStuff办法时,g变量引用了f变量的值,因而g。
setName("Boo");将修改在bar中定义的f变量的引用值,因而f变量的name属性会被修改为:Boo;
g = new Foo();修改了g的引用实例,但是它的感化域时doStuff办法,因而对变量f的引用没有影响
我建议你在
bar的语句doStuff(f);前后增加打印f的name属性语句,看看它的变革;
在g。
setName("Boo");前后增加打印f的name属性语句,看看它的变革;
在g = new Foo();前后增加打印f的name属性语句,看看它的变革;
你就大白了。
是函数参数传递,f是实参,g是形参,传递等价于f = new Foo();