首页 > 应用开发 > Java > 简单基础的一段java代码分析_飞小哥
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 void display() {
System.out.println
(day + " - " + month + " - " + year);
}
}
public class Test{
public static void main(String args[]){
Test test = new Test();
//栈空间分配局部变量test,指向了堆空间new出来的新对象
int date = 9;
//栈空间多了块内存,分配变量date,值为9
BirthDate d1= new BirthDate(7,7,1970);
//d1指向堆空间的BirthDate对象,调用BirthDate的构造方法,方法中有3个形参,形参等同于局部变量处理,形参接受实参的值,然后开始值传递d—>date,m—>month,y—>year,方法调用完毕,为方法分配的局部变量自动消失。如图。
BirthDate d2= new BirthDate(1,1,2000);
//同上
test.change1(date);
//引用名.方法名来调用test对象的方法change1,change1有局部变量i,Date值传递给i
test.change2(d1);
//分配一局部变量b,将d1的值传递给b,再new一新对象,方法调用完毕,b消失,新对象会被垃圾收集器回收(没有任何一个引用指向对象)
test.change3(d2);
//分配一局部变量b,b和d2指向同一对象,然后调用setDay方法,栈空间分配一变量,22传给对象的date值,方法调用结束,局部变量消失,引用消失。
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);
}
}
|
|
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30106286/viewspace-1413859/ ,如需转载,请注明出处,否则将追究法律责任。