本帖最后由 刘敏 于 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');
- }
- }
复制代码
|