帮帮看看这个字符串

gwgyk 2010-12-10 09:01:18
public class J_String
{
public static void mb_operate(String x, String y)
{
x.concat(y);
y = x;
}

public static void main(String args[])
{
String a = "A";
String b = "B";
mb_operate(a,b);
System.out.println(a + "." + b);
}
}
输出结果是什么??
(A)A.B (B)A.A (C)AB.AB (D)AB.B

字符串连接函数使用时只能是用实际字符串吗?用变量不行吗?
...全文
172 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
所以选A
  • 打赏
  • 举报
回复
我说说
字符串放在静态常量池中,a指向“A”,b指向“B”,执行mb_operate(a,b);后x,y复制了a,b的地址,此时x和a,b和y指向常量池中的同一个对象,String和别的不同,当执行里面的方法后,x.concat(y);
y = x;后x指向了另一个对象,y也指向了另一个对象,都为”AB只是指向了另外的一个对象,并不会改变a和b指向对象的值,这点和其他的引用类型是不同的。
numb09 2010-12-11
  • 打赏
  • 举报
回复
A. 传值的
genguyige 2010-12-11
  • 打赏
  • 举报
回复
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
「已注销」 2010-12-10
  • 打赏
  • 举报
回复
来扫盲了

Java里引用也是值,因此:

Java里只有值传递.
shaosijun2004 2010-12-10
  • 打赏
  • 举报
回复
A.B吧,所谓的参数其实是引用的副本
public static void mb_operate(String x, String y)
{
x.concat(y);
y = x;
}

里面做的事情 , 只是让副本指向了新的对象而已,改变的是副本
woowtaotao 2010-12-10
  • 打赏
  • 举报
回复
A 打印出来的还是原来的a,b
zhu6100441 2010-12-10
  • 打赏
  • 举报
回复
选择A。mb_operate方法的作用域只是在它本身的方法当中。在外面输出的a,b的值是不会变的。原因,mb_operate只是把值传进去了,并没把变量本身传进去。
mutoujuelian 2010-12-10
  • 打赏
  • 举报
回复
字符串传值,不传地址,所以选择A。String的Concat方法貌似也是new2个字符串,然后+在一起,所以等于是NEW了一个新的字符串对象了。貌似是这样的!
wuxiuxiang 2010-12-10
  • 打赏
  • 举报
回复
我选择d
liukelin 2010-12-10
  • 打赏
  • 举报
回复
这是引用传递,也就是地址传递, 我感觉是C
Jlins 2010-12-10
  • 打赏
  • 举报
回复
字符串值传值 不回传引用的
Jlins 2010-12-10
  • 打赏
  • 举报
回复
A 怎么可能是引用传递呢?[Quote=引用 1 楼 zhang4044 的回复:]

应该是c吧,这儿的a和b是引用传递!
[/Quote]
bin1023111022 2010-12-10
  • 打赏
  • 举报
回复
我感觉也选B
MichaelLiang1989 2010-12-10
  • 打赏
  • 举报
回复
这个当然是选项(A)啦,你想一下,你的mb_operate(String x,String y)调用完又没返回什么结果,不会影响到你的main方法里面的打印。也就是说,你的mb_operate(String x,String y)方法调了等于白调,要不要它打印的结果都一个样。
不可一世 2010-12-10
  • 打赏
  • 举报
回复
应该是c吧,这儿的a和b是引用传递!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧