个人觉得这样的问题提就不该问,而应该在“n1.test(n)”那里打个断点,单步调试进入看看,不仅可以知道为啥是现在的输出,还能练一练debug的方法,对于一个程序员来说,不会debug简直不可想象。
test方法的返回值类型为空
这种问题都是初学者容易犯的错误 方法内改变引用的指向不影响方法外引用的指向 相当于 String n1 = “abc”; //这个代表方法外的n String n2 = n1; //这个代表方法内的n n2 = “efg”; //这个代表你方法内的n=this,此时你觉得n1会变为"efg"吗? 你要知道,方法外的n和方法内的n是不同方法栈的两个变量,也就是它们本身的内存地址不一样,只是参数传递的时候,把方法外的变量的内存信息拷贝给了方法内的变量。方法外的变量的内存如果保存了一个对象的地址,那么拷贝到方法内后方法内的变量的内存也保存的同一个对象的地址,这样修改方法内的变量的属性,同样也能影响方法外的变量(因为它们指向同一对象)。但是如果是改变方法内的变量的指向,也就是n=xxx用这样的赋值语句,那么它不再指向和方法外的变量的指向一样的对象(也就是方法内的变量指向了别的对象),那它和方法外的变量就不再有关系,所以不能影响方法外的变量。
62,621
社区成员
307,251
社区内容
加载中
试试用AI创作助手写篇文章吧