A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© IT初学者 中级黑马   /  2014-9-3 22:32  /  1055 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看看了毕老师讲字符串。有个问题,字符串是常量这个我懂,可是老师不是说了,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.         }
复制代码

5 个回复

倒序浏览
代码的结果还是 java.......hello
回复 使用道具 举报
java只有值传递,引用类型参数,传的是引用的copy,指向同一个对象。方法内s1=s2,改变的是copy指引的指向,方法结束就销毁了。
回复 使用道具 举报
传的还是引用啊。只是main方法里的s1和自定义方法中形参s1指向了同一个地址,s2也一样的道理。在自定义方法里的s1和s2再怎么变化,也和main方法中的s1和s2无关啊。这样说能明白否?
回复 使用道具 举报
新新人类嘿嘿嘿 发表于 2014-9-4 16:12
传的还是引用啊。只是main方法里的s1和自定义方法中形参s1指向了同一个地址,s2也一样的道理。在自定义方法 ...

嗯,对啊。钻牛角尖了,总以为传引用,那么在操作时,原来的会跟着变,受数组的传引用影响太深了,谢谢了!
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马