值传递.把一个基本数据类型的变量传递给一个方法后,这个方法内对这个变量的任何操作都不会影响方法外的这个变量.
引用传递.String是特殊的基本类型.所以虽然可以被new出来,但它在方法间使用传递时,可以把它当做是基本数据类型.
一个对象如果作为参数传递给一个方法后,实际上是把栈中的引用赋了过去,这就好比你创建了一个对象A,再声明一个对象B等于A,那么其实B拿到的就是A在栈中的引用,A和B对这个对象的任何操作,效果都是同样的.所以,方法内对非基本数据类型参数的使用,都是操作了该对象在栈中的引用,所以都会对方法外的那个参数造成影响;
但是,如果对方法内的参数重新赋值,使参数 a=new A();那么这时候参数a与方法外的参数a就没有了任何关系.所有的操作都不会影响方法外的那个参数.