Topic: 关于传递的小问题 |
Print this page |
1.关于传递的小问题 | Copy to clipboard |
Posted by: luis_liu Posted on: 2004-12-28 20:10 class BirthDate { private int day; private int month; private int year; public BirthDate(int d,int m,int y){ day = d; month = m; year = y; } public void setDay(int d){ day = d; } public void setMonth(int m){ month = m; } public void setYear(int y){ year = y; } public int getDay(){ return day; } public int getMonth(){ return month; } public int getYear(){ return year; } public void display(){ System.out.println(day + " - " + month + " - " + year); } } public class Example{ public static void main(String args[]){ Example ex = new Example(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); ex.change1(date); ex.change2(d1); ex.change3(d2); System.out.println("date=" + date); d1.display(); d2.display(); } public void change1(int i){ i = 1234; } public void change2(BirthDate b){ b = new BirthDate(22,2,2004); ////////////////// } public void change3(BirthDate b){ b.setDay(22); } } /////////// /* 得到结果 date =9 7-7-1970 22-1-2000 复合类是可以引用的 b = new BirthDate(22,2,2004); 为什么没能改变其值 请赐教 */ |
2.Re:关于传递的小问题 [Re: luis_liu] | Copy to clipboard |
Posted by: fmiu Posted on: 2005-01-08 08:41 方法在传递参数的过程中, 如果参数是基本数据数据类型,在方法的内部将会创建它的一个副本; 如果是复合数据类型,在方法内部则会新建一个指向原复合数据所在内存单元的指针。 所以在{执行ex.change2(d1);时}&&{执行b=new BirthDate(22,2,2004); 之前}有两个指针d1和b同时指向对象实体BirthDate(7,7,1970);所在的内存单元。在执行b=new BirthDate(22,2,2004); 之后,b就指向了新的对象实体BirthDate(22,2,2004); 所在的内存单元,而d1没有变化。 因此,在输出d1所指的内容时,打印的是BirthDate(7,7,1970); 若在方法public void change2(BirthDate b)的尾部加入输出b的代码,则会打印BirthDate(22,2,2004); |
3.Re:关于传递的小问题 [Re: fmiu] | Copy to clipboard |
Posted by: luis_liu Posted on: 2005-01-12 15:49 谢谢!! JAVA的指针十在太难掌握了 |
4.Re:关于传递的小问题 [Re: luis_liu] | Copy to clipboard |
Posted by: chenyf Posted on: 2005-01-19 14:11 好像java中没有指针哦!:) |
5.Re:关于传递的小问题 [Re: luis_liu] | Copy to clipboard |
Posted by: luis_liu Posted on: 2005-01-23 23:22 应该说java是有指针的,只是java把它藏的很好罢了。 句柄就是指针吧 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |