看过你对这道面试题的分析,我回去又好好看了下,从hardcode java这本书里面看到final关键字;
如果给change函数的形式参数列表都加上final关键字修饰,将解决所有问题,也就是:- public void change(final String str,final char ch[])
复制代码 根据final特性,引用本身不能变,但是引用指向的对象是可变的;打个比方说,
小明和她女朋友结婚了,那么这辈子他只能是跟着他女朋友一起白头到老,也就是他只能有他女朋友这么一个了,在也不能换了。
而对于他女朋友来说,他女朋友可以变漂亮,可以变苗条;
小明就是那个引用,而他女朋友就是指向的那个对象;
因此在change方法中要改变str和ch,只能是用this改变成员变量了,而不是传递进来的形式参数;
感觉你想问题比我们都深入,欢迎批评指正。。。 |