java简单问题,求详细答案如题

2024-12-04 05:11:13
推荐回答(1个)
回答1:

这道题是考java中的值传递和引用传递。首先呢,你必须理解这两个概念,什么是值传递,什么是引用传递。

值传递:在具体的实参传递到方法中定义的形参的时候,传递的是值的拷贝,也就是复制一份来的值,这样就有个两个值,在方法内部对参数进行处理的时候,实际上是处理的那个拷贝后的值,而原来的值更本没有改变,因此就不会动。


引用传递:在具体的实参传递到方法定义的形参的时候,传递的是引用的地址的拷贝,也就是对象在堆中的地址,这样的话指针指向实际对象的值是同一个,也就是你传递了引用,其实也就改变了对象本身。


ps:也有一种说法是引用传递也是值传递,其实是不同的说法,本质上都是一样的。

String和数组都是引用数据类型,因此属于引用传递。也就是说他们传递的过程会对值本身产生变化,但是那么问题来了?为什么string没有改变呢?你不是说String也是按引用传递的么?这就涉及到另一 个问题,因为String是final的,因此它的地址是无法改变的,也就是你new之后,再怎么传递,它的值均不会发生改变,那么地址也不会被传递,因此不会发生改变咯。