expalin以下java程序的输出
请查看以下代码:expalin以下java程序的输出,java,parameter-passing,Java,Parameter Passing,请查看以下代码: public class SampleClass{ String name; public SampleClass(){ } public void setName(String s){ name = s; } public String getName() { return name; }
public class SampleClass{
String name;
public SampleClass(){
}
public void setName(String s){
name = s;
}
public String getName()
{
return name;
}
public static void main(String d[]){
PojoClass p = new PojoClass();
SampleClass s = new SampleClass();
s.setName("jack");
System.out.println(s.getName());
p.setSample(s);
System.out.println(p.getSample().getName());
s.setName("Fgk");
System.out.println(p.getSample().getName());
p.recMod(s);
System.out.println(p.getSample().getName());
p.changeVal(s);
System.out.println(p.getSample().getName());
}
}
class PojoClass{
SampleClass s;
public void setSample(SampleClass d){
s=d;
}
public SampleClass getSample()
{
return s;
}
public void recMod(SampleClass s){
SampleClass g = new SampleClass();
s=g;
//g.setName("FGH");
s.setName("hjk");
}
public void changeVal(SampleClass s){
s.setName("hjkjkl;k;k");
}
}
我正在尝试运行这段代码,但无法理解为什么在调用recMod()方法时将输出作为Fgk。
另外,如果我取消注释g.setName(“FGH”),那么输出也将保持不变。您正在将名称“hjk”分配给传递到recMod的SampleClass s
对象,该对象将隐藏类成员s
。将其更改为this.s=g
;您将改为设置类成员的名称