ITPub博客

首页 > 应用开发 > Java > 简单基础的一段java代码分析_飞小哥

简单基础的一段java代码分析_飞小哥

原创 Java 作者:Three_Musketeers 时间:2015-01-25 11:55:46 0 删除 编辑

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-01-15

  • 博文量
    7
  • 访问量
    61437