对 java里只有值传递
----------------解决方案--------------------------------------------------------
以下是引用NiceGirl在2006-8-2 18:02:21的发言:
第二次输出的不一样啊
v1.i=10, v2.i=30
还是等于30啊
第二次输出的不一样啊
v1.i=10, v2.i=30
还是等于30啊
你运行了吗???
我试过了 书上也是这么写的 两个值是一样的
----------------解决方案--------------------------------------------------------
我当然运行了,你书上和你写的是错的,你叫别人运行试试
----------------解决方案--------------------------------------------------------
不是吧 书是THINK IN JAVA啊 还有这程序我都运行好几次了啊
实在抱歉,刚刚是我的帖子没发好 中间少了一句最重要的( v1 = v2 ) 抱歉
[此贴子已经被作者于2006-8-2 19:59:47编辑过]
----------------解决方案--------------------------------------------------------
肯定是你那运行错了 我又运行两次 一次用工具 一次在CMD下 都是这个结果
实在抱歉,刚刚是我的帖子没发好 中间少了一句最重要的( v1 = v2 ) 抱歉
现以补上 请再看下
[此贴子已经被作者于2006-8-2 20:00:18编辑过]
----------------解决方案--------------------------------------------------------
不好意思 刚刚的程序发错了 我已经改过 请再看看
----------------解决方案--------------------------------------------------------
以下是引用wxhwjsw在2006-8-2 19:54:20的发言:
肯定是你那运行错了 我又运行两次 一次用工具 一次在CMD下 都是这个结果
肯定是你那运行错了 我又运行两次 一次用工具 一次在CMD下 都是这个结果
自己看,程序完全是复制你的,在JCreator中运行的结果
----------------解决方案--------------------------------------------------------
LZ回帖真快 看来是没有看到我改动后的帖子了 ......
再次道歉 程序刚刚是我没有写好 少了一句关键的句子 现已改正 请再花点时间看一下
----------------解决方案--------------------------------------------------------
class Number {
int i;
}
public class Value {
public static void main( String args[] ) {
Number v1 = new Number();
Number v2 = new Number();
v1.i = 20; //这里的v1和下面的v2是两个对象,拥有不同的地址,存储不同的值
v2.i = 30;
System.out.println( "v1.i:" + v1.i + "\t" + "v2.i:" + v2.i );
v1 = v2; //这里使v1指向v2这个对象的引用,也就是把v2这个对象的地址的值赋给了v1,这时v1,v2指向同一个地址
v1.i = 10; //改变这个内存地址所存储的值,因为v1,v2指向同一地址,所以打印出来的值相等
System.out.println( "v1.i:" + v1.i + "\t" + "v2.i:" + v2.i );
}
}
----------------解决方案--------------------------------------------------------
哦 这么一说感觉就开了 谢谢
----------------解决方案--------------------------------------------------------