第二个bbb方法中
String str="st2";相当于是新的string和public String str = "st1";没有关系,然后他的生命周期也在这个方法里
所以调用aaa的时候用的是public String str = "st1"这个string,结果就是str2,str1
String str="st2";相当于是新的string和public String str = "st1";没有关系,然后他的生命周期也在这个方法里
所以调用aaa的时候用的是public String str = "st1"这个string,结果就是str2,str1
第一个为什么不起作用
第一个把String str="st2";这个作为参数传给了aaa这个方法,所以都是str2
也就是说
将 public void aaa(){
bbb();
}
public void bbb(){
system.out.println("123");
}成
public void aaa(){
sy
看stem.out.println("123");
}
是错误的,即一个方法A调用另外一个方法B,不能看成B方法的代码在A中运行?
这个我明白,但是第二个bbb方法在aaa方法内,没有用aaa的变量。 bbb在aaa方法内啊,不能用aaa的局部变量,所以我有些疑惑
这个我明白,但是第二个bbb方法在aaa方法内,没有用aaa的变量。 bbb在aaa方法内啊,不能用aaa的局部变量,所以我有些疑惑aaa在bbb方法内吧,你在bbb内声明了String str="st2";然后将str传递给aaa方法,结果当然是st2了
也就是说
将 public void aaa(){
bbb();
}
public void bbb(){
system.out.println("123");
}成
public void aaa(){
sy
看stem.out.println("123");
}
是错误的,即一个方法A调用另外一个方法B,不能看成B方法的代码在A中运行?A调用B,你可以理解为B的代码写进A里面了,调用过程看起来是这样的,但实际情况并非如此,一个方法调用,是将原方法上面压了一个新的方法调用,整个过程有自己的方法调用栈,变量什么的都是重新分配空间,不共享局部变量的。
第二个: 调用bbb方法,先打印一遍str="st2",然后在bbb中调用aaa方法,aaa方法没有参数,所以方法中str还是原来的,aaa中打印的 是str="st1"