又忘了,引用型参数的值改变会不会影响实参? 引用型形参的改变会不会影响原来实参的值??String类型除外。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 java全是值传递你传一个引用,引用本身是不会改变的 hashcode()不会改变,对象中的内容会不会改变呢?试试吧public class TestHashCode { public static void main(String[] args) { Reference reference = new Reference(); System.out.println("Reference = " + reference); System.out.println("Reference.hashcode = " + reference.hashCode()); System.out.println("Reference.i = " + reference.i); testIsChange(reference); System.out.println("Reference = " + reference); System.out.println("Reference.hashcode = " + reference.hashCode()); System.out.println("Reference.i = " + reference.i); } public static void testIsChange (Reference reference){ reference.i = 1; } }class Reference{ int i = 0;}/* Reference = Reference@6b97fdReference.hashcode = 7051261Reference.i = 0Reference = Reference@6b97fdReference.hashcode = 7051261Reference.i = 1*/ http://p-x1984.iteye.com/blog/380981 不用String除外,Java中任何类型,改变形参对外面都没有影响。当然,分不清引用和对象的可能会有其他结论。 不懂java ,,貌似上面一群人都没说对 Reference reference = new Reference();肯定是传递类似于指针的东西,在方法里改变其值 出了方法后 值还是被改变的如果你传递的是值类型的话,是要在方法里复制一个一样的对象,诸如int double之类的类型。当方法结束后,这个对象也就消失了,所以改变是不受影响的! Java和c的传参模型是一样的。楼主说的是改变形参void func(Reference ref){}什么叫改变形参? ref = …… 改变形参的指向,不影响方法外的实参A a = aaa;change(a);void change(A a) { a = bbb; //这样叫改变形参的指向}改变形参的属性,影响方法外的实参A a = aaa;a.b = bbb;change(a);void change(A a) { a.b = ccc; //这样叫改变形参的属性,直接改变或者通过方法改变是一样的} java线程互斥问题 我做了个BBS,高手过来指点指点~~ JDK出现这样问题?求助。。 JCreator问题 hashtable问题 请问如何在不使用java.util包的情况下使用链表实现任意长整数的加减运算? 请假各位前辈,啥是线程安全? 帮忙,HELP! sos 刚学JAVA的>在线等待 split和contains在jdk1.4有什么方法可用? 给byte[]数组赋值方法,比如把000000001赋值给一个byte[]数组
你传一个引用,引用本身是不会改变的 hashcode()不会改变,对象中的内容会不会改变呢?试试吧
public class TestHashCode {
public static void main(String[] args) {
Reference reference = new Reference();
System.out.println("Reference = " + reference);
System.out.println("Reference.hashcode = " + reference.hashCode());
System.out.println("Reference.i = " + reference.i);
testIsChange(reference);
System.out.println("Reference = " + reference);
System.out.println("Reference.hashcode = " + reference.hashCode());
System.out.println("Reference.i = " + reference.i);
}
public static void testIsChange (Reference reference){
reference.i = 1;
}
}class Reference{
int i = 0;
}
/*
Reference = Reference@6b97fd
Reference.hashcode = 7051261
Reference.i = 0
Reference = Reference@6b97fd
Reference.hashcode = 7051261
Reference.i = 1
*/
Reference reference = new Reference();
肯定是传递类似于指针的东西,在方法里改变其值 出了方法后 值还是被改变的
如果你传递的是值类型的话,是要在方法里复制一个一样的对象,诸如int double之类的类型。
当方法结束后,这个对象也就消失了,所以改变是不受影响的!
void func(Reference ref){}
什么叫改变形参? ref = ……
A a = aaa;
change(a);void change(A a) {
a = bbb; //这样叫改变形参的指向
}改变形参的属性,影响方法外的实参
A a = aaa;
a.b = bbb;
change(a);void change(A a) {
a.b = ccc; //这样叫改变形参的属性,直接改变或者通过方法改变是一样的
}