一个关于赋值的问题

zsjin0208 2005-09-11 07:49:42
class Ben{
char c;
}
class Bena{
static void f(ben y){
y.c='a';
}
public static void main(String[]args){
ben x=new ben();
x.c='z';
f(x);
System.out.println(x.c);
}

}
结果是a为什么不是z?f(x)应该是把x的值赋给y,对象x的值应该是是不变的啊,可是为什么这是错的呢?
...全文
53 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsjin0208 2005-09-11
  • 打赏
  • 举报
回复
非常感谢各位
zsjin0208 2005-09-11
  • 打赏
  • 举报
回复
是不是这样子的,在y.c=x.c的时候,x.c是不连带z的,所以它也没有改写y.c的值,而是它自己也指向了y.c的值。(更正一个错误,ben应全部为Ben,我在复制上来的时候弄错了)
lqql 2005-09-11
  • 打赏
  • 举报
回复
应该是a啊!
congliu 2005-09-11
  • 打赏
  • 举报
回复
当然是a
从object继承的对象(即是除了int,float等基本类型外),都是引用调用的,不是按值调用
zdnetchina 2005-09-11
  • 打赏
  • 举报
回复
看看static这里

static void f(ben y){
y.c='a';
}
奇伢 2005-09-11
  • 打赏
  • 举报
回复
void f(ben y)
如果传递的参数是固定类型的话会被复制一份,但是如果是对象则是传递的是个引用。
就是上面x.c在x.c='z',这时候是z的,但是后来引用被传递到方法里有改写了,所以是啊。

62,614

社区成员

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

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