java中方法调用方法本身不理解

冬天的风好冷 2016-10-03 12:18:58
public class ThisDemo {
int number;
ThisDemo increment(){
number++;
return this;
}
private void print(){
System.out.println("number="+number);
}
public static void main(String[] args) {
ThisDemo tt=new ThisDemo();
tt.increment().increment().increment().print();
}
}

源码中的 ThisDemo increment()方法是什么类型的,类方法吗?主要用在那些方面?和thisDemo类中的普通方法如print()有什么区别?
这个ThisDemo increment()为什么可以不断的调用自身?

...全文
750 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hehamfll 2016-10-06
  • 打赏
  • 举报
回复
我也是刚学没几天,知道递归算法就是调用自己,但是一定要有个条件可以结束递归,不然就死循环了
浪迹天涯-Jason 2016-10-06
  • 打赏
  • 举报
回复
我画了一张内存图解附上代码,你看看能看懂吗?
1.其实这就是this关键字的问题,返回的都是一个地址值,不管你这样调取多少次,地址都不变,因为返回的是this。
2.这个有点像递归,但是不是递归。递归是方法名();

浪迹天涯-Jason 2016-10-06
  • 打赏
  • 举报
回复
我画了一张内存图解附上代码,你看看能看懂吗? 其实这就是this关键字的问题,返回的都是一个地址值,不管你这样调取多少次,地址都不变,因为返回的是this。
AAlAAzCCj 2016-10-05
  • 打赏
  • 举报
回复
return this;就是返回当前对象,就是现在调用这个方法的这个对象,明白了吗?
AAlAAzCCj 2016-10-05
  • 打赏
  • 举报
回复
既然他返回的是调用他的当前对象,那就一定可以再次调用这个方法啊
AAlAAzCCj 2016-10-05
  • 打赏
  • 举报
回复
就是算法上说的递归了,一定要控制递归结束的条件,否则递归就不会结束,递归就相当于循环,两个对比理解一下。
捏造的信仰 2016-10-04
  • 打赏
  • 举报
回复
楼主要学会贴代码
public class Demo {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("no args.");
        }
    }
}
像楼主的代码层级多,又没有排版,没法看。
网络咖啡 2016-10-04
  • 打赏
  • 举报
回复
tt.increment()的类型就是方法increment的返回值类型
小灯光环 2016-10-03
  • 打赏
  • 举报
回复
ThisDemo increment()方法是 default类型,返回值为ThisDemo~ 和print方法的区别就是: 1.print方法是 private类型(私有的),而increment()是 default类型(默认的) 2.print方法无返回值(void),而increment方法返回值是ThisDemo 对象 能链式调用是因为increment()的返回值是ThisDemo~ 所以可以

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧