关于经典面试的问题,如何解决?其原理?

img


第一次估计是静态方法的原因。去掉静态方法

img


结果还是不变;主要是有点无法理解

这个跟静态没有关系,这个考的是参数传递,引用类型的传递。刚好之前有人问了和你一样的问题,我画了些图,你可以看下。

img

img

img

方法中定义的参数是基本类型 则方法接收的是基本类型的值。如果时引用类型,则接收的时地址引用值。
注意一点 定义的change方法中的 str1 跟传入的str1 并不是一个对象,只不过它们指向同一个地址值
str2 = str1 这里是将方法中str2指向的地址值修改为指向传入str1的地址。 str1 = new StringBuffer("xxxxx"); 这个意思是将传入的地址值丢弃,重新new一个地址值给str1。 所以你的执行结果是这个样子。