public class Leaf {
    private int i = 0;
   
    Leaf  increment() {
      i++;
     return this ;//this 在这里是什么意思,如果将this替换成this.increment()
                  //运行就会抛出异常,如果替换成new Leaf(),则最后打印出来的i还是为0
                 //这是什么原因,另外象这种 Leaf  increment() 方法表示什么含义,与一般
                //方法有什么区别,谢谢解答
    }
    void print() {
      System.out.println("i = " + i);
    }
    public static void main(String[] args) {
      Leaf x = new Leaf();
      x.increment().increment().increment().print();
    }
  } ///

解决方案 »

  1.   

    你用new Leaf()
    因为默认构造是i=0;
      

  2.   

    Leaf  increment() 跟一般方法没区别啊,就是返回Leaf
      

  3.   

    如果将this替换成this.increment() 
    -- 那就成了死循环了,最终会因为超过int的最大值而抛出异常;
    如果替换成new Leaf()
    --不过是创建了另外一个实例,初始值当然为0
    ------------
    this  指的就是对当前对象的引用,你可以结合super理解下
      

  4.   

    Leaf  increment() 跟一般方法没什么区别呀.就是返回的类型为Leaf的 !
      

  5.   

    没区别,之所以返回 this ,只是想让代码 很好的 串接在一起,
    new Leaf().increment().increment().increment().increment();看上去要比 
    Leaf l = new Leaf();
    l.increment();
    .increment();
    .increment();
    .increment(); 
    看起来简洁。
      

  6.   

    this  指的就是对当前对象的引用,其实它只在栈中建立了一个Leaf对象内存区。因此你三次都指向同一个对象。
    如果替换成new Leaf()--不过是创建了另外一个实例,初始值当然为0。public class Leaf {
        private int i = 0;
        //Leaf(){} //
        Leaf  increment() {
        
          i++;
          System.out.println(i); //在这里就可看出i有增加。
         //return this ;//this 在这里是什么意思,如果将this替换成this.increment()
         return new Leaf();             //运行就会抛出异常,如果替换成new Leaf(),则最后打印出来的i还是为0
                     //这是什么原因,另外象这种 Leaf  increment() 方法表示什么含义,与一般
                    //方法有什么区别,谢谢解答
        }
        void print() {
          System.out.println("i = " + i);
        }
        public static void main(String[] args) {
          Leaf x = new Leaf();
          x.increment().increment().increment().print();
        }
      } ///
      

  7.   

    这个以前也是半懂,现在看了大家的解释,懂了,谢谢大家 :)
    this就是当前所在类,即public class Leaf中的Leaf,就是class Leaf的一个reference
      

  8.   

    如果将this替换成this.increment() 
    -- 那就成了死循环了,最终会因为超过int的最大值而抛出异常;
    如果替换成new Leaf()
    --不过是创建了另外一个实例,初始值当然为0
    ------------
    this  指的就是对当前对象的引用,你可以结合super理解下
      

  9.   

    欢迎加入J2EEQQ群14672911.你会学到更多东西.
      

  10.   

    第一:当你创建了一个Leaf对象后调用了Leaf increment() 方法,this指的就是调用方法的对象
    这里的意思也就是让这个对象的i增加1后再返回这个对象的引用;
    第二:你改为new Leaf()后,每次调用increment() 方法都返回了一个新的对象引用,而它的i初始   值就是0的;所以最后结果是0。
      

  11.   

    与别的方法没有什么区别,就是返回了一个Leaf的引用
    不知道我的解答有没有问题,楼主你自己考虑吧,呵呵
      

  12.   

    与别的方法没有什么区别,就是返回了一个Leaf的引用
    不知道我的解答有没有问题,楼主你自己考虑吧,呵呵