public class date312 {                               
private int day;                          
private int month;                       
private int year;                         
date312(int day,int month,int year){         
        setDate(day,month,year);
        printDate(this);
        }
        private void setDate(int day, int month, int year) {      
this.day = day;                                 
this.month = month;
this.year = year;
}
private void printDate(date312 d) {                     
System.out.println("today is" + d.year + "year" + d.month + "month" +d.day+ "day"); 
}
public static void main(String args[]){              
date312 date=new date312(31,3,2005);               
}
}  我理解的执行过程:1、创建了类date312的对象date,并赋初始值31,3,2005
2、执行date312的构造函数---调用setDate方法
3、将初值传送给day,month,year,在setDate方法中,将day,month,year的值赋给对象date的私有实例变量day,month,year
4、调用printDate方法,将对象date的值传送到类date312的对象d
5、输出对象d的day,month,year的值。
这样理解可以吗有什么要注意的地方吗。。请多指教啊。

解决方案 »

  1.   

    private void printDate() {                    
    System.out.println("today is" + this.year + "year" + this.month + "month" +this.day+ "day"); 

      

  2.   

    恩。。谢谢指导这是书上的一个例子,测试this的。。把对象实例作为自变量来传送的。
    this究竟有什么用途那????
      

  3.   

    在非静态方法中,实际上每个方法的第一个参数就是你的实例化对象,也就是this!
    比如:
        public void show(
    (这里有个隐含的参数会传进来,就是调用该方法的对象,
    这也就是为什么静态方法中不能用this的缘故,
    因为静态方法可以直接用类来调用,
    如果也用this的话,那这个对象是什么呢??)

    ,String str,boolean b){};
      

  4.   

    public class date312 {
    private int day;
    private int month;
    private int year; date312(int day, int month, int year) {
    setDate(day, month, year);
    printDate();
    } private void setDate(int day, int month, int year) {
    this.day = day;
    this.month = month;
    this.year = year;
    } private void printDate() {
    System.out.println("today is " + this.year + " year " + this.month + " month "
    + this.day + " day ");
    }
    public static void main(String args[]) {
    date312 date = new date312(31, 3, 2005);
    }
    }把小A的代码贴全。
      

  5.   

    printDate() 这里会默认调用this,隐式。 
      

  6.   


    也就是说   
    private void setDate(int day, int month, int year) { 
    this.day = day; 
    this.month = month; 
    this.year = year; 
    以上代码可改为
    date.day=day; date.month=month;date.year=year;
    因为this代表的是类date312创建的对象date,也可以代表类date312创建的任何对象
    但感觉这不是多此一举吗完全可以在方法内写明是哪个对象啊除非不知道传进来的是哪个对象。。才用this来指明传进来哪个对象就对哪个对象操作。。是吗???
      

  7.   

    private void setDate(int day, int month, int year) { 
    date.day = day; 
    date.month = month; 
    date.year = year;
    }
    你说这样改?
    你那个date是哪来的啊?
    在方法内你这么引用外面的date啊
      

  8.   

    不可以,不可以。
    默认传进来的引用是名叫this,不叫date.所以lz不能直接用date。
      

  9.   

    下面这样就可以了。public class date312 {                             
    private int day;                         
    private int month;                     
    private int year;                       
    date312(int day,int month,int year)
    {       
           setDate(this,day,month,year);
           printDate(this);
        }
         private void setDate( date312 data,int day, int month, int year) //要先声明date,才能使用。默认的叫this,不叫date.
         {     
          data.day = day;                               
          data.month = month;
          data.year = year;
        
         }
         private void printDate(date312 d) {                   
           System.out.println("today is" + d.year + "year" + d.month + "month" +d.day+ "day");
         }
         public static void main(String args[]){             
            date312 date=new date312(31,3,2005);             
         }
      

  10.   

    恩你说的对。。方法是不知道一定会有个date对象的。。如果没创建date对象就完了。。
    this是代表任何传递进来的对象的传进来对象date就代表date相当于对象引用变量啊对不对??
      

  11.   

    this本来就是为了方便在方法体内能定位到调用自己的那个对象而存在的,
    JVM已经帮我们做了,
    我们又何必自己传进去呢,
    而且反而会浪费栈调用该方法的临时空间!