| 本帖最后由 刘敏 于 2013-11-29 19:26 编辑 
 public class StringTest2 {
 
 public static void main(String[] args) {
 
 String s1="hello"; //常量数据区,不可修改
 String s2="java"; //常量数据区 ,不可修改
 
 test(s1,s2); //把两个引用传入,完全不能修改"hello", "java"
 
 System.out.println(s1+s2);
 }
 
 private static void test(String s1, String s2) {  //这个函数根本无法修改main() 中的s1,s2
 s2.replace('a', 'o');   //会在堆上创建一个新的对象。
 s1=s2;
 }
 
 }
 要实现你的功能,可以这样:
 
 复制代码class StringTest2 {
        public static void main(String[] args) {
                String s1="hello";
                String s2="java";
                s1 = test(s1,s2);  //把修改后的新内存引用给s1
                System.out.println(s1+s2); //这里把修改后堆上的s1和常量区的"java"组合
        }
        private static String test(String s1, String s2) {
                return s2.replace('a', 'o');
        }
}
 
 |