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