String为引用类型,作为参数传递时却表现出“传值”特性
==========================范例分析======================================
public class Main {
public static void main(String[] args) {
final MyObject obj = new MyObjec("hello"); //String是final Object的一种
//final修饰符表明obj必须始终指向同一内存空间,但该内存空间的内容是可以修改的
change(obj);
System.out.println(obj.name); //输出"hello"
}
public void change(MyObject a) {
//应该注意到这里的a为局部变量,且没有final修饰符。
//它和main中的obj变量目前指向同一内存空间
a = new MyObject("world");
//该语句将其指向新的内存空间,因此接下去的操作不会影响原来的对象
}
}
class MyObject {
public String name = null;
public MyObject() {}
public MyObject(String name) {
public MyObject(String name) {
this.name = name;
}
}