黑马程序员技术交流社区

标题: 字符串的疑问 [打印本页]

作者: linuxpara910829    时间: 2015-2-24 01:07
标题: 字符串的疑问
package lingxingtest;
class  Test{
public static void main(String[] args) {
  String s1 = "java";
  String s2 = "hello";
//  s1=s2;//s2的引用赋给了s1,s1指向了s2的对象,所以输出的是s2的内容
//  System.out.println(s1+"...."+s2); //java....hello
  method_1(s1,s2);
  System.out.println(s1+"...."+s2); //java....hello
  
  StringBuilder s11 = new StringBuilder("java");
  StringBuilder s22 = new StringBuilder("hello");
  method_2(s11,s22);
  System.out.println(s11+"-----"+s22); //javahello-----hello
}
public static void method_1(String s1,String s2){
  s1.replace('a','k');//创建了字符串对象,但没有引用。
  s1 = s2;//同主函数的道理是一样的,为什么输出的s1还是Java?
}
public static void method_2(StringBuilder s1,StringBuilder s2){
  s1.append(s2);
  s1 = s2;
}
}


作者: sofeel    时间: 2015-2-24 05:21
确实如你所说,很奇特!
在主函数中,是两个实参的赋值;在函数中变成了两个形参的赋值动作。而平常我们不会注意到这一点,因为基本上都是用形参给函数中的局部变量或者成员变量赋值。

C:\\Users/lenovo/Desktop/黑马blog/形参相互赋值的问题.gif



作者: sofeel    时间: 2015-2-24 05:23
图片真不好传!

形参相互赋值的问题.gif (22.34 KB, 下载次数: 4)

形参相互赋值的问题.gif

作者: linuxpara910829    时间: 2015-2-24 17:22
谢谢楼上的   辛苦
作者: liaohongjie    时间: 2015-2-24 17:41
这个我还没注意呢!今天学习了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2