一、String对象是不可变的,在JDK文档中,String类中每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以包含修改后的字符串内容,而最初的String对象则丝毫未动。 例如:
public class StringTest {
public static String upcase(String s){
return s.toUpperCase();
}
public static void main(String[] args) {
String q="howdy";
System.out.println("得到的q:::"+q);
String qq =upcase(q);
System.out.println("得到的qq:::"+qq);
System.out.println("再次输出q:::"+q);
}
}
得到的结果为:
得到的q:::howdy 得到的qq:::HOWDY 再次输出q:::howdy
当把P传给upcase()方法时,实际传递的是引用的一个拷贝,其实,每当把String对象作为方法的参数时,都会复制一份引用,而该引用所指的对象其实一直待在单一的物理位置上,从未动过。