帮我看看对象的引用这两段代码

a384311712 2013-01-23 08:46:12
package string;

public class yinyongto {
public static void main(String[] args) {
String str="hello";
fun(str);
System.out.println(str);
}
public static void fun(String temp)
{
temp="world";
}
}

结果是hello


下一段是
package string;
class demo
{
int x=10;
}
public class index {
public static void main(String[] args) {
demo d= new demo();
d.x=30;
fun(d);
System.out.println(d.x);
}
public static void fun(demo temp)
{
temp.x=100;
}

}
结果是30 我想说为什么上一个的结果不是world temp不能修改了内容断开连接么

...全文
184 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
BadPattern 2013-01-23
  • 打赏
  • 举报
回复
引用 6 楼 lyyslsw 的回复:
一楼正解,java里面所有东西都是可以看做对象的。而对对象的使用是通过引用的。这里的引用不同于c++ 的引用。有些类似于指针。
这点说的有误,java中基本类型是值语义,类类型只有引用语义,无法获取对象本身,所以不是所有东西都看做是对象。 C++中才可以把所有东西说是对象,effective C++中描述基本数据类型,引用类型,指针类型,包括对象本身都叫"对象",这是因为一切事物都有值语义,也都可以通过new 来创建引用语义。
Johnblx 2013-01-23
  • 打赏
  • 举报
回复
一楼正解,java里面所有东西都是可以看做对象的。而对对象的使用是通过引用的。这里的引用不同于c++ 的引用。有些类似于指针。
xulqif 2013-01-23
  • 打赏
  • 举报
回复
引用 2 楼 abc41106 的回复:
所以第二个结果应该是100,楼主怎么说是30呢?
这个正解
笑莫问 2013-01-23
  • 打赏
  • 举报
回复
引用 2 楼 abc41106 的回复:
所以第二个结果应该是100,楼主怎么说是30呢?
+1 第一个值传递,第二个引用传递。
BadPattern 2013-01-23
  • 打赏
  • 举报
回复
传递String的那个,在方法体中修改了引用的拷贝到另一个指向,原引用没有变化
abc41106 2013-01-23
  • 打赏
  • 举报
回复
所以第二个结果应该是100,楼主怎么说是30呢?
abc41106 2013-01-23
  • 打赏
  • 举报
回复
分清对象和对象引用的概念 1.对引用的操作 调用方法fun(str);时 str是实参,temp是形参,二者引用的是同一个String对象 对temp赋值,只是让它指向了其他对象,这不会影响str。 2.对所引用的对象的操作 调用方法fun(d);时 d是实参,temp是形参,二者引用的是同一个demo对象 所以temp.x就是d.x,改变temp.x就是改变了d.x
a384311712 2013-01-23
  • 打赏
  • 举报
回复
对第二个是100是我搞错了

62,615

社区成员

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

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