黑马程序员技术交流社区
标题:
疑惑
[打印本页]
作者:
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 编辑
public class java0402d3
{
public static void test(String str)//你这里返回值写的是void所以不对 我帮你改了一下
{
String a=str = "A";
System.out.println(a);
}
public static void main(String[] args)
{
String s = new String("B");
test(s);
}
}
复制代码
作者:
С呲號→佔缐
时间:
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
1.PNG
(29.39 KB, 下载次数: 21)
下载附件
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