public class demo{
public static void modify(String str) {
// TODO 自动生成的方法存根
str=str+"fly";
}
public static void main(String[] arg) {
String str=new String("bird");
modify(str);
System.out.println(str);
System.out.println("ewr"+"ewrf");
}
}
第一行的输出结果仍然是bird。
String 类final修饰只能重新引用 不能进行修改
public static String modify(String str) {
// TODO 自动生成的方法存根
return str+"fly";
}
public static void main(String[] arg) {
String str=new String("bird");
str = modify(str);
System.out.println(str);
System.out.println("ewr"+"ewrf");
}
String的值是不可变的,导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间,所以,modify方法肯定是执行了。
如果将String 改为StringBuffer,就可以打印出你所需要的值。
public static void modify(StringBuffer str) {
str.append("fly") ;
}
public static void main(String[] arg) {
StringBuffer str = new StringBuffer("bird");
modify(str);
System.out.println(str);
System.out.println("ewr"+"ewrf");
}
然后,具体看一下String 和StringBuffer的区别。
在不考虑的情况下,使用StringBuilder,考虑线程安全时建议用StringBuffer