黑马程序员技术交流社区

标题: 关于字符串的一点问题 [打印本页]

作者: IT初学者    时间: 2014-9-3 22:32
标题: 关于字符串的一点问题
看看了毕老师讲字符串。有个问题,字符串是常量这个我懂,可是老师不是说了,String s1= “abc”,只是s1指向了字符串“abc”,那么如果将字符串作为方法的参数传递时,传的是什么?我认为应该是引用(而不是值),可是下面的代码却证明是传值。求大神解释下!
  1. public class Demo {

  2.        
  3.         public static void main(String[] args) {
  4.                 String s1 = "java";
  5.                 String s2 = "hello";
  6.                
  7.                 method_1(s1,s2);
  8.                 System.out.println(s1+"....."+s2);
  9. }
  10. public static void method_1(String s1, String s2)
  11.         {       
  12.         s1 = s2;                       
  13.         }
复制代码


作者: IT初学者    时间: 2014-9-3 22:33
代码的结果还是 java.......hello
作者: cs8630323    时间: 2014-9-4 15:49
java只有值传递,引用类型参数,传的是引用的copy,指向同一个对象。方法内s1=s2,改变的是copy指引的指向,方法结束就销毁了。
作者: 新新人类嘿嘿嘿    时间: 2014-9-4 16:12
传的还是引用啊。只是main方法里的s1和自定义方法中形参s1指向了同一个地址,s2也一样的道理。在自定义方法里的s1和s2再怎么变化,也和main方法中的s1和s2无关啊。这样说能明白否?
作者: IT初学者    时间: 2014-9-5 18:55
新新人类嘿嘿嘿 发表于 2014-9-4 16:12
传的还是引用啊。只是main方法里的s1和自定义方法中形参s1指向了同一个地址,s2也一样的道理。在自定义方法 ...

嗯,对啊。钻牛角尖了,总以为传引用,那么在操作时,原来的会跟着变,受数组的传引用影响太深了,谢谢了!
作者: 花花公子    时间: 2014-9-6 16:15
183461636@qq.com




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