java中如果对象是函数参数 到底是传值还是引用??? java中对象都是按引用传递的! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 d和day怎么不在同一地址了?d只不过是day在函数中的别名,指向的是同一地址。 是一个意思,对基本数据类型来说是传值change()返回后num的值不变,对对象d来说传的是对象引用(指针)的地址,函数返回后d指向的对象不变,例如你在函数内d=new Date(),返回后d并未指向新对象(引用没变),但对象成员可以改变。 可是在Core java I中 说是传值的 而且"在一个方法中 不会改变参数的值"且 比如 Date d1 = new Date( 12, 1, 2001 );Date d2 = new Date( 12, 1, 2002 );...static void swap( Date d1, Data d2 );{Date temp = d1;d1 = d2;d2 = temp;}那么Class.swap( d1, d2 ) 不起作用 这是为什么? 是不起作用,其实把引用当指针来想就清楚了比如d1指向对象的地址为1111,d2地址为2222,在函数中地址的值交换为d1->2222,d2->1111,但返回后"在一个方法中 不会改变参数的值",所以d1又变回1111,d2变回2222,这样的话他们又指向原来的对象,所以d1/d2交换未成功。 heifei()多谢你的回答 马上结贴也就是说在swap的内部 d1和d2 确实已经交换过了 只不过在返回时又变了回来?这么设计是为什么呢? 在static void swap( Date d1, Data d2 )中d1与d2只是新的变量,它们引用的是在上面定义的d1与d2的值,此d1,d2非彼d1,d2就象有全局变量,但有子程序中有定义了重名的局部变量! java SE中main函数能否递归调用? 类加载器的问题,一小段代码,说找不到类。Eclipse一个class文件只能建一个类吗? Hibernate get()方法也会出现懒加载异常吗? 各位大哥帮个忙? java类库手册有完整版的吗 急!java有没有?加一个东东. 救急>>> JTable的问题 解决就给分结帖 Java GUI 请问andriod做了一个实时的对讲系统 如何消除回音 jbuilder6如何连接数据库? java高手看过来!!!!!!!!!!! 关于画图的问题(线条和字符串),谢谢!
d只不过是day在函数中的别名,指向的是同一地址。
对对象d来说传的是对象引用(指针)的地址,函数返回后d指向的对象不变,
例如你在函数内d=new Date(),返回后d并未指向新对象(引用没变),但对象成员可以改变。
且 比如
Date d1 = new Date( 12, 1, 2001 );
Date d2 = new Date( 12, 1, 2002 );
...
static void swap( Date d1, Data d2 );
{
Date temp = d1;
d1 = d2;
d2 = temp;
}
那么Class.swap( d1, d2 ) 不起作用 这是为什么?
比如d1指向对象的地址为1111,d2地址为2222,在函数中地址的值交换为d1->2222,d2->1111,但返回后"在一个方法中 不会改变参数的值",所以d1又变回1111,d2变回2222,这样的话他们又指向原来的对象,所以d1/d2交换未成功。
也就是说在swap的内部 d1和d2 确实已经交换过了 只不过在返回时又变了回来?
这么设计是为什么呢?
static void swap( Date d1, Data d2 )中
d1与d2只是新的变量,它们引用的是在上面定义的d1与d2的值,
此d1,d2非彼d1,d2就象有全局变量,但有子程序中有定义了重名的局部变量!