public static void stringReplace(String text) {
text = text.replace('j', 'i');
}
public static void bufferReplace(StringBuffer text) {
text.append("C");
text = new StringBuffer("Hello");
text.append("World!");
}
public static void main(String args[]) {
String textString = new String("java");
StringBuffer textBuffer = new StringBuffer("java");
stringReplace(textString);
bufferReplace(textBuffer);
System.out.println(textString + textBuffer);
}
输出结果为javajavaC
总结,也就是说,在参数传递的时候,按值传递,传递的是变量本身,区别于引用传递,引用传递的是对象的地址。而Java中的变量不等于对象,这是必须要明白的,变量只是一个对象的引用标识,无论这个变量怎么改变都不会改变对象本身。
或者说,还有另外一种理解,对于变量,从内存上看,变量应该是存放在栈区中的,而对象是存放在堆区中的,变量对对象的引用,实际就是在栈区中存放着堆区中的地址,两个不相关的东西怎么都不会相互影响的。