java是通过值传递的,即值复制(方法使用参数通过值传递)
所以基本类型的值传递,不改变原值(即方法使用完出栈后原来的实参不改变原值)因为复制的值调用之后就会弹栈,局部变量随之消失
引用数据类型的值传递,改变原值(即方法出栈后对象会发生改变),因为复制的是指针,弹栈的是复制的指针,堆内存对象还在,可以通过指针继续访问
注意:String虽然是引用数据类型,但是值传递之后依然不改变原值
java是通过值传递的,即值复制(方法使用参数通过值传递)
所以基本类型的值传递,不改变原值(即方法使用完出栈后原来的实参不改变原值)因为复制的值调用之后就会弹栈,局部变量随之消失
引用数据类型的值传递,改变原值(即方法出栈后对象会发生改变),因为复制的是指针,弹栈的是复制的指针,堆内存对象还在,可以通过指针继续访问
注意:String虽然是引用数据类型,但是值传递之后依然不改变原值