黑马程序员技术交流社区

标题: 疑惑 [打印本页]

作者: HM张勇    时间: 2013-4-2 18:28
标题: 疑惑
本帖最后由 HM张勇 于 2013-4-3 10:33 编辑

public class demoStirng
{
        public static void test(String str)
        {
            str = "A";

        }
        public static void main(String[] args)
        {
            String  s = new String("B");
            test(s);

  System.out.println(s);
}
}
打印的为什么是B而不是A?求详解


作者: 黄小贝    时间: 2013-4-2 18:32
这个问题好像有人反复问了很多次了,因为java传递的是引用的拷贝~



作者: 邵震    时间: 2013-4-2 18:34
本帖最后由 邵震 于 2013-4-2 18:37 编辑
  1. public class java0402d3
  2. {
  3.         public static void test(String str)//你这里返回值写的是void所以不对  我帮你改了一下
  4.         {
  5.             String a=str = "A";
  6.                         System.out.println(a);

  7.         }
  8.         public static void main(String[] args)
  9.         {
  10.             String  s = new String("B");
  11.             test(s);
  12.                 }
  13. }
复制代码

作者: С呲號→佔缐    时间: 2013-4-2 18:38
因为你NEW了
new 和不new是不一样的

作者: 黑马19我最牛    时间: 2013-4-2 18:42
这个肯定不可能打印A了,你没有调用test()那个方法,他是不会打印A的,你打印的是S,的值是你新建的String对象的那个B所指向的那个字母"B",因此只能打印B,如果想打印A那就要调用test()方法!
作者: kelline    时间: 2013-4-2 18:58
String s = new String("B");
            test(s);

  System.out.println(s);

你new出的对象 , 你打印的, 看到了没? 红色标记的 
作者: 贾振凯    时间: 2013-4-2 22:02

作者: 庞立森    时间: 2013-4-2 22:47
邵震 发表于 2013-4-2 18:34

你的问题其实很严重,你的 str=“A”  而你的主函数里面的String s =new String("B")
你在输出语句上面输出S当然是B 这和A有关系吗?一点关系没有啊,
你的test方法也写的有问题,你可以改成
public static void test()
{
      String str="A";
      System.out.print(str);
}
然后在主函数里面调用test()方法就可以打印出A了





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