String在java中不是基本数据类型,而是以类变量存在。
String s = "hello"; 这句话是什么意思?创建了一个hello的String类型的变量吗?
No......
这里是声明了一个String类型对象的引用(C里面称之为指针)s,它可以指向任何String类型的对象,目前指向hello这个String类型的对象。我们并没有声明一个String类型的对象,而是声明了一个只能指向String对象的引用的变量。所以如果 String str = s ;并没有声明第二个对象,str还是指向原来那个对象,也就是说,和s指向的是同一个对象。这就是发生的事情,对于初学者要格外注意。