1. Java的数据类型分为基本数据类型(byte、short、int、long、float、double)和引用数据类型(String、Integer、Long、List、Map、自己定义的类......)。对于基本数据类型和引用数据类型,Java都是使用了值传递。
2. 对于基本数据类型,就是将实参的值拷贝一份给形参;对于引用数据类型传递参数时,不是将引用所指的对象传递过去,而是将引用的值,即地址传递过去。
3. 对于String这种类型的参数,虽是引用类型,但是形参改变并不会影响实参的变化。因为在JVM中操作String类型的变量时,如果变量改变,JVM并不会改变变量所指内存地址中的数据,而是新开辟一块内存存储新的值,并将变量指向新的内存地址。
简单来说就是,String类型的对象,java实现的方式比较特殊。修改这种类型的变量,就是重新生成一个对象,并让变量指向新的地址,而不是去修改原地址中的对象。
网友评论